Jump to content

General API design issue


Recommended Posts

I really thing the success of a game and the growth of a community around it highly depends on easy to generate/script

- Maps (any kind: scenarios, random maps, ...)

- In-game triggers that do something during game time

- Units and buildings (look: models, skins, scale, animation, ... and stats: )

- Technologies (Availability, dependencies and generating new ones)

But I noticed that for different parts of the game different APIs are written that often rebuilds the functionality of the core engine and/or each other again and again without getting close to provide all possible functionality. Of cause that makes it much more easy to modify things that are 'meant to be' changeable and to debug things but it prevents people from modifying other things that might prove awesome in the end but wasn't clearly seen to be useful or making sense in the beginning (witch is IMO normal for great innovative stuff). That results in more code and confusing different behavior in different parts of the game and a the lack of access to properties or functions that are implemented but not for any specific part of the game. For sure it is good to make common stuff easy to use but it's not good to make it difficult to change less common stuff. Perhaps functions that can get more fundamental information (for example about an entity in random maps or AI scripts) that may not be as easy to use but still grants access to various stuff already defined somewhere could be added.

Changing the map during game time is already possible in Atlas but for some reason not in-game. With some timers added it might be at least a start to implement triggers if adapting this functionality in-game. As far as I know that isn't planned in the 'near' future (whatever that means).

In Glest , an much simpler open source real time strategy game with 3D engine, 'factions' (like 'civilizations' in 0AD) can be designed by XML scripts that include buildings, units, techs and resources without viewing any other code (though the double reference sucks like a tech contains all units it effects and the unit contains all techs it is effected by). So all the sophisticated stuff is done in deeper layers of the game. It doesn't seam to me with code designed like it actually is in 0AD it will ever be possible to add custom civilizations without rewriting or at least changing large parts of the game (civs, entities, techs, RMGEN libs, AIs and maybe more).

Warcraft III wasn't the best RTS I've ever played (for me it was AoE II + Conquerors) but it's success depended mainly of the all mighty map editor (worldedit) that included all functionality mentioned here (and full online documentation of all accessible pops and functions by added jass code inside the maps). The vast amount of easy to add custom content (indeed it was automatically downloaded when joining a game) kept the game 'new' up to this day (released 2002). The community is still huge though the majority plays custom maps like DotA rather than using the original game content like in melee maps.

However, that made it mappers heaven :D

BTW: The 'factions' was not defined directly at all. It simply depended on the starting units you had. In 0AD it seams to be a mix of both: There are civilizations defined but if you get your hands on an enemy worker you can build all their things as well. Seems redundant to me.

I just think 0AD deserves to get really popular and stay it for a long time!

Edited by FeXoR
Link to comment
Share on other sites

I'll let the programmers say anything more specific, but a few general comments.

Triggers (as in an easy way to create scenarios where things happen based on set conditions) are indeed postponed and unless things change dramatically will not be included in 0 A.D. part 1. (It should still be possible to create story based/event based scenarios with scripts though, and the reason why it's been decided that we will wait with including it is that overall scenarios/campaigns/triggers/cinematics will take so much time to both implement and then actually create the scenarios/campaigns. It's not too unlikely that 0 A.D. will have triggers etc quicker if we focus on having a released "finished" version rather than having every feature we might want from the start. A release version will ensure a lot more visibility, and will allow for 0 A.D. to be added to official repositories etc, which should increase the amount of possible contributors.)

A big reason why some things seems to be duplicated is because of security, it's been fairly limited what different javascript scripts can do with other parts of the code. I'll let Philip or someone explain, but I'm assuming this is part of where you see duplication.

Another reason is probably that 0 A.D. has been worked on by so many people over the years, and things have been redone over and over, so there are probably a lot of things that can be improved/unified/simplified still. :)

Link to comment
Share on other sites

THX, feneur. Philip has already talked to me in chat and made some comments.

And I agree on having a 'finished release version' might speed things up.

Maybe I just ran into exactly those parts of the game that are split from other parts of code (RMGEN/AI).

I'll try to stay calm ^^

Link to comment
Share on other sites

Don't worry :) If everyone accepts the way things are they never will improve ;) Sometimes the way you do things has to be questioned, many times there is a reason for why things are done a certain way and no reason to change them, but some times there is, and it would be sad to miss those opportunities just because people are afraid to ask questions ;)

RMS/AI is probably as you say one of the areas where this is the most apparent, if nothing else because they are both relatively new areas so even apart from the cases where duplication might be necessary it's probably one of the areas which can use the most simplification etc :)

Link to comment
Share on other sites

0 A.D. Part 1 will be a lot like Age of Empires 1 when it was first released... "Wow, this is awesome! Wish there were more features though!" Then Age of Kings comes out and knocks your socks off. Hopefully that's what will happen with 0 A.D. Part 2. 0 A.D. Part 1 will essentially be a proof of concept and proof that we can make a well-rounded and enjoyable game, even if it's missing some wish-list features. Part 2 is when we hopefully have a lot more exposure and a lot more manpower and we can add all of the wish list items we've postponed.

Link to comment
Share on other sites

Seasons: I never really cared to have such a feature, but some people really want this, so we'll probably try to make it happen in Part 2.

Weather: Not all weather, we might try to come up with some rain and snow for Part 1, but that's a low priority "If Time Permits" kind of thing, or if someone had the gumption to throw it in on a whim, which stranger things have happened.

Naval Stuff: Perhaps boarding and capturing of ships. Garrisoned troops standing on deck and fighting from the top deck.

Walls: Scaling walls. Troops standing on top of walls and fighting from the walls. Things like that.

