Jump to content

The Council of Modders


Romulus
 Share

Recommended Posts

Thanks Lion.

Good idea with Lion's logo in the sig of thamlett too. I wonder how it would turn out.

Of course you need to download 0 A.D. but only one mod. Not a mod with the content then another having some gameplay, then another one for Scenario's etc. etc.

That's how I understood it. And it would be the ultimate goal for me. At least interally. For the downloads we could still write script for bundlng it automatically.

Furthermore I would like to convince people to download all mods (except GUI change mods) because:

  • it's not that much to download.
  • it makes our live easier.
  • quality is high anyway and
  • we could reduce redundancy (thus saving us nightmares .. I think of my AI being spread out everywhere in dozens of versions ...).
Link to comment
Share on other sites

What would be nice is to have something like the mod system of warband. When launching the game a menu appears and let you choose which mod you want to load vanilla is included in the list. Also in the game folders there is one with a mod folder with all of the mods separated in folders with their name that you just have to drag there. If you don ´t want one delete the folder. It´s using cfg files to see the names of the mods and displays them with their own icons. If modified equivalents of the game files are found mod is prevalent

Link to comment
Share on other sites

Isn't it going already ... I feel we are on the road. Where it leads it depends on our efforts - I will increase mine shortly after handing in my thesis in a few weeks. And I still feel uncomfortable and a bit lost with the recruiting phase. Isn't making things happen the best recruitment strategy? I wonder where I should recruit ... you wrote a appealing announcement - but where to put it? Print it out and show it in university? ;)

I prefer enthusiastic dialogue with my dear colleagues about our plans ...

A friend of mine has already shown his support for our ideas and was stunned at what our planet's volunteers are bringing to live with 0 A.D., blender, eclipse, .. all this hardware reverse engineering ...

Pick as much as possible places to recruit, if you know people around who might be interested, don't hesitate to ask them. So feel free to ask your friends / classmates. About websites: I guess we should target moddb and this forum mainly. But if someone can think of other good places, just do a post there. Does some has connections in the twcenter forum? (Since there are a lot of modders around there)

Link to comment
Share on other sites

We need maps at first. I mean niektb is working in RMS. And we can use european/ mediterranean biomes for all mods.

The next is apps. Launchers and things to update our mods and promoting the mods by other teams.

I'm very focused in marketing and promotional stuff. Is not for money, is for say we have strong game with great modder Comunity.

We can se promos to Aristeia, Mod of Rome, Rise of East( we need contact Rob Kimball), Millennium. Those this in the launcher or Updater. Or extra material stuff. Like promoting free DLC stuff for main game.

6thStarCraft2Patch.jpg

eGMnW.png

RSS new mixed with Updater/ patcher

Edited by Lion.Kanzen
Link to comment
Share on other sites

I agree we need either:

  • Mod environment ingame where dependencies are resolved.
or:
  • Each independent (sub)Mod in its own repo, then join via a shell/batch script.
or:
  • Each Mod in its own folder (as it is currently),
  • live with redundancy,
  • and not care for ever using more than mod at a time.
  • Otherwise try to keep up compatibility by merging conflicting mods when added to the simulation/..<mod-folder>.(this is a manual process)
I'd opt for keeping it modular, then having an ingame listing of available mods. If one is enabled, dependencies should be resolved. Versions may be neglected in the dependency list if we simply keep all mods up to the most recent versions. Unfortunately we will have dependencies if e.g. a GUI mod depends on another mod that adds functionality to the buttons. Perhaps we find a way to avoid this dependence by keeping GUI and functional changes/mods that interact in one module.

Dropping the version paramter makes the creation of the resolver much easier and reliefs us of maintaining bunches of old versions.

Link to comment
Share on other sites

I may have some friends in taleworlds forum.

cool.

If I knew it better (and its internal handling), then I could say more about it. You mentioned it decides the theme on load. That's interesting for the theming.

It´s using cfg files to see the names of the mods and displays them with their own icons. If modified equivalents of the game files are found mod is prevalent

