Jump to content

  • Log In with Google      Sign In   
  • Create Account





Initial Work on Attack and Defend...

Posted by BeerNutts, 21 July 2012 · 805 views

Well, I've started my next little game, currently called Attack and Defend. I plan on it being a single player or multiplayer game which is part League of Legends and part Tower Defense. I'm planning on using my Escape Entity System mentioned in my last entry.

Basically, 2 (or maybe more) player have bases at opposite ends of a map. They have a starting amount of money, and they can release their own "Soldiers" and build their own "Towers". Each Soldier and Tower (both of which will have multiple types) cost some money to create. You earn money by destroying your opponents players, and getting a certain income every so often. To win, kill your other players base.

Each soldier can go down one of the multiple paths between bases. There will be a fog-of-war detail so you can't see what the enemy is doing unless you have soldiers around the area.

Work Currently Done
So far I've got the main skeleton for the code down. The 1st pieces Iv'e done are create some components and an entity factory.

The Components planned right now are: Physics, Graphics, Animation (later), Collision, Health, Soldier, Tower, Base, Projectile, Camera, Input, EnemyAI, NetworkPlayer, and Death.

Here's my current Soldier Component:
class TSoldier : public Esc::TComponent
{
public:
    TSoldier(cpFloat damageRange, uint32_t damageValue,
			 uint32_t refireRate, std::string weapon,
			 uint32_t cost, uint32_t userId) :
    Esc::TComponent("Soldier"),
    DamageRange(damageRange),
    DamageValue(damageValue),
    RefireRate(refireRate),
    Weapon(weapon),
    Cost(cost),
    TargetEntity(NULL),
    UserId(userId) {}
    // Keep member public for easy consumption
    cpFloat DamageRange;
    uint32_t DamageValue;
    uint32_t RefireRate;
    std::string Weapon;
    uint32_t Cost;
    Esc::TEntityPtr TargetEntity;
    uint32_t UserId;
};

A typical Soldier entity will contain a Physics, Graphics, Health, and Soldier. When it comes in contact with something it's concerned with, a Collision component will be added (and removed when separated). You'll also have the ability to individually control a Soldier. this might be good for the more powerful soldiers, for the player to have detailed control over. Which brings me to...

The EntityFactory. This will create all the entities for the game. When it loads, it should read from some xml files that details the entities. For example, here my current Soldiers xml data file:
<?xml version="1.0" encoding="utf-8"?>
<!--
This file details the soldiers in Attack and Defend
-->
<Soldiers>
  <Footsoldier>
    <Image>Footsoldier.png</Image>
    <Velocity>40</Velocity>
    <Damage>10</Damage>
    <Refire>600</Refire>
    <Weapon>Sword.png</Weapon>
    <Health>50</Health>
    <Range>0</Range>
    <Cost>10</Cost>
  </Footsoldier>
  <Knight>
    <Image>Knight.png</Image>
    <Velocity>70</Velocity>
    <Damage>30</Damage>
    <Refire>800</Refire>
    <Weapon>Mace.png</Weapon>
    <Health>100</Health>
    <Range>0</Range>
    <Cost>30</Cost>
  </Knight>
  <Archer>
    <Image>Archer.png</Image>
    <Velocity>40</Velocity>
    <Damage>15</Damage>
    <Refire>700</Refire>
    <Weapon>Arrow.png</Weapon>
    <Health>40</Health>
    <Range>200</Range>
    <Cost>25</Cost>
  </Archer>
  <BlackWizard>
    <Image>BlackWizard.png</Image>
    <Velocity>40</Velocity>
    <Damage>30</Damage>
    <Refire>750</Refire>
    <Weapon>Fireball.png</Weapon>
    <Health>40</Health>
    <Range>250</Range>
    <Cost>50</Cost>
  </BlackWizard>
</Soldiers>

When the player creates a soldier, the entity factory will know what it's default values are.

That's basically where I am. I plan on working on some of the systems next time.




Looking forward to seeing some more progress on your project!!! I programmed a DOTA type game a few years back with C++ and Allegro 4. The A.I. was a lot of fun to program, and I must say I really enjoyed the experience!! :)

Keep us posted!!!

October 2014 »

S M T W T F S
   1234
567891011
12131415161718
19202122232425
2627282930 31  
PARTNERS