Jump to content

Stan`

0 A.D. Project Leader
  • Posts

    17.504
  • Joined

  • Last visited

  • Days Won

    553

Everything posted by Stan`

  1. Mm that sounds like a bug can you report it on our GitHub ?
  2. Yeah it was said that JS could handle 230 calls in a turn LUA 550 and c++ 8000
  3. I also read that slingers were used to slow units down. It's hard to walk when being stoned
  4. Those aren't my numbers. But yeah very different. I wonder if we would have made the switch had we chosen LUA.
  5. Language Ackermann's Function Nested Loop (16M) Hash Tables (80k) Method Calls (2M) LUA 110ms 1,462ms 1,061ms 5,397ms JavaScript 310ms 10,124ms 1,922ms 8,5552 Here is the benchmark that was done at the time. The person did not give the parameters for the Ackerman function. My browser only accept (3,11) and the lua online thingy https://www.lua.org/demo.html I used to test was like (3,8) The js was faster too.
  6. From all the resources I now read, I still have the feeling that we chose convenience over performance. LUA was better Nearly twice as fast as JavaScript Older than JavaScript (so likely to be more mature) The industry standard for games in all aspects save for Scripter's personnal tastes Syntax (People wanted the language to be more user friendly for non programmers) A special OOP paradigm using metatables JavaScript had Like LUA it matched the frontend and backend functionnality A nicer syntax closer to C OOP through prototypes and now through classes Preference from devs who weren't into LUA at all. Was supported by Mozilla
  7. Weird I went there and Ctrl + F and didn't find it. I will try again. I am sorry I am wasting your precious time.
  8. Won't be unless I reuse the presentation. But I might release the slides I couldn't load the meeting nor find it in the archive server. It matters a bit. Always nice to know the why especially when you can back it up. I'm happy they chose JavaScript
  9. For the record what file was it ?
  10. I'm falling a bit short of arguments, while there were extensive discussions, it feels a bit like that the decision was rushed by one's skill and not motivated by hard facts. I believe that's because the two languages both did the job so it ended up being a matter of preference. @Wijitmaker can you give me your light on that ? Here are the three slides that will be integrated in the 40+ other slides presenting 0AD. Why JavaScript.pptx
  11. I committed them at the beginning of the A24 dev IIRC. However I'm still hoping for Farsi voices from @dmzerocold and @Itms
  12. Mmmh I guess something else displays the barter panel using the list of resources files.
  13. So what was resolved by @Hannibal_Barca ?
  14. The patch was abandoned because it didn't work So it isn't likely to either work or be fixed
  15. Well the menu is populated automatically, I'm not sure but I think my fix would prevent them from being displayed at all That's an interesting concept
  16. Without the resource files I would assume you forgot to set all resources to be tradable or not. Example: { "code": "stone", "name": "Stone", "description": "Mine from rocks, stone quarries or ruins.", "order": 3, "subtypes": { "rock": "Rock", "ruins": "Ruins" }, "truePrice": 100, "aiAnalysisInfluenceGroup": "sparse" } if (data.tradable == "true") Would trigger an error because there is no tradable property. So either set it to false where you don't need it or add if (data.tradable && data.tradable == "true") Also not that it's likely that there is some cast occuring there data.tradable == true <=> data.tradable == "true" but not data.tradable === "true" In the json, you can write true without quotes. That's a luxury you do not have in XML. I guess this would come from Player.js ? Player.prototype.SetTradingGoods = function(tradingGoods) { let resCodes = Resources.GetCodes(); let sumProba = 0; for (let resource in tradingGoods) { if (resCodes.indexOf(resource) == -1 || tradingGoods[resource] < 0) { error("Invalid trading goods: " + uneval(tradingGoods)); return; } sumProba += tradingGoods[resource]; } if (sumProba != 100) { error("Invalid trading goods: " + uneval(tradingGoods)); return; } this.tradingGoods = []; for (let resource in tradingGoods) this.tradingGoods.push({ "goods": resource, "proba": tradingGoods[resource] }); }; You just need to check that for (let resource in tradingGoods) { if(Resources.GetTradables().some(res => res == resource)) continue; if (resCodes.indexOf(resource) == -1 || tradingGoods[resource] < 0) { error("Invalid trading goods: " + uneval(tradingGoods)); return; } sumProba += tradingGoods[resource]; } and for (let resource in tradingGoods) { if(Resources.GetTradables().some(res => res == resource)) continue; this.tradingGoods.push({ "goods": resource, "proba": tradingGoods[resource] }); } Also i don't think I have seen any link to your mod, is it publicly hosted somewhere ?
  17. Can you share the error message and/or the code maybe it's something we can fix
  18. Missing the sound or the feature ? else I guess @Samulis could do it
  19. @Itms I remember leper had a patch for utf8 support for the windows buid (Inari couldn't build because he had some Japanese chars in his paths) Maybe it's the same bug but on Linux.
  20. Sure was just wondering since I remember reading something that stated that the interactions between the two languages were slow. That would only be for things refering to this.entity True.
  21. Hey guys, I was wondering since we have a lot of calls that goes like this Engine.QueryInterface(component_IID, entity) if that would not be a performance gain to actually cache them in Init functions ? For some small components that might be negligible but maybe for stuff like UnitAI it could make some difference.
  22. How many units did you have ? How may AIS on what map. Those are all the things that hit greatly on performance.
  23. Actually you are capped at 4GB for 0 A.D. no matter what. The 4GB+ patch is actually a 2GB to 4GB patch. If you want to use more you have to compile for x64 and our game is not ready for that yet.
×
×
  • Create New...