• entry
1
• comment
1
• views
288

Concept of new RTS game

885 views

About month I'm working on prototype of real-time strategy game. I've started it for some game jam as a clone of classic RTS game (Age of Empires, Warcraft) and idea quickly transformed to something different.

Classical RTS games were developed when there were limitations of computer power. Additionally it's very hard to model the real war in all it's complexity and diversity. And also there is a question of scale. I.e. in Age of Empires you fight with states, but on map it's just a neighbor villages level.

Moreover classical RTS games lack of tactics. The problem was partially solved in Warhammer: Shadow of Horned Rat, Dark Omen and Total War games that grew from them. These games have introduced tactics but there were no base building and economy. Total War games got turn-based strategic map, and still Total war has very weak political/diplomatic system. Turn-based strategies (and of course it's started with Civilization) managed to model elements that RTS games lacked: trading, diplomacy, culture.

So, I want to make a "classic" RTS game with base-building, but fuse in it new elements: tactics, economy, trading, religion, innovations, culture, climate.

It's experimental project where I want to test how different things work together. I've started the it using Python and SDL2 for graphics. And if in next several months I'll get satisfactory results, I'll migrate to C++. It will be 2d and will have primitive graphics. I can't do good graphics and I want to make emphasis on mechanics.

1 Comment

Looking forward to seeing what you come up with, I always loved RTS games, so it would be nice to see a variation on the usual formula.

Create an account

Register a new account

• Similar Content

• A new entry in the devlog for 13 Ronin, a retro 2d samurai fighting game, this time it's about implementing the logic for the computer player.
Happy coding!

• Hey,
So I have got this asteroid type game and today I encountered a new issue while testing this game.
What happened was that two asteroids were close to each other and I shot a bullet at them. The asteroids were so close to each other that a single bullet could collide to both of them.
It collided and my game crashed there itself. I figured out it happened because two asteroids and one bullet collided in the same frame.
This is the code -
void Collision::DoCollisions(Game *game) const
{
for (ColliderList::const_iterator colliderAIt = colliders_.begin(), end = colliders_.end();
colliderAIt != end;
++colliderAIt)
{
ColliderList::const_iterator colliderBIt = colliderAIt;
for (++colliderBIt; colliderBIt != end; ++colliderBIt)
{
Collider *colliderA = *colliderAIt;
Collider *colliderB = *colliderBIt;
if (CollisionTest(colliderA, colliderB))
{
game->DoCollision(colliderA->entity, colliderB->entity);
}
}
}
}


void Game::DoCollision(GameEntity *a, GameEntity *b)
{
Ship *player = static_cast<Ship *>(a == player_ ? a : (b == player_ ? b : 0));
Bullet *bullet = static_cast<Bullet *>(IsBullet(a) ? a : (IsBullet(b) ? b : 0));
Asteroid *asteroid = static_cast<Asteroid *>(IsAsteroid(a) ? a : (IsAsteroid(b) ? b : 0));
Bullet *bulletMode = static_cast<Bullet *>(IsBulletMode(a) ? a : (IsBulletMode(b) ? b : 0));
if (player && asteroid)
{
player->playerCollided = true;
//AsteroidHit(asteroid);
//DeletePlayer();
}
if (bullet && asteroid)
{
collidedBullets.push_back(bullet);
collidedAsteroid.push_back(asteroid);
//AsteroidHit(asteroid);
//DeleteBullet();
}
if(bulletMode && asteroid)
{
collidedBulletMode.push_back(bulletMode);
collidedAsteroid.push_back(asteroid);
}
}


void Game::CollisionResponse()
{
if(player_->playerCollided == true)
{
DeletePlayer();
}
else
{
if(!collidedAsteroid.empty())
{
for(AsteroidList::const_iterator collidedAsteroidIt = collidedAsteroid.begin(), end = collidedAsteroid.end(); collidedAsteroidIt != end ; ++collidedAsteroidIt )
{
AsteroidHit(*collidedAsteroidIt);
}
collidedAsteroid.clear();
}

if(!collidedBullets.empty())
{
for (BulletList::const_iterator bulletIt = collidedBullets.begin(), end = collidedBullets.end() ; bulletIt!=end; ++bulletIt)
{
DeleteBullet(*bulletIt);
}

collidedBullets.clear();
}
if(!collidedBulletMode.empty())
{
for (BulletList::const_iterator bulletIt = collidedBulletMode.begin(), end = collidedBulletMode.end() ; bulletIt!=end; ++bulletIt)
{
DeleteBulletMode(*bulletIt);
}
collidedBulletMode.clear();
}
}
}

in my game->docollision() -
whenever an asteroid and a bullet used to collide, the collided objects get collected in collidedasteroids and collidedbullets respectively. When two asteroids collided with the same bullet, the two asteroids got collected safely in collidedAsteroid but the single bullet got collected in collidedBullets twice, so when the deletion was happening, the second time iteration of the bullet couldn't find the respective bullet and it got crashed.

How am I supposed to approach this problem now?

Thanks

• How to calculate angle between two points from a third point with the help of D3DXMATH library?
• By Tanzan
Hello  all,
I just finished my first Android game and published it on Google play...
I know its not the next red dead redemption2 but it would be nice to have some comments/feedback on it if its worth it to go on with a release 2.0. or move on to the next game? (red dead redemption 3  )
Anyway thx for your reading time and i hope on some nice reviews!
Regards,

Tanzan

• By qxsl2000
array of points(green dot) connected into a curve line,It was just nothing more than array of points arranged in order , order of insertion.
As shown in the above figure, my goal is for the player to start from "S" and choose a point that is closest to the player and is naturally reasonable(i mean i can't walk through the wall).
X by BWPlayer         X by BWPlayer           X by BWPlayer           X by BWPlayer             But because the shortest distance between the two points is W, it suddenly move through to the other side, which is definitely not what we want.actually what i desire is "N".