Jump to content

[PROJECT] Hegemony: A Celtic Kings Mod for 0 A.D.


Recommended Posts

Hello there. Just creating this page for motivation, wanted to see people's opinions.

If you ever played Haemimont's classic series Celtic Kings, you know what I am talking about. I want to create a mod that replicates the core gameplay design, and maybe improve upon it in the future.

Some features I plan:

-Manage cities, not citizens: Automatic resource gathering. Structures have depots, so player doesn't own resources, buildings own. A clear distinciton between money and soldier producing cities and resource producing villages. Population dynamics, food, hunger etc.

-Larger maps and more units. But first I have to know what bottleneck exists before this and how can I solve it. Maybe lowering quality, or a new pathfinding system.

-Improved Diplomacy and more depth. More of a slower management game than a AOE style RTS.

Though it is mostly in idea stage now. That's why those are what I 'plan'. More realistic roadmap:

-Get acquintaced with mod layout: %10 done.

-Simple starting template changes: %2 done. Yeah, I make these numbers up.

-Have a working tech demo of 2 factions and a scenario. Not started yet. Planned: Rome vs Carthage on Sicily.

-More steps will be added soon as I clear the roadmap.

Wanna help? I need help in following areas:

ART: Need 2 new meshes , village centres at the same tile size of town centers, for Carthage and Rome, by .. two months? No hurry here.

PROGRAMMING: You can help me learn how the inside of 0 A.D. works, or come and learn together, to eventually help with the project.

MAPS: Need a giant sicily map. As big and detailed as possible, so this needs to wait before I figure out how I can make the maps larger. In the meantime, you can tell me how to make Atlas editor work with mods :P

Footnote... 24th of April, 2015. Again, this is just in idea stage, and I'll need at least 2 weeks digging game files before I can start making things actually happen. Three main questions I'll need to adress by digging through text files and directories right now, maybe you can give advice:

-How 2D GUI works, to add a morale bar to every warring unit and a strategic view.

Thanks in advance, for everything you can offer basically :)

P.S.: A list of Nemesis of the Roman Empire's features to give you an idea. Not all of it I plan to implement. Fantasy features definitely not, I value realism. (NotRE is the sequel I played.)

- A GameSpy review of the game that goes in detail to some of the features of the game.

Edited by Trebgarta
Link to comment
Share on other sites

Nice, nice, nice... hi, btw :hi: Welcome to the forums.

I haven't played the mentioned game(s) but your plans sound like something that is achievable (though depending on what 'more depth' stands for ;) ). (I like it when people set realistic goals)

Right now I'm very curious on how the city management would turn out, it sounds like something that I definitely want to try playing some day.

You can contact me for questions about modding (and setting up your mods) and scenario designing! (though the forum generally works too) :D

Removing Petra can be done easily by throwing the Petra folder away (though you might want to replace it with some other AI in order to make stuff playable ofc)

Edited by niektb
Link to comment
Share on other sites

If you can formalise your requests (f.e. a storehouse should automatically gather a tickle of wood for every tree near it), then we can help you.

It's best to focus on one thing at a time, so you can take some time to investigate in it, and find the best way to code it.

Btw, larger maps are certainly possible. Take a look at the Eire and Albion demo map for example. It has no resources and only one ground texture, but the map itself is pretty huge. You can create such maps from modified random map scripts, or by importing heightmap images.

Link to comment
Share on other sites

Niektb, thanks for the kind words! The "depth" I'm talking about is just strategic depth, not something like next gen graphics or anything :P

City management, I'm planning a crossover of celtic kings and rise of nations. Too long to list all features of it here, but it won't be a caesar or sorts, but still detailed, developing the city will take some time.

I'll definitely have more questions to you about mod layout, the VFS, and stuff like that as soon as I go to my desktop (writing this from mobile.)

Sanderd17, I believe I can formalise all my requests. But most of the stuff I'm I'm doing now is research and investigation anyway, when I start doing actual stuff, or after I have my ground/basis ready, I can that storehouse kinda help.

