Jump to content

bb_

WFG Programming Team
  • Posts

    262
  • Joined

  • Last visited

  • Days Won

    3

Everything posted by bb_

  1. A player can't change simstate, i.e., all data there is in the game, other than he is supposed to (i.e., send commands). This includes changing unit stats, accuracy etc. Any player who tries to change it will instantly OOS (Out Of Sync), and hence will be noticed by all other players. So it is very easy to spot those. In A23b there is/was a slight issue where observers could change the simstate, which they are not supposed to do. This issue has been fixed upstream. The issue of illegal information, however, persist and while there are some measures in place. It will be really hard, if not impossible to fix that completely. Actually part of the problem here is the fact we are Open-Source. If there is anyone knowing some solution to this, feel free to send me a PM.
  2. An even better example is the "survival of the fittest" map. You should indeed be listening to the onOwnershipChanged messages. First find some way to filter the 5 entities (probably give them some identity class) and onOwnershipChanged you should be able to do the required checks. Another option is to look at CaptureTheRelic.js victory condition and do the same trick there (you probably can reuse that code, just need to change a class)
  3. minrange is easy, however "tell them to switch" is more complicated. See #252. We don't have a ammunition system (yet) so this might be more work.
  4. This work sounds really promising. Feel free to propose your improvements (maybe split it up a bit) as patches on https://code.wildfiregames.comfiregames.com. Especially things like better naval and worker elephant handling are more than welcome in the vanilla petra bot.
  5. The related ticket is https://trac.wildfiregames.com/ticket/995. The patch I uploaded there is rather outdated and probably heading in the wrong direction. We do have some related code in the code base: the code handling splash damage on catapults/boltshooter and deathdamage of the iber fireship. Probably a proper implementation consists of creating a new component handling the trample. This is implemented in https://code.wildfiregames.com/D1838
  6. I guess the AI is trying to build that foundation, but can't reach it due to the water. Perhaps it didn't have the recources for a new one? If you happen to have the replay where this happened, feel free to create a ticket on our trac reporting the issue.
  7. D14 probably won't help too much in this case (maybe a bit though). I expect the unitMotion rewrite already in svn to do much more good. It seems the problem here is that a lot of units clutter around the ele and keep pathing while they can reach the ele (due to the units standing in the way).
  8. In 0ad same units are equally strong, independent of the civ, race, colour etc: Just got a bit worried about both their lives now...
  9. How hard would it be to generalise the capture mechanism to allow an attack to give the cp to any player? Sounds like a nice generalisation
  10. You can pm or ask here and ping me (the latter has the advantage that everyone can benefit)
  11. Calculating the distance between two units is fairly easy: The distance between the centres of two units can be computed by querying the position components and ask for the exact positions of the units. If you want to compute the distance between a unit (with obstruction, like you have with the walls) and a point or another unit, you should be able to use one of the following functions in the obstructionManager: /** * Returns the distance from the obstruction to the point (px, pz), or -1 if the entity is out of the world. */ virtual fixed DistanceToPoint(entity_id_t ent, entity_pos_t px, entity_pos_t pz) const = 0; /** * Calculate the largest straight line distance between the entity and the point. */ virtual fixed MaxDistanceToPoint(entity_id_t ent, entity_pos_t px, entity_pos_t pz) const = 0; /** * Calculate the shortest distance between the entity and the target. */ virtual fixed DistanceToTarget(entity_id_t ent, entity_id_t target) const = 0; /** * Calculate the largest straight line distance between the entity and the target. */ virtual fixed MaxDistanceToTarget(entity_id_t ent, entity_id_t target) const = 0; You can query them from JS using Engine.QueryInterface(SYSTEM_ENTITY, IID_ObstructionManager).fooDistancefoo(foos) Hope this helps
  12. As you can see in the graph 0ad owns approximately 35k USD. There was 865,.28 euro in a Flattr account, but that got absorbed in the bigger SPI account we have.
  13. You copy paste it in the legal waiver thread linked above
  14. Welcome!! The legal waiver is the easy question: copy paste that message you see numerous times in the thread and post it yourself. If you have programming questions feel free to ask, maybe some programmer can help in that aspect if there are changes required. Just know: I can't do art...
  15. You can directly download the game as-well, just use the link in the text, below the torrent button
  16. The down-left imag eseems to fall a bit out of tone, since it is dark/foggy, maybe it would help if you switch positions of the two images on the right, or put the down left one on the right, since the background is darker there EDIT: also the website url, might want a more prominent place
  17. You should indeed look at the wallbuilder code (Walls.js). IIRC the short/medium/long segements are already very similar to what you propose, the towers shouldn't be too hard too remove (in fact it is just removng L90 too L100 from that file), but one migh need to addapt some sizes to fill the gaps.
  18. One can play multiplayer games with AI, since indeed the initial state is the same. Rejoining is not possible since the rejoining person will have a brainwashed AI, while all other players will have the normal AI. Maybe, loading a savegame on two machines gives the same state (as the AI gets brainwashed on both ends), but it has never been tried. Feel free to hack it somehow (there is no such gui ingame), but no promises if it will work...
  19. replays work with AI, since the AI is completely deterministic, however their simstate isn't saved when serializing, so rejoining (and saving) isn't supported. For singleplayer games AI's work after loading a savegame, but might act a little different compared to how they would act without the save/load (think of the AI being brainwashed).
×
×
  • Create New...