-
Posts
3.399 -
Joined
-
Last visited
-
Days Won
76
Everything posted by wraitii
-
Which is kind of dumb because OSX is where a remake would be needed (I don't think 10.8 can play it anymore).
-
Doubts about how Postmessage works
wraitii replied to Malcom's topic in Game Development & Technical Discussion
I believe that components are determined by the templates. I've never tried to add one at runtime, it might work, look for functions in ComponentManager.cpp (the ones starting with script_ in particular as they're linking JS and C++). (I'm not too knowledgeable about that particular part of the code either, I must say ) -
Doubts about how Postmessage works
wraitii replied to Malcom's topic in Game Development & Technical Discussion
I'm not quite sure I understand what you call the "container entity". Basically all entities have components associated with them (some more than others: some entities have no "UnitAI" component for example). And when you call Engine.QueryInterface, you provide an ID (the ID of the entity) and a component definition(it's actually a number). The component manager will then return the right one. To get the components associated to an entity, I fear you'll just have to try each of them (check GUIInterface.hs, the "GetEntityState" method). -
Doubts about how Postmessage works
wraitii replied to Malcom's topic in Game Development & Technical Discussion
That's actually something that is quite not-obious-at-all (and don't be afraid to ask anyway). So basically calling "PostMessage" will trigger Script_PostMessage in source/simulation/system/componentManager.cpp . This will in turn trigger PostMessage (this time in the c++). Now the c++ "PostMessage" will iterate over a list of all components of that entity that subscribed to such a type of message (remember that each entity has its own subset of components. Things like the ResourceGatherer Component are actually created for all entities). For each of these Components, it will call the c++ function "HandleMessage". Usually this was automatically defined by a macro on creation, which calls "On--Whatever the message type--()" (like onResourceSupplyChanged() for example). Thus the JS function gets called. So here's your link between AIProxy and ProductionQueue: one entity has both a AIProxy and a ProductionQeeue Component. The Production queue will "PostMessage", what I just described above will happen, and AiProxy will see "OnWhatever()" called. (note: I'm pretty sure I'm right about this, but I may have said a few things that are wrong, so take it with a grain of salt). -
Okay, then I'll probably change that in my next commit. I just committed one that fixes most of the logic errors which I know of (slight fixes in economy, attack plans and defense), also makes the AI gather food with cavalry (to some extent). Though it changes CcmpAIManager recompiling is not necessary. The AI should send a chat message to its teammates when it starts an attack. Please report if this works incorrectly. I think next I'll work on a difficulty system with GUI support and possibly a resource handicap (I'm thinking the "hard" mode would have none, the "medium" one would have some slight handicap, the "easy" one a strong handicap, and there could be a "very hard" mode where the AI gets additional resources). I think this should also wait until this is committed (leper reviewed it a bit, should be mostly good) as this could help AIs slightly. And I'll change Aegis to default AI at that time. That'll probably be it for the time being. edit: chatting seems slightly broken, will fix.
-
Status is "needs to be done but I've given it a shot already and it should be easy enough using the Configure screen. Might be changed later for a different system but for now it'll do. (and obviously I do mean after a few more days of testing.) Fabio: that cavalry issue is actually not what I was talking about, but that's a good point nonetheless.
-
Foundations under attack (discussion)
wraitii replied to Yves's topic in Game Development & Technical Discussion
The 100% health method has been committed as of [13263] -
I like the frozen-time approach. It'd have to be done correctly tough. Perhaps similarly to B&W 1: the camera is in outer space, aims for Earth, and as you finally come down enough to see the units, frozen time with some animation to show it and a little music to go with that... And then Unfreeze as the camera gets hit by a catapult rock and crashes to the ground, only to see two units fight it out, and the the 0 AD logo comes in. Just an idea. Definitely not high priority for now but a good cinematic intro can go a long way to make the game memorable. I know I'll remember AOE1's intro forever.
-
Okay, light update to fix a few issues that popped up. Fabio, readme.txt has been updated (Never knew about that file ). Yves, this should fix the two bugs you reported above. 1 definitely is (it was actually faulty logic when the AI reached max pop), 2 should be mostly. I've slightly changed building placement, might help the pathfinder. (also reverted accidentally committing a profanity into svn. Sorry bout' that.)
-
Yeah, I know about 1. I've made the AI place buildings a little less far apart again, so this kind of happen. Normally attack plans should detect they are stuck and disband after a while (can be 3 minutes). But I should probably just place houses closer together. Thanks for reporting 2 though, I had forgotten about that one.
-
Changes committed to svn. Also added the support for "-autostart-civ" to set the civilization at start. Requires recompiling. So basically the defense manager should react much better. Garrisoning should mostly happen when it makes sense, and the units should not attack you just because you stepped in their territory. Furthermore I did tons of change to the attack manager to make it actually able to attack. Note that the AI absolutely sucks with ballistas. Any civ that has rams will work much better (that's basically all of them but Athen, I think). The AI should be able to actually destroy its opponent if it takes the upper hand (seen it done in 30 minutes. Usually done by 40 minutes against qBot. Even if it has 5 fortresses to tear down). The problem of idle units doing nothing is also gone. Aegis is still no rusher (earliest attack will be around 13/14 minutes) but it will generally attack every 3/4 minutes after, with increasingly sized waves if you don't kill it (after 25/30 minutes, they get seriously dangerous). It seems to get stuck sometimes when attacked, will look into it. (also, did a benchmark with a slightly different config.js: Aegis reaches 300 units in 21 minutes.)
-
Yves: tried to reproduce the error, couldn't on that map because there were other errors that I fixed. It does happen to me in some cases, but it doesn't seem too reproducible or annoying. If you find a scenario where this happens again, do tell (or a RM with a seed). I've been fixing tons of stuffs, and I think you'll find Aegis is much more efficient. Here's a little screeny of a 1v1 Aegis/Aegis (Sparta v Rome) which Aegis won (by destroying everything that Sparta had) at exactly the 40th minute. The big screenshot is at around 33 minutes, showing the maximal development of both players (that attack by Rome actually failed, but weighted too heavily on Sparta which was lagging behind since the beginning.)
-
Note that there is already such a sound in the data, in audio/interface/alarm.
-
Might also use updated libraries and things like that make it run faster and better on modern hardware, though.
-
Sharing trading gains [discussion]
wraitii replied to quantumstate's topic in Game Development & Technical Discussion
Seems like it'd start getting really complicated to balance if we go down that road. -
Using a percentage for armour (discussion)
wraitii replied to quantumstate's topic in Game Development & Technical Discussion
I must say, exponential armor seems both cleaner and more elegant to me too. -
(just for fun, a little comparison between "now" and "then"). A screenshot I had posted in early august, back when I had just started work on what would become Aegis, of a victory against qBot on the RM Continent (I was blue, did nothing on purpose. qBot was red, Aegis green. Can't see the timer but it was at 41 minutes). Screenshot of the same thing happening now (aegis blue, qBot red). (You'll also notice Aegis sucked at attacking. It had won by 25:00).
-
-___- That's me being stupid when committing this morning and accidentally reverting a line. Sorry bout that, just change "if (callconstructor)" to "if (hasTechs)" in the meantime. Will fix in 1 or 2 hours. Edit: ah nevermind, I'll actually do it right now... Edit2: and done. Pureon: exactly my opinion, but I don't think it deserves a "Initializing AI" screen unless we actually did this for the whole process.
-
[FIXED] JavaScript ERROR: simulation/components/GuiInterface.js line 94
wraitii replied to lulo's topic in Bug reports
Fixed as of now.