I tried importing height maps, I want to know, what is the ratio of importing? 1 pixel 1 tile? Also, is there a limit? Or I can have it as large as I want, by resizing the heightmap, just limited by my GPU?

Thing is , I want to have lots of units on larger than giant maps. And I reckon this would be a performance eater later in the game. So I am trying to solve the two main bottlenecks: LOD and Pathfinding (TThough I am illiterate on both fields, I think I can learn. )

EDIT: Niektb, On PC now, I originally assumed there was a PM system but I couldn't find it. Is there a PM feature somewhere I couldn't find? If not, where can I contact you?

Edited by Trebgarta
Link to comment
Share on other sites

Not sure about the exact ration actually but Northern Island is based off a real-world heightmap (just fyi) so it's certainly possible, for large maps I would first check 512x512 or else 1024x1024 (for extremely huge maps)

You don't need to bother with the pathfinder since a new one is in the works: https://github.com/na-Itms/0ad/tree/pathfinding

You can send PM's as soon as you made 5 forum posts (spam protection rule)

Edited by niektb
Link to comment
Share on other sites

The VFS is pretty simple. Mods have a loading order, and it takes the file that's available in the mod with the highest order.

So you can overwrite any file in the public mod with your own content.

Now, you can also combine this with the advantages of JS. In JS, classes are made of prototypes, and you can alter the prototypes at any point.

So in your mod, you can make a file that's loaded after some existing component, and just modifies some small parts of the prototype.

That way, when multiple mods are loaded, they even can all add their own custom part to the prototype, with less chance on conflicts.

Or when we change stuff in our game, there's more chance that you won't notice a problem.

Files are loaded alphabetically, so it's perfectly possible to predict which file is loaded first.

As for the maximum size of the maps. There's certainly a maximum (by the data types we use),

though I haven't seen a computer with hardware that was strong enough to load a map of our maximum size.

1 pixel translates to one vertex (the node between 4 tiles).

When you have many entities, you will always have more lag, since you need to loop over all entities to determine certain things (like does it need to be rendered, does it still exist, ...). That looping costs time.

Link to comment
Share on other sites

niektb, I first loaded a 1024x1024 then a 2048x2048. I think now I can express myself more clearly as I say "large", I actually mean "big huge" :P

Though I was loading Malta heightmap, and my criteria was to have it as big to fit ,relatively on my ideal mod proportions, a city on where Valetta is. But even 2048 x 2048 was too small for that, then I realized having a 1:1 map is a bad idea (a city where a city is I mean by 1:1.)

Hoping that pathfinder fixes it then. Well, maybe I should just pass on to having a proper tech demo rather than trying to fix only-ideal, non-existent-yet performance issues :P

I should get my post count higher then.

sanderd17, so the only criteria for a file to be loaded is to actually exist in the mod directory? I should have got that when my Morale.js (which is right now only a copy paste of health.js :P ) caused an error message. Is the public mod loaded even if I specify it not to be loaded? I didn't see if only my mod was loaded since my mod is literally a copy of public right now. I mean not overwriting, I mean not loading at all.

I know that more entities = more lag, but there should be a way to minimize it. After all, games like Empire Earth and and Supreme Commander manage to have tens of thousands with no lag on modern systems. That is why I am looking for the bottlenecks in 0 A.D. to have more units. I am not looking for millions, but maybe pulling the number up to a thousand or two, since currently, two or three hundred units from various civs running around is the playability limit (I assume, from my memory which is dated, though maybe higher but definitely not a thousand). From what I've seen through relatively short and basic profiling is that most of the lag is from rendering and pathfinding.