Triggers and Narrative Campaigns: We're pretty much 95% sure we'll go with some kind of Strategic Campaign (like Rome:Total War or Battle for Middle Earth 2's "War of the Ring") for single-player in Part 1. Narrative campaigns (those that use triggers to tell a story line) will have to wait for Part 2. This is the one I think that upsets people the most, but I think we can do some cool stuff with Strategic Campaigns that people will like and will make up for it.

Link to comment
Share on other sites

Seasons: I never really cared to have such a feature, but some people really want this, so we'll probably try to make it happen in Part 2.

Weather: Not all weather, we might try to come up with some rain and snow for Part 1, but that's a low priority "If Time Permits" kind of thing, or if someone had the gumption to throw it in on a whim, which stranger things have happened.

Naval Stuff: Perhaps boarding and capturing of ships. Garrisoned troops standing on deck and fighting from the top deck.

Walls: Scaling walls. Troops standing on top of walls and fighting from the walls. Things like that.

Triggers and Narrative Campaigns: We're pretty much 95% sure we'll go with some kind of Strategic Campaign (like Rome:Total War or Battle for Middle Earth 2's "War of the Ring") for single-player in Part 1. Narrative campaigns (those that use triggers to tell a story line) will have to wait for Part 2. This is the one I think that upsets people the most, but I think we can do some cool stuff with Strategic Campaigns that people will like and will make up for it.

I have nothing against any of the features and think they all are 'nice to have' and for most people they might have a well higher priority.

For me the priority of them is not that high because they mainly effect the look of the game an (for me) less the feel of the game.

I'm more concerned about easy to add existing custom content as I think it makes a game growing far beyond it's release quality (mainly variety) after it's published.

For me that includes:

- Scenarios: Implemented ok already. Custom map folder should be somewhere like 'my documents/my games/0ad/maps/scenarios'

- Skirmish maps: see skirmish concept. Not implemented yet

- Random maps: Implemented ok already, Custom map folder should be somewhere like 'my documents/my games/0ad/maps/random'

- Triggers: Not planned before 0ad2 AFAIK. I still think they are important because they can have a big impact on how the game feels.

- Entities: I'm not well into this...

- Civilizations: As far as I know you have to change a lot of files to add further civilizations so far. Adding different civs from different designers/programmers is only possible by fusing code manually AFAIK. So for the average guy it seams not possible to add custom civilizations at all.

- Player AIs: I don't know if there is a folder for custom AIs but anyway it's not that hard to add a custom AI. I think there should be a separated folder for that.

And how easy it is to generate custom content ofc. But I don't think that is such a big problem since it's an open source game and should attract a community more into coding.

Edited by FeXoR
Link to comment
Share on other sites

Out of sheer curiosity though, does that mean that part one will be modified so that there will be these features on it when part two is released?

The exact decisions will have to be made once we get further on, but in general I'd say the process will be something like follows:

Alpha releases until we have all the gameplay features we'd like.

Beta releases while we fix bugs and improve performance and test the game in all kinds of ways (depending on what time the available programmers have they might also include things like LOD fog, graphical enhancements, minor additions in other ways etc, also I don't think we will hold off calling it a beta if the multiplayer lobby server and related features aren't finished so that might be developed/finished during the beta phase as well)

1.0 release once everything works as far as we can tell and have tested. No new things should be added between the last beta and the final release, only final bug fixes and other polish (though who knows, perhaps some minor easter eggs might be added as well, but that's down to the ones who would create the same).

After 1.0 is released we will have to make some major decisions about where to go from there. Some team members might want to leave the team once we reach that milestone, some new are likely to arrive. We will also have to make decisions about what to include in the future and exactly how we will proceed. I see two likely paths (roughly approximated):

1. a. After 0 A.D. part one is released we basically do what we've done for part one and starts with alpha releases, then move on to beta etc.

1. b. During the time we periodically release bug fix patches to the original version 1.0 for major bugs.

2. Rather than add everything to one big 2.0 we might instead have a more direct path forward where we continually add new things. Something like: A couple of new gameplay features: 1.1, A new civ and some gameplay features: 1.2, One major new gameplay feature and a host of bug fixes and other improvements: 1.3, Some new gameplay fetaures: 1.4. And so on until we have all the features we want to call it 2.0. It might still be relevant to do lesser snapshots of development releases during the progress from 1.0 to 1.1 etc. Say we would on average make a new 1.something once or twice a year we might release an in-development version or two in-between (whether we'd call them alphas or betas or whatever :) ).

I'd say something like option number two seems most likely, otherwise we'd have to in essence keep developing two versions of the game at the same time (0 A.D. part 1 and what will be 0 A.D. part 2), and also that would mean that new features would be added sooner. Perhaps we would do something in between, mostly like option two, but if enough people still use 1.0 we might fix any bugs which are too serious.

To answer your original question more directly though: Once 0 A.D. part two will be finished there will be no need for part one as everything from part one will be included. Though improved of course, so the civs that has been included from part 1 will make use of new features added and so on.

and wahts are the features plannig for beta and 1.0?

This question should be answered above as well, but in essence no new gameplay features as betas are reserved for fixing/testing/improving, and the final release simply will be once we feel the game is done and everything works well :)

Link to comment
Share on other sites

you plannig to add new buildings for research tech only like a blachsmith or armory ...or Governament Center/ Library building.

No, we intend to have technology be researched in the already existing buildings. I.e. general/civ related techs in the Civic center, soldier related techs in the barracks, resource gathering techs in the mill and farmstead, etc :)

Link to comment
Share on other sites

i wanna miss armory and library (governament center) sad.gif

Well, 0 A.D. never had them, so in that sense you cannot miss them as they never were there =) More seriously though: there are probably lots of things that people has seen in other games, but that doesn't fit in 0 A.D. and will no be included. If you feel strongly enough about it you could always create a mod that does things the way you'd want to though :)

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...