torsdag 23 januari 2020

GunzGame: Delaying

It might happen that I put this project on ice. If not, there will probably be major changes and simplifications to how this game is made. The main issue right now is that the playable character would need quite a bit of animations. I am not a fan of creating animations, and have little interest in learning that skill right now. So the options that remain are to either find someone to make the animations for me or make things simpler. For instance, instead of allowing swords, I could start by just letting the player have a gun. I found a free Unity asset that may be interesting, but it requires me to update my current Unity version. Sadly, my computer disk space has been full for a long time. Will probably need to free it up a bit...

onsdag 22 januari 2020

Gambling in Games

A lot of games feature some element of randomness combined with betting. Examples being poker, roulette, loot crates (CS:GO) etc. Not that I would call poker or roulette real games. Or well, maybe card games can be seen as games, but roulette is just like the lottery. I do like card games, perhaps there should be more of them easily available for multiplayer online. I guess I could make a website app via Unity pretty easily, but the server would need to be hosted somewhere. I guess I could host it on my Raspberry PI now that I think of it. Card games are mostly turn-based and people don't notice if turn-based games lag at all. Apparently you can get some good ideas while you are writing. On the flip side, it would not bring in any money, but it would be a merit to have people play my games.

Should there be more gambling involved in games? GTA V had an update where they added a casino. Early on after this update, a lot of cheaters gathered millions or billions of GTA money from the casino since it was not made securely. I am not sure if they completely fixed that, but shortly after they also started banning people who were cheating using the casino. At least people have claimed to be banned. Unless you are cheating, there is not really much of a reason to gamble in GTA since you will just end up loosing money. Gambling could be done if you play against other players.

måndag 20 januari 2020

Game Review: Arcanists

What was Arcanists?

Arcanists was a 2D game similar to Worms and published by Jagex for their website FunOrb.com. It had a strong community going, despite lack of updates. It was possible to buy so called FunOrb membership that accessed certain locked features in the game. This features most importantly gave players advantages via new spells. I did not get these upgrades as I didn't feel it was worth to spend money on a monthly subscription for a game where a lot of people hack or DDoS.

If you know nothing about it, you had a single player unit. You also had a spell book. The spell book could contain a finite number of spells. These spells were used to attack enemies in combat. The game was a turn-based player-vs-player battle royale. If you fail to terminate the enemies, most maps would start exploding.

What could you do in Arcanists?

You had a 2D character that you could customize cosmetically. There were unlockable achievements. You could gain rank or loose rank or play unranked games. Ranked games were for paying members only. You could create a room and invite friends to play the game with you, or just invite random people.

Why did people play Arcanists?

A majority of the players had in some form or another had also played RuneScape. RuneScape is a very boring game, as everyone who has tried it knows. So, we RuneScapers had to fill our time doing something else. One day RuneScape started making advertisements for their new game platform at FunOrb and I just had to try it. Maybe partially because it contained a substring of my RuneScape username, "zORByt".

There was a "community", scoundrels from all over the world wrote all sorts of extremely stupid and offensive things 24/7. If a moderator entered it only got worse, as the language used was simply adapted to avoid reasons to get banned. That said, most moderators were "silver" moderators, and these do not have any admin rights. Their only superpower is that if they report a player, that player is much more likely to get punished than if the report were from a normal player. This of course assumes that a rule was broken. Some of the posts, did have comedic value. It may have helped that no one liked moderators.

When it comes to gaming, the game had replayability. Not in the form of levelling up, but in forms of having fun and learning to become a better player at the game. If you played against a person that was apparently bad at the game compared to yourself, you could use that as an opportunity to try out new risky strategies. When you take the possible spells that you can have, the possible spells the opponent can have, the world map, the players position on the map you get a combinatorial explosion of different possibilities. Just like in chess, except that this game had action that everyone can appreciate. If you did not feel like experimenting with new strategies, you could goof around by summoning implings that could be supercharged by arcane spells. After being supercharged, these could be moved similarly to the player to anywhere on the map and create huuuge explosions.

Caffeine & Productivity