I would prefer much more to derive the mod names directly from the folders. There is no reason to introduce yet another file. Categories like standalone: functionality: theme: can still be done by prepending to the mod name. Hiding a mod can be done via starting the folder name via . or #.

The icon can be named like:

<modname>.png|ico|jpg|svg|gif
The overriding and put into folder concept is good.

To solve the dependency issue we need a resolver for that. Then of course we needed a configuration file anyway for reading in dependency. We could call this

mod.xml
But this makes it messy to resolve doubles as the file first had to be read while the folders itself already prevents doubles (as there can't be equal named folders). But perhaps we should allow for identically named mods?

The question is whether to set up a mod directory/folder somewhere highlevel within 0AD folder structure. e.g. data/mod/.

Or if it's better to simply add mods via putting them into the current folders. This of course would be a requirement for AI mods and also it would simplify things a lot as the program has not to read in all those mods from the mod folder but it's important to mark those models/actor files that are mods like infantry/<mod_pack>:citizen_soldier_...xml so that we can keep track ofwhich mod belongs to which mod pack if we'd choose to remove one on the fly.

Oh wait, the last one is superfluous luckily as we can solve it all with a preprocessor:

  • instead of launching 0AD directly we introduce a
  • shell/batch script that is aware of the location of the 0A.D. files and has write permission

    that performs:

  • show mod list of all available mods (grouped in mod pack categories, e.g. Aristeia, 1000 A.D.), (resolve dependencies in real time after checking a mod using JavaScript)
  • download of mods that have been selected into /tmp folder,
  • extract it into the correct folder within the 0 A.D. file structure.
  • start the game. Et voilà.
The good news is that I could and just decided to write such a script for us (at least for linux) ..

Then we only have to change our repository structure in one repository that contains all mods, don't you think? Or we allow importing other mods from other repositories! Ha, that's it!! In the mod.xml we also specify common units that shall be included. Or viking units... or units from the Rise of the East or of the Pirate mod. Wow, I think that's the solution.

So we can keep it all in separate repositories - it's good thing!!

Depending on the mod pack (e.g. 1000 A.D., 1000 B.C.) another variant of our hybrid AI might well be chosen and downloaded by the script.

Hence we can only win by strictly dividing functionality (e.g. a campaigning engine) and the relevant mod content, e.g. viking campaigns, roman campaigns, ...

Finally we only want Roman mods in the Roman Republic repo, e.g. additional custom roman units (like standardbearers), ... Roman campaigning content files, ...

The importing via xml, e.g.

<import>    <mod-pack>Roman_Republic</mod-pack>    <!-- OR -->    <mod>1000AD/path/to/mod_folder_or_file/<mod></import>
allows us to keep it all separate - no redundancy! The script will take care of downloading the imports and resolving additional dependencies!

And the campaigning and AI mod then go into a separate one too. That unfortunately is in conflict with the tight integration of Roman Republic Mod and my Hybrid AI. Perhaps I have to think of an AI setup file (yet another configuration file :().

There could set names for the leadership, government form, the council hierarchies, the available commands (e.g. naval raids only for viking) and the decision tree that belongs to this command. Also deactivating Hybrid AI build-in 'common' commands like defensive and offensive command, subduing command, rebellion command, ... could be allowed in the config file.

That would even allow to use the AI with other themes, cultures, units, political system and even make features like available decisions for the decision trees moddable.

I think that's a breakthrough!! :D

What do you think?

Edited by Hephaestion
  • Like 1
Link to comment
Share on other sites

I noticed a few other pyrogenesis games:http://www.moddb.com/games/red-marchhttp://www.moddb.com/games/byzen

We might want to contact their devs and see if we can adopt parts of their code (Byzen for example features a campaign or at least should)

Red march isn't very far in progress but who knows.

byzen is interesing talk about Uruguayan wars.
Link to comment
Share on other sites

I think we can take inspiration from existing schemas, s.a. the Arch Linux PKGBUILDS: https://wiki.archlinux.org/index.php/PKGBUILD

Instead of Bash, we're more used to JSON.

Something like

{  modName: "Millenium AD", // name of the mod that will appear in the GUI  modVersion: "0.0.1",     // version of the mod  url: "http://moddb.com/myMod" // link to your mod page  engine: ">0.0.15" // Minimum version Alpha 15 required  source: "http://my-server.be/milleniumAdMod-0-0-1.zip" // Download of the zipped mod  depends: ["someNiceGuiMod >= 2.0"] // list of mods this depends on, with optional version information (using >, =, etc to denote minimum and maximum versions)  sha1sum: "..." // checksum for security  // other keys: "provides", "conflicts", ...}
With this scheme, WFG only has to host those small text files. While the actual downloads are on other servers. For users, it's still safe if people can only modify their own mod file, and by using the sha1sum. We can also make sure that the mods are loaded in the order required by the dependencies (and alphabetically otherwise).

The base file name should probably be the same as the mod directory it installs to, to avoid mods overwriting each other, and the file should probably be present in the mod root directory (so we can still check dependencies, even when offline)

  • Like 2
Link to comment
Share on other sites

You are right. We need the files in the highest level mod folder. We could also use one (1) list instead of a whole set of files but probably that's a bad choice? then we could have a mods.xml|json. If we give each file its own name then I would drop the key ModName or the source: . One of those could be put into the filename then.

e.g.

<ModName>.json
oder

<source|url>.json
The URL would be useful as this is unique, so no conflict.

We could create a from where mods get registered in a list. We can adopt your great idea for this list to be in JSON format.

At first I wanted to have a list that represents the filestructure <0ad-install-dir>/binaries/data/

mods/mods.json|xml  //<- list of all mods available online just like proposed by Sander.mods/Roman_Republic/simulation/ai/hybrid/...mods/generic/<category:art,gui,...>/<subcategory>/...mods/public/art/......
but that's nonsense at least for the list mods.xml|json.

It became apparant that it has to be clear to us that the internal representation to deactivate an already existing, i.e. downloaded mod and the online available mod list are two different things. For the deactivation thing the list may look like that and the filesystem is already this list! So no list in form of a file needed at all.

The cool thing with the existing/installed/downloaded mods is that the submods within a modpack could be resolved on the fly and thus de/activate all at once.

But we need not to care for this list (this list actually is no list but all .json files within mods/ folder), only for the mods-available-for-download list.

At startup we would read this list from the mods/mods.json|xml file. Then we resolve the dependencies following a UNIX package manager algorithm. (only if we really need cross dependency that is aware of versions for models et alia at all! For 0AD/the engine the version dependency of course is needed, but that's trivial compared to mod version dependency.)

Few questions this time:

  • Can we have the generic folder? It could also be called default. Just for those mods that don't rely on any package. e.g. I could put in my Hybrid mod there. Or our campaigning Mod/extension.
  • Is it ensured that AIs from a mod-folder are loaded even if they are spread out wildly. E.g. one being within mods/generic/simulation/ai/ and the other within mods/public/simulation/ai? So will show up all of those or not?
A colleague meant, I should use a C program, at first I thought of shell/batch but we determined that's not cross-platform enough, so we either use Java or C. I'd like to use C, best would be to integrate it into the Pyrogenesis startup, but I really don't like those patching issues, so want to keep it as a preprocessor first. That of course does not allow for available mods to be removed once the 0AD/pyrogenesis program is started (by our own written mod resolving preprocessor).

Edit: Too much ambiguity ... @stan: wow, thank you! what exactly is this taleworld, sounds interesting .. is about medieval settings?

Edited by Hephaestion
Link to comment
Share on other sites

*bump* Sorry for my revisioning of the previous post. There still was ambiguity I had to fix.

Also the conflict: key I think, we don't need. Simply overwriting like the pyrogenesis engine does with mods/<mod>/ contents that overwrite mods/public/ contents is pretty pretty.

So we have hammered out a nice base. Any input still welcome and thanks sander and all our councillors.

Link to comment
Share on other sites

What about making a C launcher then with WXWIDGETS ? Would be really convenient but separated from the main game.

I'm still open to include it into the main game. It would be brilliant indeed. Perhaps we go that route as then the cross-platform comes for free.

Thanks for wx proposal. Why not, is it platform-dependent?

We have to look into where in the pyrogenesis engine this mod-resolver could go ...

Link to comment
Share on other sites

Staff we going to definitely need are animators. We could definitely also do with more 3D artists, to start modeling buildings etc. Also well versed in texturing.

It'd be a good idea to target these guys during the recruitment phase.

@thamlett

Waiting on the date change. All our com signatures have the wrong established date.

That said things are looking :)

Link to comment
Share on other sites

Staff we going to definitely need are animators. We could definitely also do with more 3D artists, to start modeling buildings etc. Also well versed in texturing.

It'd be a good idea to target these guys during the recruitment phase.

@thamlett

Waiting on the date change. All our com signatures have the wrong established date.

That said things are looking :)

Don't know if my post on taleworlds will attract anyone. Though I know to animate stuff just don't know how to get it the game, so I'm waiting for Wijitmaker to show me how to do it with the rotary mill. I guess if everything goes like I plan I may able to make an arena with gladiators fighting inside during the whole game. Also, that may help to fix the art dev task to animate buildings.

Link to comment
Share on other sites

heh, good luck finding animators. The main project is in need of animators as well, they're tough to find. You might be better off learning how yourself. It might take a few months, but it's definitely worth it.

Well animal animators are hard to find. But When I'll know how to step by step implementing an animated building from max I'll make tutorials for new guys. Sharing Experience.

  • Like 1
Link to comment
Share on other sites

Don't know if my post on taleworlds will attract anyone. Though I know to animate stuff just don't know how to get it the game, so I'm waiting for Wijitmaker to show me how to do it with the rotary mill. I guess if everything goes like I plan I may able to make an arena with gladiators fighting inside during the whole game. Also, that may help to fix the art dev task to animate buildings.

That's cool.

For the arena, I'll make the coliseum. It'll have to be done so that you can view the center where fighting will take place.

The regular continuous fighting bit during whole game play animation, might be unrealistic, as fighting only takes place when you host games. Though certainly can be used in other buildings...

For instance, vineyard, you can animate Roman woman crushing grapes for example.

Dairy, Roman woman milking cattle.

Markets, people walking, having talks, purchasing etc...

These will certainly liven the city up and buildings.

  • Like 1
Link to comment
Share on other sites

I was thinking of something more coded :

- No gladiators garisonned in the arena = no animation

- 1 gladiator, 1 prop with a gladiator

- 2 gladiatiors, a training between the two.

Creating event like, OnUnitGarison(){if (units_number == 1){load anim1}

etc

Link to comment
Share on other sites

heh, good luck finding animators. The main project is in need of animators as well, they're tough to find. You might be better off learning how yourself. It might take a few months, but it's definitely worth it.

Luckily I have already some animating experience ... it's rather basic and nothing near what our artists have done and are doing here in 0A.D.

And finally we plan on new features that finally might be adopted by 0 A.D. Essentially this is the main goal. Of course it's always better to start as a side project and push it to perfection and then ask for inclusion than the other way round. (that's why we set up the Council efforts .. to help in the main project, bundling our strengths and raising our motivation).

  • Like 1
Link to comment
Share on other sites

I was thinking of something more coded :

- No gladiators garisonned in the arena = no animation

- 1 gladiator, 1 prop with a gladiator

- 2 gladiatiors, a training between the two.

Creating event like, OnUnitGarison(){if (units_number == 1){load anim1}
etc

Okay now I'm with you.

Yeah the training bit I like and that is realistic, I totally forgot about training lol

We'll also have to animate the flooding of the arena too. And the drainage, though the later is not necessary...

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