Jump to content


Community Members
  • Posts

  • Joined

  • Last visited

  • Days Won


Everything posted by MoLAoS

  1. This is true but it somewhat defeats arguments that are functionally similar about other features. Like you can't build a boat with 10 mediocre trees. Or the fort model has a ton of wood compared to tree models. So regening trees/a forest over time would make sense as long as it was okay/balanced gameplay wise. Should be some consistency in discussion over mechanics choices.
  2. Ah you do a lot of your own art assets as well. Yeah I imagine that makes stuff take longer. My plan is probably to grab houses from one of the base game factions as well as use the HC structures for guild buildings. The units might be trickier. That way I can focus on the mechanics of the game.
  3. I was assuming you meant non-dynamic by hard coded so hyperbole confusion avoided. Yeah that code looks like a mess. I'm already having some trouble with the regular JS in the component section so that GUI stuff looks scary. I miss my sexy headers from c++. Headers with well defined make it so all code understanding problems for new programmers can be solved by moderate TextCrawler abuse. Of course you have to compile so it isn't all upside. I am a pro-composition anti-inheritance fanatic so the JS code is painful for me but only for personal preference reasons.
  4. You can see a, low quality, video of wizards being wizards from GAE/Mandate above. Only the one orange lightning bolt particle effect doesn't look like trash because I used generic attack skills from other units since I am not an artist. You have a fantasy mod? With magic stuff or just like the Illiad or something? Have a lot of people implemented magic stuff? I know HC kinda did though I haven't played it so I'm not sure how much.
  5. A few team members have been helpful when you account for the fact that they don't exist purely to serve my needs as FAQ minions. The changes I outlined here are primarily JS changes from what I can tell which technically falls under the purview of modding/scripting, very little c++ work should be involved, so it wouldn't really impact the public mod and therefore doesn't even require team approval. Some of the other changes not discussed in this thread might require some sort of approval. Note that the tag was modder feedback not dev feedback. Hyrule Conquest is a mod and would certainly qualify as a significant departure from 0AD even though they both use Pyrogenesis. On the other hand this thread has 82 views and no one voted on my poll so perhaps you have a good point or two Oh also I saw your post in the multi-attack thread. That is gonna happen. Half a dozen attacks for wizards. Skip to 1:55 or so for the shooty part. They get wrecked cause of a lot of demons but you can see their attack stuff. Also all the particles were scavenged from user mods, I don't really do art, so they look a bit unfancy to me. @ChronA
  6. There is a default stock when created but Guilds would be buying resources and producing and selling items or or spending gold or other resources on research and building guild buildings and recruiting heroes. In this particular case the player still makes some Guild decisions like whether to recruit heroes. That is how it works in GlestAE/Mandate. The Heroes have Majesty style AI. In my GAE fork I just exempted the units in the Majesty tech tree, essentially their version of mods, from the normal AI, and wrote a new Majesty style AI for them. I didn't test it a whole lot but you could mix regular AI controlled factions with both player and "enemy" Majesty factions. I did a game like that for funsies against the standard "Magitech" Glest tech tree factions.
  7. I guess 0AD doesn't have technically accurate combat injuries just health points but I saw an argument in the rgen resourcs thread about how trees wouldn't grow back in the time period of a skirmish and it seems like the same logic would apply to combat for broken bones and other serious injuries.
  8. Any particular reason we hard code a lot of stuff? I'm not saying there can't be a reason but it isn't immediately obvious to me.
  9. I mean my monitor isn't that excessively large and I have a huge space. If I set it to window and leave it at the default smallest possible size it does look like that. What is that like 800 or something?
  10. @MirceaKitsune(specifically) Resource regeneration is on my list. I'm already looking at various map object interactions. I'm planning on map object adjacency effects for building placement as well as building slots and tile type/object checks for foundations. Currently the game checks for cleared ground to allow placement but no reason you can't check other stuff. Enabling these functions in Mandate/GAE was quite easy but the pyrogenesis coding style is much more difficult for me to understand casually. I'm currently figuring out if I want to fork or do a major refactor vs more moderate changes. I probably won't fork unless something really messes me up. Just because I don't want to fiddle with low level stuff too much and forking would make it way harder to merge complex engine changes. I'm definitey going to be splitting several components and adding regeneration to resources would be comparably simple to other changes.
  11. @Stan`@Freagarach Am I correct that entity_id_t is functioning in place of pointers for passing stuff to the javascript? The JS code is really hard to understand because without defined variables I can't often figure out exactly what info I'm returning from queries. Like say I do the query of the units a player has into an array. Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager).GetEntitiesByPlayer(playerID) Suppose I have the pseudocode of: Requirements: vector<Upgrade*+count> Upgrades; vector<Unit*+count> Structures vector<Unit*+count> Units vector<Item*+count> Items Then I load each one from the JSON: // xml/json nonsense to load the 4 vectors vector<string/count> jsonUpgrades; vector<string/count> jsonStructures; vector<string/count> jsonUnits; vector<string/count> jsonItems; for (int j = 0; j < jsonunits.size; ++j) { for(int i = 0; i < world->faction->units.size; ++i) { Unit *check = world->faction->units[i]; if (jsonUnits.string == check.getName) requirements->addUnit(unit/count); } } //repeat for other requirement types In place of unit pointers in my JS vectors/arrays I'd be using the entity ids?
  12. @bb_ Okay so make a Guild component with that stuff and add a getGuild function to Entity? I think Entity is the base template that Unit/Structure adds to. Can I replicate the player/faction resource storage for buildings in the JS files? Like you build a Guild from the builder or faction menu and it costs 12000res 5000res 4000res and then stores 10000/4000/3200 in local storage and uses that rather than my resource storage to build buildings and units it "owns"? ____________________ Separately, do you know whether the map check for building is defined in C++ or JS? Like if I want to have buildings that can only be built on specific tiles or one that is built on a tree or rock or on some other map object, where is that code stored? In my Glest overhaul for instance I set up the "foundation check" code so some buildings can only build on tiles containing a specially tagged rock. So say a 4 by 4 set of tiles all with a rock entity of the appropriate kind. I also did an adjacency check. So the Pyromancers Guild if built next to a volcano gets a tag that opens up bonus options. I think I already heard that can be done in JS.
  13. Spoiler for personal activity stuff and open source experience: Anyway the engine is pretty close to some of the major features I wanted to use, especially dynamic mesh swapping/prop attachment, and that Hyrule overhaul showed you can do magic stuff pretty well. My first goal is to reimplement a bunch of key Mandate[GlestAE] features for Majesty stuff and get a functioning item system and advanced production possibilities. I've always wanted Majesty with deeper Guilds and more city building. Main Topic However the topic of this thread is unit stats. In Mandate I implemented layered "health" stats plus mana and a couple other stats. For my overhaul for pyrogenesis I'd like to advance farther than that. I'd like to set up a vector of highly customizable health stats, ideally you'd be customizing in xml and not js files. You'd have the basic health stat that functions like standard RTS health. Then you'd have an arbitrary number of optional health stats that you could customize. This is a pretty abstract description so I'll try to give a good set of examples. You can set the display name of the stat. So shield. You could use the custom tags + some associated values to set it up like the Protoss shields in Star craft. You could make shields that block specified damage types. So spell shield that blocks all magic but not physical attacks. You could do a shield that blocks all ranged attacks until it is used up. If you were doing a sci fi game you might want to make layered shields. The first layer could regen at 10/s but it is only 50hp. Second shield is 1000 hp but it regens at 1s. Not sure what the lore explanation would be for that but you could do it if you wanted. These shields would ignore non-listed damage types. In theory this would allow you to create an "ethereal" unit by having the base health not list crush/pierce/hack. Might confuse the AI though. In GAE and Mandate units have as many attack skills as you like and in Mandate specifically there is a damage calculation the AI performs to decide what skill to use. So a Wizard has several attacks with different cooldowns and mana costs and damage types and the Hero AI checks what the most ideal wizard skill to use on a particular enemy would be. Mandate also has a "resource-pool" vector that defines energy/stamina/mana w/e else you wanna use. That is a bit more straight forward. Also you can link resource pools to "health/shields/armor" so one unit in Mandate has a mana shield skill. I believe Health, Shields, and Armor can all be defined by a single vector. For sci fi you could use ablative armor that ablates, hehe, like health but it would take more or less damage from like lasers vs kinetic vs gravitic or w/e. Should also be relatively simple to add a +/- so fire damage could heal one kind of shield or something. The human context is irrelevant to the code. "Resources" would also be defined in a single vector with customization options. I am also planning to look at the damage system as well. I would like to add a malady system. DoT damage with like poison or disease magic is the iconic ability for one of the "Guilds". I also plan to give damage types custom options. Skills as well. Like for magic stuff: There is an Arcane spell school. One Arcane ability would allow you to ignore specific health/shield/armor elements in vector. XML would be like <ignore>[name of xml defined health/armor/shield]<ignore>. That way if I added an ability in enchanting called imbue that let a specific H/A/S change the resistance to a damage type it wouldn't conflict. One part of the magic system I implemented in my grand strategy game was attribute transfering. With a vector of H/A/S elements you could apply "bark skin" or something to someone. Instead of a resistance buff it would be a well defined ablative armor type thing. From my experience forking GAE to make Mandate there shouldn't be any difficulty defining the code so that the xml files don't need to be modified in "public". Obviously mods that change js files would be impacted. For upgrades, items in my case, and such you should be able to simply add a "stats" section to the XML which would be loaded then the js code would have a combine() function or something. A primary goal I have is to move a lot of unit/skill/item/structure/upgrade customization from the js files to xml. Just as a convenience factor. This stuff is all functional in my old Glest fork but sadly it is done purely with xml and c++ so I'll have to figure out an implementation for javascript. I'm going to look at changing the mesh/prop code to enable items, the same changes should also allow use by upgrades and promotions, to apply models to prop points dynamically. That is one of the key things I like about pyrogenesis, even with the variant system. I think it would be a big improvement to just employ dynamic changes, though. You'd still probably use variants for some stuff.
  14. Okay so I'd need to add C++ code but it would be mostly high level stuff about connecting models to prop points dynamically?
  15. So I'm trying to figure out the template files and the coding style is quite difficult for me. Both how stuff works in individual files and how groups of files interact. Part of it is probably that I am used to C++ but the organization is also just really foreign to the way I think of code. My current modification effort is to add a Requirements section to I think the entity component. How do I check whether a player has a unit created. Additionally is there an existing function to check if a specific building had a unit garrisoned. Also can you assign unit/structure ownership to other units and structures or only the player? My overall project is Majesty style and I need to be able to assign structures and units to the control of a "Guild". Like the Defenders(melee boys) Guildhall would own the main guild plus chapter houses plus all guild members plus for some of the more complex guilds various support buildings. Part of that is to make stuff easier for the AI. I'll also have to implement local resources. I think that part will probably be a bit easier than "ownership". class Requirements { private: vector<Unit*> structures; vector<Unit*> units; vector<Item*> items; vector<Upgrade*> upgrades; public: //get functions //add functions }; class Unit { private: Unit *owner; Requirements *requirements; public: //init //set/get Owner //Guild stuff private: //basically a clone of player resource code to enable limitations based on local building/guild wide resources }; That is how I would do it in C++ pseudocode. As you can see I've never met a problem that vector<*> can't be abused to solve. I'll have to dig up a way to do that in JS.
  16. But don't you have to hook things up in the actor files? That is what the word variants suggests to me. Like you can't have a set of, lets call them items, with models and set the JS code to stick the item model onto a prop point with an "equip" function, can you? This wouldn't really be described in the actor files in my personal conceptualization. It couldn't be because you'd want to be able to equip an arbitrary item to a prop point on an arbitrary unit model. Sure if you had a tech to apply a change to a "unit type" such that when you research the tech all units get it and you only have a few techs you could define a variant model. But you couldn't for instance just add a unit type to a tech that upgrades and not alter the unit template/actor model w/e at all correct?
  17. @azayrahmad@Stan`Is there any existing trac ticket for raw mesh swapping? My understanding of the OP is that they made models for each change. My plan for items is to have prop points in an ARPG style, something like: Head/Neck/Shoulders/Back/Core/Arms/2xBracelets/4xRings/Pants/Boots and ideally swap each item model onto the unit model based on what is equipped.
  18. Considering that the Phase technologies are already special snowflakes even in the JS templates I think you can just add a Phase part to the top UI. There is a big space to the left of the civilization icon. Just make it display like: Phase: [current phase] (Build X more of any structure with icon [phase number] to enable next phase tech) {Phase 1: Village (Build any combination of 5 structures with the [II] Icon to enable Town Research} Or whatever you want the description to say as long as it has the relevant info.
  19. I'm going to sleep now but I'm going to try and finish stuff tomorrow for detailed testing. What was the main issue with that diff? Did they not finish or not test or was it GUI stuff?
  20. Looked at that thread a bit. Won't be super useful probably unless @The Undying Nephalim comes back. They haven't been active for a month or so.
  21. Relevant to my topic in technical development, can we move garrisoned units Nydus canal style? Or even also portal network style. It would be a simple modification of source code if not but since I'm making a fantasy game on pyrogenesis it would be even more convenient if we could do tunnels and portals already or with JS modification.
  22. I'm putting together the component files in JS to get this to work. Although obviously items will have to wait till they actually exist. I also came across some interesting code for a 0AD version of another feature I added to GAE in my fork. Does the game already have, probably in mods?, a structure that can move units between 2 points, sort of like Nydus Canals in SC1? There was also a load command that allowed any of a set of structures to dump units from another, like a standard portal network. Since my planned mod is a fantasy one I'd really like to have these options.
  23. @Freagarach @asterix @wowgetoffyourcellphone Is this a valid structure? "<optional>" + "<element name='Requirements' a:help='Optional name of requirements that must be met before the entity can be produced.'>" + "<element name="Technologies">" + "<attribute name='datatype'>" + "<value>tokens</value>" + "</attribute>" + "</element>" + "<element name="Structures">" + "<attribute name='datatype'>" + "<value>tokens</value>" + "</attribute>" + "</element>" + "<element name="Units">" + "<attribute name='datatype'>" + "<value>tokens</value>" + "</attribute>" + "</element>" + "<element name="Items">" + "<attribute name='datatype'>" + "<value>tokens</value>" + "</attribute>" + "</element>" + "<text/>" + "</element>" + "</optional>" + Then the data in the file would be like: <requirements> <technologies> <technology name="some tech1"/> <technology name="some tech2"/> </technologies> <structures> <structure name="some struct1"/> <structure name="some struct2"/> </structures> <units> <unit name="some struct1"/> <unit name="some struct2"/> </units> <items> <item name="some item1" value="10"/> <item name="some item2" value="5"/> <item name="some item3" value="2"/> <item name="some item4" value="1"/> </items> </requirements>
  24. But then you need to predict the preferences of various players. Healthy is so binary. Do we only want 85%? What if 10 units would have made a difference and you have 20 inside but only 4 are 85%+ and then another 6 are 65%+. So your 4 guys get wrecked by the 7 from the enemy. And you still can't differentiate then between 10% and 40%. Even if we had 2 categories like "Healthy" and "Above Half". I guess we could assume no difference between 50%- and 10%? Maybe people are playing the game on their iPad so they have very limited screen space? Otherwise why not just show all the units.
  25. Additionally most buildings allow far less than 20 units inside. 5 in the towers yeah? Then you mouse over to get a tooltip for the individual units. I guess you might have to increase the size of the panel if you had 20 of the same unit or something. In your example for 8 or less or w/e you could have a line down 4 pixels to a big box and in the big box you could fit 8 of a single unit type as individuals. I say 8 cause your image has 2 rows and 4 columns left over. But obviously you can jusst change stuff to some other arbitrary number.
  • Create New...