I believe that caffeine does not help me be a more productive programmer. 90% of the time I find it hard to keep focused coding if I have had 60+ mg of caffeine the same day. Contradictory, I do feel like I can understand or learn things better when having caffeine. To sum up from these thoughts I should not have coffee on days that I spend developing but have coffee if I try to learn something complicated. To be fair, I think I could do fine not having caffeine ever, which is also how I have spent most of my life. Unless if you count the small fragments of caffeine that exists in coke, then I have been a caffeine consumer longer. As for the game that I'm working on, I have made some progress. I think that I will need to focus on taking as many shortcuts as possible. If I don't take shortcuts the game will never be finished, and it's as simple as that. Todays work will be spent on working on the state-machine for player actions. After that is finished, some simple animations when moving will be necessary to convince anyone that there actually have been any progress made. Furthermore, attacks with swords or gun(s) will be made possible. This will be apparent from having gunshot marks where bullets land.

lördag 18 januari 2020

GunzGame: Refactoring

It is now possible to move a player unit around. It's also possible to jump by pressing space. As one might expect, having different types of actions resulted in many nested if-statements. Therefore, I decided to refactor the code, so it uses the state-pattern. Walking and standing still are handled in a common state class called WalkingState. The merge is mainly due to standing still not really being worth handling in a separate class. Jumping or just flying in the air is handled in a class called JumpState. All state classes inherit some common abstract methods from an interface called PlayerState. One of the existing downsides of using the state-pattern is that it naturally produces duplicate code, even though one could go through big efforts to minimize it. In my opinion, these efforts are not worth the time. One extra, invisible, downside with the state-pattern is that it hides something horrible... it hides... GOTO calls. Example; WalkingState calls GOTO JumpState and JumpState calls GOTO WalkingState given certain conditions. If you have too many states, these GOTO calls will cause spaghetti code. Hence, it is quite important to not use the state-pattern too much.

The state that I plan to add for this game are the following: WalkState, JumpState, SpecialMoveState1, SpecialMoveState2, SwordAttackState1, SwordAttackState2, DeadState. All states can produce a DeadState, which happen when the player runs out of HP. I should really add a class that holds all player parameters as a next step in my game development process. Now that I have started creating a state machine I may as well create all the states. SpecialMoveState1 will only be possible while holding a gun and SpecialMoveState2 only possible while holding a sword.

fredag 17 januari 2020

GunzGame: Getting Started

I have set up an environment in Unity for the game that I am trying to make. The first thing that I have achieved, besides duplicate code, is to add a movable player with an accompanying camera. The plan is to have a third person view system. I will probably change the way that the camera moves in the Y-position. You see, I am moving it right now based on the mouse position and the screen size, but it will behave more uniformly across different computers with different screen sizes if I only use a mouse accelerometer instead. Even though a project always has the highest production rate in the beginning, I feel like it is possible for me to create a fully working game in Unity if I just continue coding stuff. There are a lot of potential "next steps" towards finishing the project. I really do not want to get to the pure art area, so I will mainly try to make things work. Also, I am making use of free assets from the Unity Asset store as much as possible. There is quite a lot of useful stuff there, to say the least. I will also include two videos in this post, one "funny" and one serious. In the funny we see the player rotate when you move the mouse.



torsdag 16 januari 2020

Brainstorming

I would want to start out a game project using Unity, but there are some things I should figure out before I start. Similarly, for the same reason that you don't start building a house without planning. I am considering creating a player-vs-monster game, like GunZ. However, this would mainly be an offline game with the option to invite friends via LAN or port forwarding on a public IP. Luckily network is way easier to handle in C# than C++. Not that I have tons of experience with that. I suppose the first step to get a solid foundation for this game is to write down use-cases. These would be use-cases for human players by which the game should fulfill to be a proper game. Today I will probably do at least that, write down what possibilities the game should have. After that I could sketch up some UML-diagrams for the overall code design based on what the game design is to be. Making a 3D game in general requires some work. I believe the most boring part to me would be to design the game level worlds and unit visuals, not to mention the animations for all character movements. This can be done simple for starters, as they don't are necessary for the game to work in a logical sense. That said, it is highly desirable to have great art and great animations in a game that people will want to play.