-
Posts
20 -
Joined
-
Last visited
Everything posted by hopeless-ponderer
-
Popup Choices for Scenario Scripts
hopeless-ponderer replied to hopeless-ponderer's topic in Game Modification
Alright, thanks @Freagarach, that sounds easy enough. I'll set up my account and add some documentation, and hopefully have it up later tomorrow. -
Popup Choices for Scenario Scripts
hopeless-ponderer replied to hopeless-ponderer's topic in Game Modification
Yeah, of course! I have a few ideas I'd like to submit actually, I was just waiting until after A25 was released. I still need to learn how to use Phabricator though. Do I need to use SVN to submit diffs, or can I generate patches with git? I'd prefer to use git if I can, I already do most of my work on the Github mirror. There's already a git-formatted patch located at dev/patch, btw, which forks from master at the commit saved in dev/git_base.txt. -
Github repo: https://github.com/Mare-Nostrum-0AD/popup_choices Zipfile: popup_choices.1.zip Hey everyone! Here's a new feature I've been planning to create for a while. It allows Scenario designers to include "popup choice" menus in their trigger scripts. These popup choice menus can have up to three buttons, with each button (optionally) triggering a function when it is clicked. This allows you to create scenarios with storylines and more interesting scripted events, and also to display information to the player during gameplay (i.e. a "Historical Background" blurb at the beginning of the scenario). The instructions for how to use this are contained in the README.md of the github repo and zipfile I linked to above. I included an example script at maps/scenarios/demo_popup_choices_triggers.js. To try out the scenario, go to the Scenario selection menu, filter by Demo maps, and look for DEMO: Popup Choices. You'll have to know at least a little JavaScript to use this feature, of course. I know a lot of you here aren't coders, so I'll try to build a "template" scenario script and a library of functions for simple use cases to make this as accessible as possible to everyone. I'm also willing to help people build their scenarios, as long as it's just a small or medium sized project. I'm also including this feature in my other mod, Mare Nostrum, from now on. I hope y'all can make some interesting scenarios with this!
-
No problem, @azayrahmad! Glad I could help. The Corvus was a gangplank that the Romans attached to the front of their ships that made it easy to board enemy ships. It was the key innovation that allowed them to compete with the Carthaginian navy in the First Punic War. Before the Corvus, the Roman navy was actually pretty poor compared to other Mediterranean powers. In reality, they never became great seamen, the Corvus allowed them to treat naval battles like infantry battles on land, which they excelled at. You might have noticed that the Roman warships in A24 and A25 already have this feature: it's the long ramp that protrudes from the front of the ship. If I remember correctly they didn't have this in A23 and before (I could be wrong, it's been a while since I played A23). If so, you could use the A23 Roman ships as the variant without the Corvus and the new ships as the variant with the corvus. For the bonus, you could just increase the attack power or attack frequency. To make it 100% accurate you'd have to make ships use a melee attack or have the ability to capture other ships, but that's probably too complicated for the game atm.
-
A few things going on here: Technology manager is a component of the entity's owner (the player), not of the entity itself. Instead of Engine.QueryInterface, you'll need to call the helper function QueryOwnerInterface(this.entity, IID_TechnologyManager). When each component's Init() function is called, there is no guarantee that all the entity's other components have been initialized already. There's no neat solution to this, but the best solution that I have found is using OnOwnershipChanged instead for code that is dependent on other components. The event OwnershipChanged is fired when the entity is assigned to its initial owner, which occurs almost instantly after all components have been initialized. You'll want to check that the initialization code isn't called again when the entity's ownership changes, so do something like this: VisibleTechnology.prototype.OnOwnershipChanged = function() { if (this.initialized) return; <initialization code ...> this.initialized = true; }; OnResearchFinished is only called on the entity of the player that researched the tech. To have any individual entity respond to a tech being researched, use OnGlobalResearchFinished. The msg consists of the fields "player" and "tech", player being the ID of the player who researched the tech and tech being the name of the tech. You'll want to check that the player ID is the same as the entity's owner, or else you'll update the variant when any player researches the tech. Use the following code: const cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership); if (cmpOwnership.GetOwner() !== msg.player) return; Good luck with this! It's something I've always wanted to see in the game. I've thought about giving the Romans a "Corvus" tech to improve the power of their ships, which would give them with the boarding plank you see on the ships in A25.
-
Civ: Imperial Romans (Principates)
hopeless-ponderer replied to wowgetoffyourcellphone's topic in Delenda Est
These are really nice! It really appeals to my inner Romeaboo . That being said, you might want to save Aurelian for the Dominate Romans, if you're planning on making them? I can understand wanting to have a more cavalry-based hero for differentiation, but imo coming after the Crisis of the Third Century makes him part of the Dominate, even if he came before Diocletian. Better choices for a solidly Principate-era emperor could be Claudius or Hadrian. Claudius was known for strengthening traditional Roman religion against the eastern mystery cults, maybe one of his powers could be increasing the healing power of the Priests? He was also known for using freedmen in his administration, maybe he could unlock the ability to upgrade slaves into something like the Chinese minister. Hadrian would have the same wall-building power as Aurelian, plus the ability to unlock certain Greek structures or mercenaries, since he was a huge hellenophile. And you could add one of the bad emperors as an easter egg. Nero or Commodus could be fun to play with -
Mare Nostrum: A New Overhaul Mod
hopeless-ponderer replied to hopeless-ponderer's topic in Game Modification
Thanks, glad you're liking it! I've played it a few times since you added them, I think it really adds a lot to the realism. If you want to differentiate the civs like in Mare Nostrum, you could use Olive Groves (Elaionas) for the Hellenic civs and Date Palm Groves for African and Asian civs. You might have missed those templates; they aren't located in the regular civ folders, they're located under structures/hele, structures/mesop, and structures/nile (long story short, I rewrote Builder.js to replace {civ} with the culture code if it can't find the template with the civ code, so for example will look for structures/hele/field_cash_crop if it can't find structures/athen/field_cash_crop). Here's what they look like: Off the top of my head you could use cacao groves for the Mesoamerican civs and silk worm farms for the Chinese. I haven't added those factions, so it isn't high on my priorities list, but you might want to look into it. -
Syracuse Mod Idea/Brainstorming
hopeless-ponderer replied to PyrrhicVictoryGuy's topic in Game Modification
I had some time to code a patch for this this weekend. All it took were a few tweaks to TechnologyManager.js and ProductionQueue.js: tech_triggers.zip With this patch you can add "triggers" to each technology.json. I added @wowgetoffyourcellphone's Epigamia tech as an example: { "genericName": "Marriage Pact", "specificName": { "sele": "Epigamia" }, "description": "Form a marriage pact with the Maurya Empire. Receive a one-time gift of 20 War Elephants, in exchange for reduced territory push for Civil Centers.", "cost": { "metal": 600 }, "requirements": { "all": [ { "tech": "phase_city" }, { "civ": "sele" }, { "entity": { "class": "SeleucusNikator", "number": 1 } } ] }, "requirementsTooltip": "Unlocked in City Phase. Requires training the hero Seleucus I (Nikator).", "icon": "sibylline_books.png", "researchTime": 40, "tooltip": "Receive a one-time gift of 20 Maurya War Elephants, in exchange for reduced territory push for Civil Centers.", "modifications": [ { "value": "TerritoryInfluence/Radius", "multiply": 0.7, "affects": "CivCentre" } ], "triggers": [{ "systemComponent": "Trigger", "func": "TechSpawnUnits", "args": [{ "researcher": "{{ researcher }}", "player": "{{ playerID }}", "unitTemplate": "units/maur/champion_elephant", "count": 20 }] }], "soundComplete": "interface/alarm/alarm_upgradearmory.xml" } There are three elements to each trigger: The component name. A component is basically one of the elements in a template like "ProductionQueue" or "Health". There are three types of components you can use: entityComponents, playerComponents, and systemComponents. Entity components are components of the structure or unit that researched the tech, player components are components contained in player.xml, and system components are global, gamewide components like Triggers. This particular example uses a custom-written trigger function in Triggers~tech_triggers.js. The function name ("func"). The available functions for each component are in simulation/components/<Component>.js. The args: an array of args to feed to the function. Certain properties can be parsed into the args if they are contained between double brackets, like {{ playerID }}. Currently, researcher (the entity that researched the tech) and playerID are the only properties that can be parsed like this. You can make your tech spawn any units you want by replacing the value of unitTemplate in the example above. I'll try to submit this for A26. You can add the code directly to your mod as well, but I can understand not wanting to maintain a lot of js code in a faction-based mod like this. In the meantime I'm going to add it to Mare Nostrum, if you want to play around with it there. -
For my mod, Mare Nostrum, I'm trying to make a "Government Center" for each faction. For the Romans I've chosen the Comitium. The Comitium was part of the Roman Forum. It served as an open-air meeting place for the Curiate assembly and other popular assemblies during the Republic. It was located in front of the Curia, the meeting place of the Senate. Many different Curiae were built over the course of the Republic and Empire, but I'd like to use the Curia Hostilia in particular. The Comitium actor should consist of a circular tile platform in the middle plus four surrounding props. I've made a very rough model of how the props should be placed: i Here's a rundown of the props: Curia Hostilia: The Curia Hostilia was a very simple structure, basically a square house with a triangular attic. At the front it had a small bronze doorway with a small window above. Each side had two small windows near the roof. It looked very similar to the Carthaginians' "Italic Embassy", but without the Portico in front. It should be roughly the same size as the Athenian Prytaneion, but with a square footprint. The Prytaneion has a radius of 16 meters, so the Curia should be 32 x 32 meters at the base. Rostra: The Rostra should be based on the Rostra Vetera. The Rostra should curve around the perimiter of the Comitium, like seats in a theater. At the top should be a platform equal in depth to the steps (this was where politicians would speak during assemblies). The outside should be lined with a series of small arches. On the side furthest from the Curia there should be a narrow tower with a triangular roof, only slightly taller than the Rostra platform. The Rostra should be no taller than half the height of the Curia. Graecostasis: The Graecostasis will be a simple rectangular tile platform, with a couple steps leading onto it. It should be much shorter than the Rostra. Columna Maenia: A typical Roman honorary column, in the Corinthian style. One of the columns from the front of the existing Roman cc should do nicely (without the statues on top). Some pictures for reference: The Curia Hostilia The Rostra Vetera The Graecostasis The Column of Phocas (the Columna Maenia wouldn't have looked very different) A map of the Comitium (disregard all Curiae other than the Curia Hostilia, outlined in red). A map of the Roman Forum during the Republic, Comitium at the top-center. Locations of the Curia, Rostra, and Columna Maenia labelled. The overall structure should have the same have the same footprint as a greek theater (circular, with a radius of 25 meters). The Curia should be placed under art/actors/structures/romans, since it could be used as a structure in its own right; the other props should be placed under art/actors/props/structures/romans, as usual.
- 4 replies
-
- 2
-
- 3d modeling
- romans
-
(and 1 more)
Tagged with:
-
Mare Nostrum: A New Overhaul Mod
hopeless-ponderer replied to hopeless-ponderer's topic in Game Modification
Yes, of course. Disregard what I said before, I think a better choice for a city-level cc would be the Basilica Fulvia (later renamed the Basilica Paulli), which was built during the Middle Republic (c. 179 BC). It was a relatively simple building: basically a long, rectangular hall with three doors at each end. There was a smaller second story protruding from the roof, with a triangular attic. Near the ceiling there was a row of small windows. In front of the building there was a smaller, two story building with a wooden balcony and a colonnade running down the front. For the purpose of the game it should have the same footprint as the existing Roman CC, but it should be about 2/3 as tall, to make it look more humble. There should be a tiled plaza in front as well, but it should have simpler props than the current CC. Maybe just a few trees, or statues without columns. There's an article with accompanying images at Digitales Forum Romanum: http://www.digitales-forum-romanum.de/gebaeude/basilica-fulvia/?lang=en. It also includes models of the version that was rebuilt under Augustus (called the Basilica Paulli). You could incorporate some elements from that version as well, if you feel like the front of the Republican building looks too plain. -
Mare Nostrum: A New Overhaul Mod
hopeless-ponderer replied to hopeless-ponderer's topic in Game Modification
I guess I'll blog some of my progress here. This week I created a new City Center actor for the Romans by reskinning the extra Spartan civil center actor. In the long run I'm hoping to replace it with something that looks more like the Basilica Aemilia (similar to the current Roman CC, but a bit smaller, and with tapered levels), but for now I think it looks pretty nice. I used the texture files for this to reskin the Roman bathhouse and level 1 farmstead too, so they look a bit more professional. Here's a video of the complete Roman civil center progression now: roman_city.webm Other changes I've made the lately: Civil centers can train citizen soldiers again. I realized removing them from the cc made the early game too slow. Phase upgrade alerts now display correctly and play the sound. This also fixes a bug where all civs were researching the Athenian phase techs. A ton of bugfixes for Delphi bot, mostly checking for entities with undefined position (it seems the AI has trouble noticing when a civil center has upgraded). The most common bugs are gone now. City radius range overlays display correctly now. I borrowed the texture for the overlay from @azayrahmad's city building mod. Over the next few weeks I'm going to start working on a couple different features. I'll try to submit them as patches for A26, since they could be useful for the main game: A gui interface for "popup choices" that can be called from Trigger scripts. The popup choice menu will have up to three buttons, with each button being linked to a callback function that can be used to trigger different events. This will be useful for adding a "choose-your-adventure" element to scenarios (i.e. "Ally with the Rhodians and receive 20 ships" vs "Ally with the Spartans and receive 20 Spartiates"). Allowing technologies to call Trigger functions when researched. This will be useful for technologies like the "Marriage Pact" technology being discussed for the Syracuse mod (i.e. "receive a one-time delivery of 20 Maurya war elephants"). -
Mare Nostrum: A New Overhaul Mod
hopeless-ponderer replied to hopeless-ponderer's topic in Game Modification
Thanks, I'll integrate these into the repo soon! It'll be especially useful to get the patron temples to build closer to the buildings they provide a bonus for (it's frustrating seeing the AI build a Temple of Poseidon in the middle of land). Hmm... I'm still leaning toward getting rid of manpower, but making structures cost manpower might actually help balance manpower levels. Especially if more advanced buildings like monuments cost exponentially more manpower. And there would be a good in-game justification for it too. Also, notice that Manpower is different from City population (which is itself different from Unit population, which will be renamed to "Command Limit" in the future, to avoid confusion). Manpower represents a small subset of your City population that you've managed to recruit for the military and service to the government. I actually am planning on giving Cities and Metropoli a food upkeep that scales with their population, since food production seems to get a bit too easy in the later game. But I think creating an "unemployment upkeep" for excess manpower is a bit unnecessary, and could lead to some dangerous cases where the upkeep is taking away all your resources, which leaves you no way to get rid of the excess manpower. At least with the food upkeep for cities, the city's population will decline when upkeep is unpaid until the upkeep falls back to a manageable level. BTW, I fixed dropsite bug and the Maurya barracks bug, thanks again for pointing those out! Always good to hear feedback from you. -
Syracuse Mod Idea/Brainstorming
hopeless-ponderer replied to PyrrhicVictoryGuy's topic in Game Modification
Here ya go! I used a Spartan stoa to represent Doric architecture and a couple of stalls to represent the merchant nature of the colonies. You'll need someone to add a ramp, and the wooden fencing makes it look a bit Brythonic, but I feel like it conveys the concept pretty well. Make sure you change to civ to "syra" when you've actually implemented it. I set the civ to "spart" so it won't throw any errors when you open it in the scenario editor. merchant_colony.zip -
Syracuse Mod Idea/Brainstorming
hopeless-ponderer replied to PyrrhicVictoryGuy's topic in Game Modification
I'm loving this idea so far! I've always thought there needed to be a faction to represent the colonies in Magna Graecia. The fortified port is almost exactly the same as a "merchant colony" idea I had for Mare Nostrum. I'm not much of an artist, but I've gotten pretty far by stitching existing actors together with meshes. I've thought about making this by combining the base of the Brythonic Crannog with a few other civic buildings on top. Lemme see if I can make a "dirty prototype" for you! -
Mare Nostrum: A New Overhaul Mod
hopeless-ponderer replied to hopeless-ponderer's topic in Game Modification
Hey @wowgetoffyourcellphone, glad to get some feedback from you! Feel free to take anything you want from this mod, just link to my github repo in your contributions page. Also notice that there are olive groves and date palm groves as "cash crop" fields, which are good for diversifying your civs. Take a look at the pastures too, those could be useful now that you're starting to work with nomadic civs. And the patron temples could be good for more civ diversity and filling out DE's Empire Phase. And there's some things I think I'll "steal" from DE too, if you don't mind. The cult statues will work perfectly with my patron temples, and the mixed-gender citizen icon will be good for the unit production menu. Thanks for pointing out that I need to document Manpower better. I've done a lot of work documenting the city-growth elements of the game in tooltips, but some things kinda slipped my mind. Though tbh, Manpower isn't really my favorite resource to work with, as it's hard to find a balanced trickle rate that doesn't slow down the early game too much without making it too plentiful in the later game. I created it as a way to give a definitive late-game advantage to players who managed to grow their cities more, but now that I've learned more about how Value Modifiers work, I'm thinking of other ways to do that. Maybe an "Aura" that scales with city population that progressively reduces the batch production time in nearby buildings, to the point that someone with a Metropolis of 100k+ citizens can spam units almost instantly. So I'll probably remove Manpower in a later release. Glad you like the government centers. They're ultimately meant to be a lot more than a "Hero Barracks" though, they're going to be the main way of implementing civ-specific technologies and bonuses. Right now they're a bit cookie-cutter because I haven't had time to think of a lot of civ-specific techs, other than the "Democracy vs Tyranny" techs for Greek city-states and the Cura Annonae for the Romans. You've created a lot of techs for Delenda Est, maybe you could help me with that? Oh yeah, and <Icon> doesn't support {phenotype} in the base game, I rewrote Identity.js and some of the gui code to support that. Don't try to implement it in DE yet! I'll try to submit that as a patch for A26. -
Mare Nostrum: A New Overhaul Mod
hopeless-ponderer replied to hopeless-ponderer's topic in Game Modification
Hey @azayrahmad thanks for the feedback, glad you liked it! Yeah, Civilization meets Age of Empires is how I like to describe the mod myself! The commoners not auto-gathering after building dropsites is a bug, I still haven't figured out where it's coming from. I think it started when I switched from female citizens to mixed-gender citizens. I may have removed a Class that actually had some importance to the unit AI. And thanks for pointing out the Maurya barracks error, I haven't looked at the Mauryas in a while. Dang, that's too bad about the Siege Towers, I had a lot of fun making that feature. I might just keep it for the first release, but I'll change it to something more historically accurate for the second release. Maybe a combined stone thrower/ram unit that gets unlocked in the Hegemon Phase. I'll probably cut down the unit speed so it doesn't become too strong. An addon would be nice, but more importantly, please join in and contribute to the repo directly! You have a lot of good ideas in the City Building mod that would work perfectly in Mare Nostrum. I noticed you got your civil centers to display a nice ring around their radius through the range overlay manager, maybe you could help me implement that too? You've done a pretty good job getting the AI to build your cities too, maybe you could help Delphi bot improve it's city placement game as well. Right now it hesitates a bit too much to build new civil centers after reaching the town phase, when it should build a second civil center as soon as possible, unless it's going all in on a rush. Hope to hear more feedback from you! -
Github Repo: https://github.com/Mare-Nostrum-0AD/mare_nostrum Hey everyone! I haven't been active on this forum before, but you might know me from the mod I've been maintaining, Random Civ Selection Groups. I've been working on this mod for a while now; I originally built it for A23 last year during quarantine, and I've spent the last month updating it for A25. It's the culmination of a lot of ideas I originally thought of developing as individual mods, but eventually I realized I had enough new concepts to package together as a total overhaul for 0AD. I loved this game when I discovered it last year, but I was a little disappointed that the city building usually involved turtling around your starting civil center instead of spreading out across multiple cities. I got into RTSs through Rise of Nations, so that's the style of gameplay I was expecting. This mod, Mare Nostrum, is at its core a mod that aims to reimagine 0AD as a game where you build your nation from a small, defenseless village to a vast empire spanning multiple cities. The biggest concept introduced in Mare Nostrum is that each civil center gets a "population" representing the number of citizens who theoretically live in it (this is separate from the "Unit Population" that we're used to, which represents the soldiers and laborers you've recruited from your civil centers). Each civil center starts off as a village with only 100 citizens. Unlike civil centers in Empires Ascendant, villages in Mare Nostrum have low health and capture points, and cannot fire arrows. This makes it much more feasible to launch a successful rush in the early game. To grow your civil center's population, you have to build civic buildings like houses and temples and, especially in the mid-to-late game, promote trade between civil centers. As your civil center's population grows, it automatically upgrades to a higher level; first, to a town at population 500, then to a city at population 5,000, then finally to a metropolis at population 25,000. Each subsequent civil center upgrade has more health, capture points, and arrows than the last and, most importantly, unlocks the next phase in the game (i.e. your first town unlocks the Town phase, your first city unlocks the City phase, etc.). As your civil centers grow, it becomes increasingly more difficult to grow their populations with buildings alone, so building new civil centers and promoting trade between them becomes critical for phasing up (a civil center's population grows by about 2-3 citizens per unit of goods that arrive at the nearby market). This makes raiding your enemies' trade routes and capturing their nascent colonies (as well as defending your own) a more pivotal and engaging aspect of gameplay. There's a lot more great features I've added to the mod along the way (Siege Towers can capture buildings, every faction gets to build a temple to a "Patron Deity" that provides certain bonuses), which you can learn about in the README at the github repo: https://github.com/Mare-Nostrum-0AD/mare_nostrum. I'm going to make a tutorial soon, but for now I recommend getting a feel for gameplay by either playing a sandbox game or watching the AI play against itself for a match or two (the new AI, Delphi bot, is actually decent at the city-building part of the game now). Note that, because of the greater emphasis on building multiple civil centers, you should choose maps that are at least Normal sized, if not larger; each player should have enough space to build at least 3 civil centers at a decent distance from each other. To install, just clone the github repo I linked to above. It's currently compatible with the development (SVN) version of 0AD. I'm hoping to release an official A25 version on mod.io within a week of Empires Ascendant. Also, I'd really love for some of you to join in and contribute. I'm very much not an artist, so having some help on that front in particular would be great. Here are some screenshots of how the new civil centers look: An Athenian Village An Athenian City All four Carthaginian civil centers: Village, Town, City, and Metropolis I hope you all enjoy playing this as much as I enjoyed making it!
- 14 replies
-
- 12