Another idea that came to my mind is to have a different screen for strategic level, e.g. extreme zoom out. Sorta how Supreme Commander or Hegemony or Hearts of Iron manage it. Maybe some thematic, parchment screen style-thing that is rendered after a certain negative zoom level. Now in the base game this wouldn't be really useful, but since I plan to have relatively much less micro (Few buildings, no resource gathering) and much more macro (armies commanded in groups, groups which I plan to have to be selctable by single icon both in high and low zoom), I think I can use this. That's why I am reading gui source now, actually ^^

Thanks for everything.

  • Like 1
Link to comment
Share on other sites

Thanks, leper. I can assure I'm not a spambot :P

stanislas69, I'd be glad if I had a village model, something that's about the size of city center and acts as in the context I've described for Carthage and Rome. Though two things,

1) It's definitely no hurry,

2) I know next to nothing about modelling and graphics programming so if you want to make one, I'd be glad if you playtest it beforehand and send it to me working(aka ready to be implemented, made an actor? I'm yet to put a new unit to the game).

Link to comment
Share on other sites

Sorry guys, I'll be halting this project.

I know I just recently started and it's been very little time, but this is what's gonna happen now. There are a few reasons.

1) I'm a beginner. I don't know much. Because of this, I have to learn a lot before I begin. Whenever I try to do something, I feel overwhelmed due to the number of stuff I don't know in the code or the architecture. The cure to this is obviously, learn better JS, C++ and familiarize oneself with the engine ,but;

2) I have little time so I'd like to start doing stuff sooner rather than later. You might ask, then why did I made this thread and started? Well, because I underestimated. When I made this thread, I didn't know much about Pyrogenesis. I hadn't fiddled with live game code before, However, I had an idea and the motivation to learn. But this was an underestimation. As I got deeper into the code, I changed my original idea, then another and another... My grounds for this project was the idea in my head, and while it is certainly doable, it is the small details that mattered and I soon abandoned it. Now I know I should previously learn the architecture, and find an idea that fits. Since I gave up most of the original concepts, I can't find a motivation to continue.

I had previously played around with Unreal 4 and Paradox's Clausewitz too, but given up because they were too complex for me, and complexity eroded my motivation as a beginner.

Until today, I've managed to succeed in 2 things: Simpler modding and basic 2D stuff in libGDX. I'm going back to latter, but with Godot Engine instead of libGDX. Godot engine has just what I need: Simplicity, good documentation, and an active community. You guys have one of the best communities around, but first two of yours are simply not enough for me. So sorry! :(

Sorry again for this short-lived project. Maybe I'll come back after the summer, after university entrance businesses, with more experience and free time, and pick this up from where I left it. I know you will be around by then, so see you later, and the best of luck! :)

Link to comment
Share on other sites

Well, it still looks viable to me.

You can start with small tasks to get to know the engine. Like changing the way resource gathering works.

This would teach you some things about how writing simulation components works, and how to get that info into the GUI.

And later on, continue working on the resources to f.e. store resources per depot.

Other things are of course difficult. We also want big maps (in some cases), but there's a reason we don't have them.

Link to comment
Share on other sites

After concluding that I needed 9 times giant as minimum map size for my original idea, I gave up on that and started thinking about instead of enlarged maps that systems can't handle (And nobody would spend time creating) maybe smaller cities and grouped units would be better, so I thought about grand strategy route, but it is too much work than I can handle.

I'm not disagreeing with you, I didn't leave because it wasn't viable. Someone with more means to do so can execute my ideas, I know that, I've always tried hard to keep reachable goals, but those are really hard too. I need to get low level. One of the main reasons I even started this was because things were already in place, I just needed to modify and tweak a little, while learning about the architecture. But with my final ideas, most of the functionality is incompatible, and even engine is somewhat limiting, there could be a more suiting alternative.

Pyrogenesis is great and flexible and I will most probably come back; maybe just doing ticketed tasks and submitting patches after I have more experience, or even maybe continuing this from where I left, again with more experience and also free time. I'll be doing a year prep after the summer, see you by then :)

Link to comment
Share on other sites

  • 1 year later...

Join the conversation

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

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.


  • Create New...