Jump to content

[MAP] Working Title : Conquest and Empire


Recommended Posts

Sander’s suggestion of me making maps and letting the 0 AD forummers take charge of the triggers

If you are really a great map+triggers maker, you could propose some triggers to be implemented. You do the maps, we do the triggers ;)

It would give us a better overview of what's needed, and more reference implementations.

made me think deeply of how best to present a scenario that will cover every possible trigger that I usually use in designing scenarios and campaigns. Disclaimer: All of the trigger suggestions I present in this post can be done and implemented with the editor of Empire Earth, of which I have been “schooled”. In no way am I saying that EE is better than 0 AD. No, dear sirs. I'm attempting to at least make Atlas a tool that I can understand and use, without being a programmer myself, dim-witted that I am. :) I hope I made that very clear.

The campaign I’m about to describe takes part on the later years of Alexander’s life – the Battle of Hydaspes River, the fateful way home, his death and the rise of the Successors. Like my EE scenarios, it will take place into a fairly large map, to ensure the effects of player choices and the continuity of the branching storyline.

INTRODUCTION

After a short cinematic about Alexander and details of the events leading to the Battle of Hydaspes River, the Human player is given the option to choose between being an Infantry commander or a Cavalry commander. In 0 AD, I can see this as being done by forcing the player to choose between creating Cavalry or creating Infantry from the town center.

If the player chooses to create an Infantry Type, the life stories of all of Alexander's famous Infantry commanders will be unlocked. If the player chooses to create a Cavalry Type, the paths of the cavalry commanders will be yours to relive.

Once the choice is made (triggered to fire if the Player owns 1 unit), the Town Center becomes owned by the allied AI, and the only unit the player controls at this point is the first unit he created. (Creating a female villager unlocks the infantry stories). This initial unit would then act as the “scout” unit sent by Alexander, most probably for an errand prior to the battle. The player is then instructed to have this unit go back to Alexander and his army. Once this unit meets up with Alexander, PART 1 begins.

Part 1: River of Blood

Alexander’s army is controlled by an allied AI, the Indian army is controlled by the enemy AI. Each block of AI (or each major group) has an officer that lead’s that group. This means the AI needs to be passive for both armies to be seen in their historical battle formations.

Once the “scout” unit meets up with Alexander, the Human player gets to control either the infantry or the cavalry of Alexander’s army (depending on the previous choice). This put specific groups of existing units under the player’s ownership. Once the the condition “Player owns more than 2 units” fire, AIs become active and the Battle of Hydaspes River is played out.

(A more complex one is the ability to control how the AI’s army move in the battlefield – for example, the enemy right wing going from right to left, or the enemy archers specifically attacking Alexander, or any other trigger effect that controls each unit or group under the AI).

During the battle, specific gameplay features will be present:

1. Paid to Kill trigger – for every enemy unit the Human player kills, a random resource is given to him.

2. Veterancy – a unit with more kills get more experience

3. Morale – if an officer (either enemy or allied) is killed, a group previously tied up to that officer routs.

4. Ammunition and supply –units may from time to time lose their ability to attack and needs to come back to the rear to get more “ammunition” and supply and then go back to the battle afterwards.

5. Battle Points – the number of enemy units your units killed plus the number of veterans you owned minus the number of units you lost

The goal of the battle is not to completely annihilate the Indian army, but either or all of the conditions can be met to have the battle stopped and be victorious:

1. Wounded King Porus

2. All Indian cavalry is killed

3. All elephants and archers killed

After a short cinematic declaring the surrender of Porus, the remaining Indian army is integrated to Alexander’s army. The 2nd part begins.

Part 2: At World’s End

After the cinematic, a few citizens are spawned near the battlefield. It would be cool to have the citizens “gather” resources from fallen soldiers. After citizens are spawned, all your army and those of Alexander’s become owned by the allied AI. The player is then instructed to create at least 2 town centers and/ or reach the town phase. Here, Alexander’s army becomes sort of a garrison of the town, while you create your own army (not exceeding 75 units – for the moment to avoid lag). While gathering your own army, you get an optional quest of conquering the Indian town of Sangala. Alexander’s army is tired (and mutinous!). They will not help you. Sangala is moderately defended (with spawning enemy units inside the town, in intervals until the town center is destroyed).

Once Sangala is taken, the player is then presented with 2 choices: if you have unlocked the infantry side, Alexander and your men are forced to make your way back home. No questions asked. If you have unlocked the cavalry side, you get to at least try to reason with Alexander (this represents Coenus’ – a cavalry commander who is the hero of the Battle of Hydaspes - role in convincing Alexander to turn back). At this point, if Alexander’s army Battle Points is more than your own Battle Points, you can go and continue EASTWARD wherein you get to TRY and conquer the Indian subcontinent and the other empires present there.

Part 3: To The West

(If you unlocked the cavalry side and decided to go Eastward, this would not apply).

After the elapsing of say, 30 game minutes (for infantry side), or after conquering the Indian town and deciding to go back home (for cavalry side), the player's units become the allied AIs again. The player would, however, still control villagers. An instruction to build ship transports would become the next objective. After say 5 ships, Alexander and his men becomes yours to command again, but the rest of the AI within your surroundings become allied too, so you can't attack them. Your objective is to transport the army southwards and reach the Indian Ocean. Once you reach the population cap of around 150, all your buildings will be turned to allied and your villagers/ citizens will not be able to create buildings anymore. The journey back home begins.

indus_valley_map.gif

The journey south will not be an easy task. While you now control both Alexander's army and your own army, you have hostile native tribes to contend to. The player loses the game if his population drops to a certain level.

Decision-trees will also be present:

