Jump to content

Palantius

Community Members
  • Posts

    37
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by Palantius

  1. Yep, 100% blender using cycles (blender render would maybe have been better for this task)
  2. Hello, I thought that I would just try your idea ludo and reply when I was done with it. However, it seems that it might be a bit longer. Just want to say that I really think your idea is worth a try, and I'm working on it. But it might be some weeks until I can show anything though... The reason being that (except for that I need to put it aside to get a fresh perspective on it) currently, the lightning has kind of two separate function: both to lighten the texture correctly and to lighten the shape (bevels) correctly. I The problem is that when I increase the bevel it's just a bright, one-colored bevel, and when I try to adjust the lightning to fix this, the texture looks worse. It's a tough situation... :-/ I always try to wait with replying until I got something to show, but sometimes I'm just to optimistic with the time, and I end up not replying at all in a very long time...
  3. Yes, this is something I would do in my mod. However, there are many things that I think can and should be changed in the main-game, so I'll try and work on these stuff first and then I'll mod what I think should be changed after that. This is a comment by Sander in his patch as a reply to a comment that changing animals vision to 0 could be seen as a hack: And I totally agree with the solution, but I want to point at that the solution still was a hack, and the reason a hack like that had to be the solution is because hunting is very unrealistic and way too technical - you can really feel the "gamyness" when hunting: "click to get points". Edit: Yeah, my point... My point is that 0 ad is not a hunting game. Therefore, any implementation of "hunting" will be full of "hacks" so that it would fit the game. Then you don't have hunting, but some sort of mini-game.
  4. I see that you replaced "hunting" with "resource gathering" in my post, but I'm not sure I get your point... The difference between hunting and other resource gathering methods is that hunting requires far more micro-management. If you seriously mean that all resource gathering methods should be removed, then I must say that it's an interesting idea that deserves some thought! What about having resources that you "capture" and what you can build in some way depends on the number of captured resources. This puts a lot more focus on expanding, which in my opinion is a central aspect in any RTS! However, back to the topic of hunting - why not just remove the possibility to hunt? The extra time the player gets could be used for strategic planning. Also, I've played a game yesterday in which a lion annoyed me very much by making my army go after it while I wanted my army to go after my opponent. It's a small problem, but hunting does little good for the gameplay, so my point is, hunting does more harm than good even if you don't think about the micro-management aspect.
  5. I don't really know if this is an answer to your last post or not, but I'm going to present my view on options in strategy-games (the part that is relevant to this topic, so I'll leave out stuff like non-linearity and parallell systems (hehe, I've learnt some fancy game-design-words ) ). The starting point is that any option that could be used must be used if it would be the best option in the situation. If you need more food and hunting would help, then you'd have to hunt even if you don't like to do it. The nature of strategy-games is that the best possible move must be made. However, I found that there are exceptions to this rule: One is that, if you have little experience with a certain situation, you should avoid it (and the opposite if you know that your opponent has little experience with a certain situation). This is because the players are a part of the game. That is quite natural and can be found in almost all strategy-games, for example, in chess, you stick to the openings you know. This exception isn't really relevant to this topic, but the next exception is. If a "move" is the best possible, it could also be a good idea to avoid it if it's to time-consuming. This is relevant since 0ad is a Real Time Strategy-game. So basically, the question the player would stand in front of is: do I have the time to do this even if it's good from a strategical point of view? And since it's not thinking that would take up the precious time, but instead micro-managing, the player finds himself playing a game that is part strategy-game and part micro-managing-game. "Should I attack that building? Maybe not, then I can't hunt at the same time..." This is of course natural (in chess, to physically make a move takes time and could be used against your opponent if he only got some seconds left), but it should be as small as possible, after all, the best strategist should win, not the fastest "clicker". ... there are probably more exceptions ...So what I'm trying to say is that micro-management must be avoided even if it's "optional".
  6. FPS-mode! That would be sooo cool! And you could by cool weapons like bombs and stuff! And some animals could be super strong and have superpowers! But seriously... I don't see what function hunting fulfills in a strategy game - it doesn't really require any strategical planning, and on the contrary, it takes away the focus from strategy and just requires more micro-management. I know a lot of work has been put down to that aspect of the game, but I just can't see how to justify such a requiring task for the player when it doesn't add any (significant) strategical depth to the game. Well, that's my opinion...
  7. I've been quite busy lately, but now I'm back! Upgrading a structure based on town phase is quite useful (especially for centers) and would be relatively easy to implement. But it would only make sense to implement it if there were models for each upgrade, so maybe it's too early for that. I've been thinking about my idea, and I've come to the conclusion, that implementing it would require very much work on other areas to make everything fit together. And if I would like to put that much effort into experimenting with the gameplay, then I could even try bolder things. After all, scripting in 0ad allows for very much. So I guess that I'll put the upgrade-functionality on hold. However, something I would like to say, is that I believe gameplay design deserves much more attention. At least the game design document is, in my opinion, insufficient. I know these complaints are very unspecified, but I'll get back to that topic soon - I'm currently reading about game design theory (it's very interesting!).
  8. It's been a while since my last post, but that's because I've been quite busy lately. But now I at last got some time to spend on 0ad! Well, now I see that the grey logo doesn't really really look that good. It's very easy too not see your work as it actually looks when your working on it, so feedback is really useful. Thanks! I made another attempt, but it feels as if I'm running out of ideas. I hope that my tries at least could be used as examples for when someone else would like to give it a try. I think a painted logo could be quite interesting. I'll also attach the project if anyone wants to play with it, but beware, I's quite messy! logo.blend.zip
  9. I don't even know what I did with my ticket, I just wanted to upload the code... I would really need help with adding a button to the GUI that would allow for upgrading the selected building. The function that should be called is UpgradeStructure, and it works. Here's my current progress on Upgrade.js: I've been looking at how the gate works, but there is so many files that I can't find everything and understand how it all fits together. And the documentation is "mostly outdated". I really need help with the GUI!
  10. I actually think it looks great! To make it easier to see the letters one must look at the holes, so with a good background that would emphasize the holes in some way, it could look really good. However, the current logo-design has been used for many years, so it might be a good idea to stick with it. Here's an update:
  11. I'm a hacker! http://trac.wildfire...com/ticket/2128
  12. I really want to thank you for the feedback on my code! The directDeploy does what I want it to. A problem is however that the AI does not know how to handle it, it just breaks down and cries. The tabs were converted to spaces when I posted it on the forum, so my code is with tabs. And I have problems with creating a patch, since I'm using Ubuntu and I tried something called RabbitVCS, however when I want to set up a checkout according to the instructions, it just crashes But I really don't want to think about that at the moment... I want to make progress on the mod. It's been a while since my last post, but that's because I've been quite busy lately, not because but I have given up! I've been trying to implement building upgrades, but it's really hard... I've also been spending some time to get better at 0ad and get a better understanding of it. Well, yeah, it's true that talk is cheap, but 0ad is cheaper Actually it's not just talk, the entire point of this mod/project is to try to find the most optimal gameplay from a strategic point of view and really go far with experiments on the gameplay. Therefore, the most important thing to do at this early stage is to make analyzes and doing some brainstorming. I'm thinking of calling the mod "0ad SRTS mod" for "strategic real time strategy". Provocative enough?
  13. Instead of a day/night cycle, I think it would be better with seasons. This is also a planned feature, see: http://trac.wildfiregames.com/wiki/Background%3A_Seasons. There are several advantages to have seasons instead of a night and day cycle, most of them are connected with the visual aspects. Nights for example could be to dark, and it makes more sense if a game in which you build cities and fight great wars spans over two or three years instead of ten days. I do however agree with you that the seasons (or day/night cycle) should affect the gameplay. But all I can think of, is that during the winter stamina (when implemented) should be drained quicker. Also take a look at http://trac.wildfiregames.com/wiki/Background%3A_Weather. Maybe the weather would change once each season and affect the gameplay (in contrary to the design document). More gameplay effects could be added this way, for example, fog and snow would reduce the LOS (line of sight). Resource gathering speed could also be affected some way. But if you're not interested in seasons and would only like to do a day/night cycle, I believe that would be a great feature that would probably be added to the game as an additional option.
  14. So, I've been scripting and I've finished the "directDeploy" functionality, and with the entityLimitsChanger-script already done (http://trac.wildfire...com/ticket/2076), the only functionality left is to make so that structures can be upgraded. I've posted my progress on structure-upgrading in a previous post, and there are some things left to do: Make sure to copy all attributes to the upgraded instance, one that I know is missing is the production-queue. GUI: add a button that allows to upgrade the selected structure. Restrain building of structures based on the size of the highest leveled version of the structure.Note that this goes both ways: you can't build if there is to little room I got quite frustrated with how slow I script (approximately 2 lines/hour...), so I'm asking for help with the upgrade-script, and this is a functionality that could be useful in the "real" 0ad as well. This time I could use to work on some models and some easier scripting. Attached you'll see some models for the Athenian civ-centre with three upgrades. Modelling those only took me a few hours! (The models are however not finished.) I don't really know what this project will be and how much time I can spend on it in the future, but since I've got some things already done, maybe it's time to think of a name for it and stuff like that. I'm currently thinking "0 a.d. GEM" (=gameplay experiment mod), but I don't know... any ideas? Also, is it possible to get a sub-forum in the Game Modification-forum? I'm planning to start many different threads and doing a lot of writing. Here is my "directDeploy"-script: (I tried to make a patch of it, but I got stuck on the first step)
  15. I don't want to be annoying and ask for help every time I stumble upon trouble, but I really do need help... Notice anything wrong? ProductionQueue.prototype.OnOwnershipChanged = function(msg) { asdasdasd if (msg.from != -1) return; //Deploy units once the structure is built //if (this.template.DirectDeployUnit && this.template.DirectDeployCount) //{ var directDeployCount = +this.template.DirectDeployCount; var directDeployUnit = this.template.DirectDeployUnit._string; // Replace the "{civ}" codes with this entity's civ ID var cmpIdentity = Engine.QueryInterface(this.entity, IID_Identity); if (cmpIdentity) directDeployUnit = directDeployUnit.replace(/\{civ\}/g, cmpIdentity.GetCiv()) //directDeployUnit = directDeployUnit.split(/\s+/); //Deploy the units this.AddBatch(directDeployUnit, "unit", directDeployCount, ""); this.SpawnUnits(directDeployUnit, directDeployCount, ""); //} }; Well, the engine doesn't notice it, which should mean that the function OnOwnershipChanged never got called, which I don't understand why. Also is there a "trace"/"print"-function that could be used to print text to the console instead of my current "asdasdasd"? Thanks again!
  16. I've been working on the DirectDeploy (what do you think about the name? ) But I'm facing quite complicated issues... First of all, I must say that I changed the approach. Instead of just spawning the units when the structure is complete, a "special" batch of the units is added to the structure's productionQueue. Both approaches gives somewhat different errors, but I believe that they have something in common. This is the new code in the init of ProductionQueue.js: //Deploy units once the structure is built if (this.template.DirectDeployUnit && this.template.DirectDeployCount) { var directDeployCount = +this.template.DirectDeployCount; var directDeployUnit = this.template.DirectDeployUnit._string; // Replace the "{civ}" codes with this entity's civ ID var cmpIdentity = Engine.QueryInterface(this.entity, IID_Identity); if (cmpIdentity) directDeployUnit = directDeployUnit.replace(/\{civ\}/g, cmpIdentity.GetCiv()) //Deploy the units this.AddBatch(directDeployUnit, "unit", directDeployCount, ""); //this.SpawnUnits(directDeployUnit, directDeployCount, ""); } The error is: ERROR: Script message handler onCreate failed ERROR: Error in timer on entity 5398, IID 73, function TimerHandler: TypeError: cmpPlayer is null (10)@simulation/components/ProductionQueue.js: 434 ("units/maur_support_female_citizen", "unit", 10, "")@simulation/components/ProductionQueue.js:220 [var timeMult = this.GetBatchTime(count);] ()@simulation/component/ProductionQueue.js:92 [this.AddBatch(directDeployUnit, "unit", directDeployCount, "");] (5398,1)@simulation/components/Foundation.js:264 [var building = Engine.AddEntity(this.finalTemplateName);] (5422)@simulation/components/Builder.js:61 [cmpFoundation.Build(this.entity, rate);] ([object Object])@simulation/components/UnitAI.js:2145 [cmpBuilder.PerformBuilding(target);] ([object Objects],[object Object])@simulation/helpers/FSM.js:274 ([object Objects],0])@simulation/components/UnitAI.js:2946 ([object Object])@simulation/components/Timer.js:93 WARNING: JavaScript warning: simulation/ai/common-api-v3/shared.js line 291 reference to undefined property this._entities[id] ERROR: JavaScript error: simulation/ai/common-api-v3/shared.js line 291 TypeError: this._entities[id] is undefined ([object Object])@simulation/ai/common-api-v3/shared.js:291 ([object Object])@simulation/ai/common-api-v3/shared.js:196 As I understand it, there might be a problem using the init in the ProductionQueue.js because it loads before other important scripts. That's why it can't create a cmpPlayer, and that's why it can't define the playerID for the units/the batch. But that's just a guess, I don't know so much about 0ad scripting. Thanks!
  17. Thanks Sander, you've saved me many hours with your help! However, I still need guidance to come somewhere with scripting. At the moment when I'm thinking about scripting my brain just turns into some sort of a pudding, so I've probably missed all the important questions about what I would need help with... Progress on "direct deployment": ProductionQueue.js: "<optional>" + "<element name='DeployUnit'>" + "<attribute name='datatype'>" + "<value>tokens</value>" + "</attribute>" + "<text/>" + "</element>" + "</optional>" + "<optional>" + "<element name='DeployCount'>" + "<data type='nonNegativeInteger'/>" + "</element>" + "</optional>"; [...] Inside the init: if (this.DeployUnit && this.DeployCount) { this.SpawnUnits(this.DeployUnit, this.DeployCount, this.metadata); } template_structure_civic_civil_centre.xml: <DeployUnit datatype="tokens"> units/{civ}_support_female_citizen </DeployUnit> <DeployCount>10</DeployCount> Nothing happens... no idea why I just guessed with "this.metadata", I have no idea what I'm supposed to pass into SpawnUnits. Progress on "structure upgrades": Upgrade.js: function Upgrade() {} Upgrade.prototype.Schema = "<element name='Entity'>" + "<text/>" + "</element>"; Upgrade.prototype.Init = function() {} Upgrade.prototype.GetUpgradedTemplateName = function() { return this.template.Entity; } Upgrade.prototype.Upgrade = function(upgradedTemplateName) { // Create the upgraded entity var upgradedStructureEntity = Engine.AddEntity(upgradedTemplateName); // Copy parameters from current entity to the upgraded one // Position and rotation var cmpCurrentStructurePosition = Engine.QueryInterface(this.entity, IID_Position); var cmpUpgradedStructurePosition = Engine.QueryInterface(upgradedStructureEntity, IID_Position); if (cmpCurrentStructurePosition.IsInWorld()) { var pos = cmpCurrentStructurePosition.GetPosition2D(); cmpUpgradedStructurePosition.JumpTo(pos.x, pos.y); } var rot = cmpCurrentStructurePosition.GetRotation(); cmpUpgradedStructurePosition.SetYRotation(rot.y); cmpUpgradedStructurePosition.SetXZRotation(rot.x, rot.z); var heightOffset = cmpCurrentStructurePosition.GetHeightOffset(); cmpUpgradedStructurePosition.SetHeightOffset(heightOffset); // Ownership var cmpCurrentStructureOwnership = Engine.QueryInterface(this.entity, IID_Ownership); var cmpUpgradedStructureOwnership = Engine.QueryInterface(promotedUnitEntity, IID_Ownership); cmpUpgradedStructureOwnership.SetOwner(cmpCurrentStructureOwnership.GetOwner()); // Change upgraded structure's health to the same percent of hitpoints as the structure had before the upgrade var cmpCurrentStructureHealth = Engine.QueryInterface(this.entity, IID_Health); var cmpUpgradedStructureHealth = Engine.QueryInterface(upgradedStructureEntity, IID_Health); var healthFraction = Math.max(0, Math.min(1, cmpCurrentStructureHealth.GetHitpoints() / cmpCurrentStructureHealth.GetMaxHitpoints())); var upgradedStructureHitpoints = Math.round(cmpUpgradedStructureHealth.GetMaxHitpoints() * healthFraction); cmpUpgradedStructureHealth.SetHitpoints(upgradedStructureHitpoints); //... Engine.BroadcastMessage(MT_EntityRenamed, { entity: this.entity, newentity: upgradedStructureEntity }); // Destroy current entity Engine.DestroyEntity(this.entity); } interfaces/Upgrade.js: Engine.RegisterInterface("Upgrade"); Not entirely finished, not yet implemented copying the production queue How would you add a button for upgrading a structure, any ideas? How can I learn more about scripting? Why are interface scripts necessary? What are they? How do you call a function in one script from another? Can you turn of the shroud of darkness and keep the fog of war? I don't really ask for answers on all my questions, I just need to get a little help so that I can get one script done. Thanks in advance!
  18. Well, with point 5 (to fix graphics and gui-stuff for the worker unit) I had in mind to use existing graphics of "workers", you know, when you tell a unit to work its graphics are changed into a worker. Also, I know that there will be much redesigning, but the way 0ad handles modding, maybe it's manageable. However, you just gave me the idea that I should try to make a somewhat complete mod where I change only the most important and central parts of my idea. The only new thing in this version would be that there is a specific worker unit that is the only unit able to gather resources, and civ centres deploy units in this new, special fashion. I realize that I haven't really explained how I see how the mod would make the game better, but only said what and how I think some things should be changed. So, I'll soon get back to my idea with a minimal mod and then try to make it as convincing as possible and I'll really try to sell it then. At the moment however, I need to work on getting the basics of the mod working. I'm currently trying to add the possibility for structures to directly deploy units when built (and without it costing resources even if normal training does). However, it's hard and I would really appreciate any help. I would at least now in the start of my modding career need some help with scripting because I'm both inexperienced and I just want these main "things" (direct deployment and basic structure-upgrading) out of my way as soon as possible. This is the way I think the xml code to add this possibility to structures should look like: <UnitSpawner> <UnitType>units/{civ}_worker</UnitType> <Count>10</Count> </UnitSpawner> So I created a file called UnitSpawner.js in the components folder. Currently I only have this: (is the Schema correct?) function UnitSpawner() {} UnitSpawner.prototype.Schema = "<element name='UnitType'>" + "<attribute name='datatype'>" + "<value>tokens</value>" + "</attribute>" + "</element>" + "<element name='Count'>" + "<data type='positiveInteger'/>" + "</element>"; UnitSpawner.prototype.init = function() {}; So what I mostly need help with is: How to actually spawn the units. I've found the SpawnUnits function in ProductionQueue.js, but should and could I use it and is it even possible to access it from my other script? How to know when a building is build (or upgraded). I found a function called isFinished in Foundation.js, but, again, can I use it from the other script? Also, anyone has any ideas on how to implement possibility to upgrade buildings? I'm thinking of simply replacing the building with a new one that has has the old as parent.
  19. I believe that it's very important for 0ad itself that experiments with the gameplay are conducted. And that's just how I view this mod, it's more of an experiment for 0ad than a separate mod - that's why I'll do my best to convince you all to implement the changes in this mod to 0ad itself. If that won't happen despite my efforts, then I'll make sure my mod becomes more popular than 0ad I won't upload the mod yet, because it's not really playable (for example, the AI doesn't do anything) but I'll update on my progress so far: Removed starting units for all civs. The idea is to only start with workers, no more units than that. Created a worker-unit. Currently it uses a female actor, but it should be a male actor that looks like a worker. Also, only athenians has the worker. Training restriction added to workers. Implemented that patch from sanderd17, so now each civ-centre increases worker limit by 10. What I'll do next: Make buildings deploy units directly so that you don't have to train units. Make buildings upgrade-able (basic implementation). Removing food, aggressive animals and remove mills. Cleaning up some gameplay elements in general. Set a minimum of 5 units to build civ-centres. Fixing graphics and gui-related stuff for the worker unit and make one for each civ. Adjusting some values, mainly building costs. Create an example map. Fix the AI (it must be updated to work with the changes). After this (approximately) I will make this mod available, meanwhile, I'll just report on my progress.
  20. Thank you fcxSanya and sanderd17! That patch is really valuable! I'm working on implementing this now and creating a worker-unit, and I'm planning to as soon as possible upload a patch (or something). I'm actually starting to get interested in learning to script and mod! I'm also wondering if there is a way to turn of the shroud of darkness but still keep the fog of war. I've been looking around for this, but haven't found anything. Any ideas? Again, thanks for the help! I really appreciate it
  21. Ok, so I have been looking around the source code and scripts to implement this idea. I've found some interesting files, but actually, I don't understand any of it. Could anyone please help me understand this: I found a file called "TrainingRestrictions.js" (in public/simulation/components) which might be what I need to fix step 1 (to set population limits for each unit-type). However, in the file I don't see anything that would allow to set maximum values for each category. In "template_unit_hero.xml" I found: <TrainingRestrictions> <Category>Hero</Category> </TrainingRestrictions> But where is the actual limit stored? Ans is there also any way to make structures increase the training-restriction-limit? So I looked in "template_structure_civic_house.xml", but I only found this: <Cost> <PopulationBonus>5</PopulationBonus> <BuildTime>30</BuildTime> <Resources> <wood>75</wood> </Resources> </Cost> Which made me think, why would the population amount and training-restriction-categories be treated differently? (Or are they?) Aren't those basically the same thing? Wouldn't it be better if the population would be treated as a training-restriction and be placed in the same file? And why wouldn't the default limits not be stored in that file or a template file? Edit: I found "player.xml" that contains "limits": <EntityLimits> <LimitMultiplier>1.0</LimitMultiplier> <Limits> <CivilCentre/> <DefenseTower>25</DefenseTower> <Fortress>10</Fortress> <Hero>1</Hero> </Limits> </EntityLimits> But I still wonder, how can structures increase these limits?
×
×
  • Create New...