Saturday, 2 February 2013

Getting Started with Game Code

I've started looking at modifying the game engine to fit our needs and it's looking good so far. All of the game code is open for modification and anything starting from the basic Entity class, through per frame updates and up to the entire game logic can be changed.

The engine is written in C++ and uses all the familiar and brain-melting stuff like matrices, quaternions, Euler angles and vector algebra. On top of that Lua (which I'll have to learn) is used for exposing entities to the game.

Going by quality over quantity I'm going to start with the most essential features and implement them properly as a part of the engine (as opposed to flowgraph based workarounds) which should give us more flexibility and greatly improve performance (e.g. no more choppy movement, hopefully). Below is an updated list of programming tasks in a relative priority order.

Programming Tasks

  • Top-down, player independent camera controlled with mouse, i.e. moving mouse cursor to the edge of the screen moves the camera in this direction.
  • A player (non-AI) character controlled with mouse point and click.
  • A visual feedback for mouse clicks (movement and attack).
  • A Spawner entity which spawns minions at certain time interval.
  • Minions AI and pathing. Spawned minions go to opponents base and attack everything on their way.
  • Destroyable object for the base which can be attacked by mionions and players.
  • Game objective: destroying the above object ends the game (and results in an awesome cinematics!).
  • Player character auto-attack.
  • Turret objects which can be placed on the map, deal damage to the opposing team and can be destroyed.
  • Fog of war and team shared view of the map.
  • Player stats and experience system. Players will get experience by killing minions and other players and will be able to progress in levels gaining health/mana/damage output.
  • Inventory and shop. Players will gain currency together with experience and will be able to purchase items to keep in inventory, which will modify their stats. There may also be consumable items with an immediate effect upon use (e.g. restoring health).
  • Skill system. Players will have additional skills apart from the basic attack. The skills will have an icon on the HUD, a certain animation and an effect on the player or the opponent. Players will use the skills by pressing a button and pointing a mouse.
  • Additional map objects like neutral monsters/resources on the map, points of interest which when controlled give an advantage to the team and other things we come up with.

Progress

At the moment I'm just trying to find my way around the engine (which is huge!!1) and reading all the documentation. I'm also learning the basics of Lua as far as it's necessary. I've managed to create some basic Lua object, make it use C++ code from the engine and then import it into the game through the editor. So far so good.

I'm now going to look at the camera as I've found the relevant part in the game code. Will post updates as soon as I get something substantial.

No comments:

Post a Comment