For the infantry side - after successfully taking the capital city of the Mallians, you can decide to make this area your base of operations. You will be asked to choose. If you choose, Alexander will take control of your existing army, and in turn, you will own all undamaged buildings and remaining Mallian units in the area + some of the mercenaries and Thracian units. Peithon, a phalanx battalion leader, together with Thracians were tasked and chose to live in this area historically. If you decide to do this, you'll relive this commander's later exploits.

For the cavalry side (or if you just choose not to remain in Malian territory) - you continue to go on, and conquer 2 to 3 more Indian towns. One, heavily fortified and a capital, opens its gate to you if you have superior numbers compared to that AIs garrison. If not, you need to capture it. You then need to create a presence (most probably build a fortress in the southern-most city). Once you create that, all of your units become Alexander's again. The next rebellion will be specifically for the infantry side.

(The infantry side) After a certain number of game minutes, you'll be given instructions to pacify the rebellion near your area. Alexander's army at this point is just allied with your enemies. Can we task units off-map (meaning they become invisible) and inaccessible, making them re-appear directly near the Indian Ocean afterwards?

Still on the infantry side, you need to conquer/ destroy all the enemy towns in the in the Indus Valley. After having destroyed or subdued the enemy towns, Part 4 will begin.

(The cavalry side) The decision is now to split the army into 3:

- 1 to be commanded by Alexander himself and will go to the Gedrosian desert

- 2 to be commanded by Craterus, which will go to the Mountains

- 3 to be commanded by Nearchus, which will build a naval base and refit the ships.

The player will choose either of the three, through either selecting units, or simple "Chat" triggered conditions.

Part 4 will then begin.

...Shall be continued. More cool parts in my head to come, just no time to type...

Edited by shieldwolf23
  • Like 2
  • Confused 1
Link to comment
Share on other sites

Ok, there are already some things I see that will be hard to do. We have no cinematics (that's something missing in general, not just for triggers), and triggers can't ask for special GUI windows (like the selection you propose).

The other things should be possible. Though may require some extra code to make them easier.

  • Like 3
Link to comment
Share on other sites

Yes, that sounds awesome. :) The allied AI taking over your units is possible. Like Sander said the cinematics should be replaced with automating ingame camera movements.

Engine.CameraMoveTo(focusTarget.x, focusTarget.z);Engine.CameraFollow(entity);

Using setJumpCamera makes knowing some coords superfluous, though in general it's beest to know the most important coords. Or figure them out via

var cmpTargetPosition = Engine.QueryInterface(targetEntity, IID_Position);if (!cmpTargetPosition || cmpTargetPosition.IsInWorld())    return ;var targetPos = cmpTargetPosition.GetPosition2D();var x = targetPos.x;var z = targetPos.z; // note: y points up! not z
jumpCameraPositions[index] = {x: Engine.CameraGetX(), z: Engine.CameraGetZ()};
Edited by Hephaestion
Link to comment
Share on other sites

For the moment, camera position is completely not-synchronised (you can't have all players on a map look at the same point). So it's not controlled by the simulation, which means triggers (that are in the simulation) can't control it either.

It should be possible however to send camera position changes to the gui. But it would require some more code. Getting the camera position won't be possible.

Link to comment
Share on other sites

It's impossible? Can't we make the Engine.Camera* C++ functions available in the simulation JSInterface.cpp too?

Focus hotkey can control it and it's just a hotkey. Can't then the simulation components also initiate such a hotkey command?

It must not necessarily be synchronized for all players at least for my usecase as for each player it will be a different perspective of the story.

Though you are right, there are usecases for synchronised camera view.

Also there is:

cmpPlayer.SetStartingCamera(position, rotation);

And that one at least would be in the simulation code.

Though I saw only GetStartingCamera and HasStartingCamera are in defined the simulation2 C++ code.


I post that often because that's a major setback for me, for both the Hybrid AI and our trigger campaign.

Edited by Hephaestion
Link to comment
Share on other sites

Hmmm.. If a real-time cinematics is, for the time being, not possible, then maybe we could have an AoE-like cinematics, wherein the camera pans on an object or area, and the player doesn't have control over the "camera" object?

If that too ain't possible, could we have at least a "Fade In, fade out" of the screen, something like the text comes in the middle in white, while the whole screen is black. When the text is done, the screen would slowly regain color?

I shall edit the OP to include other Parts. If you guys think that triggers for the map is at least 80% possible, then I shall proceed to create the map in Atlas. What do you think guys?

EDIT:

Opening post edited to include Part 3.

Edited by shieldwolf23
Link to comment
Share on other sites

Ah, Stan. :) I'd like to know if the triggers that are necessary for the concept are at least 80% possible. Sander said in his reply that most are possible, but may require extra code. So, either I start the map now or wait later until triggers are sufficient. Those are the choices.

Edited by shieldwolf23
Link to comment
Share on other sites

Would it be ok if I used a couple of those images in a ModDB/IndieDB post about the map contest? (Have been struggling with how to write about it there since they generally want more than just a bit of text, and I haven't been sure what pictures I'd add.)

Link to comment
Share on other sites

Looks very nice.

Meanwhile, I've also included the ability for triggers to have standard popups. Currently a 2-answer standard popup (yes-no by default, but the labels can be changed), but any generic enough layout would do (like OK, OK-Cancel, number/text input -- though text is a bit tricky with localisation -- , ...).

I'll also look into adding cinematics.

  • Like 2
Link to comment
Share on other sites

Thanks Sanderd! I decided to create a portion of the map, and will contain only a Parts 1 to 3, I think, of the scenario.

Yes-No decisions implemented are very good, and would open a lot of possibilities. With this done, number/ text input won't be that much of a priority, I reckon. Thanks for the efforts.

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...