Tuesday, 19 March 2013

Gameplay implementation progress

Here's what I managed or didn't manage to do before the presentation tomorrow.

Improved game loop

I've spent unreasonable amount of time on it and it doesn't have any immediately visible effect but I've changed all my objects to now be updated in the main game loop which is the proper way of doing this. Previously the creation, update and destruction of objects would take place in various more or less random places.

What this achieves mainly is that I now have full control on where and how the objects are created and updated. For example I can now use postUpdate() method to render stuff on the screen, which is visible as it gets rendered after everything else. This way I've managed to implement player name and health being displayed above the character and also a simple mouse feedback animation. 

Improved code should also make a further development easier.

Multiplayer

I've managed to setup multiplayer in the level! Upon joining the multiplayer game you'll now spawn randomly into one of the teams. It is also possible to spawn on the same team as the picture below illustrates one of the teammates being seriously threatened by the AI.

Two clients and a dedicated server running Campus: Deathmatch
Sadly multiplayer doesn't seem to work in our game mode as it just crashes, probably because deathmatch is not implemented in my code. Then even if it worked there would be a problem with setting the AI correctly - there's one "Players" AI faction but no way (at least not without some serious coding) to assign its members to different teams so they would either be hostile to both teams or to none.

Game Modes

Here's an idea. It is possible to have different game modes as you can specify which game.dll is used when launching the game. Given that our MOBA is more a proof-of-concept prototype rather than a game, but a the same time a lot of fun can be had in FPS mode on our map, we can submit two executables for different game modes, to actually have a fully playable multiplayer experience. This way instead of having a single barely finished product, we have two, which will also make our presentation easier as we can focus on the design of the map which can be played in two different ways.

AI Setup

I've setup all human AIs and for zombies it should be a simple matter of copy paste. For now there are two waves, one AI per lane spawnig in 5 seconds intervals. If the AI is killed it re-spawns after 15 seconds.

I've looked into setting up melee behavior, however it seems that it would require a lot of Lua scripting and either C++ or flowgraph implementation. This means for the presentation our AI will be rather dumb, but at least it follows the lanes obediently.

Other

Stuff to look at tomorrow, hopefully can be done quickly:
  • Set up Zombie AI
  • Check destroyable object and smart object classes to create a Nexus which should be destroyed as a game objective
  • Use biomas entity in the zombie base
  • Use some light effects for radiation, e.g. a barrel with glowing greenish light from inside
  • Try to register Player in AI system through Entity->RegisterInAISystem(AIObjectParams const& params);
  • Write a post on technical and gameplay features of the prototype

No comments:

Post a Comment