Jump to content

luziferius

Community Members
  • Posts

    64
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by luziferius

  1. The reason multiplayer didn’t work is likely that wireless client isolation (for an example, see https://documentation.meraki.com/MR/Firewall_and_Traffic_Shaping/Wireless_Client_Isolation) was enabled in the network settings. This option exist so that devices can’t bother each other and prevent hackers from abusing bad configurations on other machines. It should be enabled on all kind of public networks, except for explicit LAN-party settings. It prevents client-to-client communication by dropping all client packets not targetting the default gateway, thus rendering any kind of local multiplayer impossible. So the best bet is to bring your own networking hardware with you, for example any kind of non-OEM consumer router that can operate on it’s own without remote configuration. Then connect the PCs via LAN. If needed (because of lacking wired interfaces), you could open your own, secured wifi network, named for example “0ad Multiplayer”. When doing Wifi access points, it is polite to ask the event’s network admin for permission, because it can cause congestion issues and throw off their channel mapping across the area.
  2. to verify a compile/package bug you could switch to the 0ad ppa here: https://launchpad.ne...fg/+archive/0ad (or lastest dev snapshots from here) if those error too, its somewhere system related, if those work, its a packaging bug in the ubuntu repositories
  3. you may also use windowed full screen then the window manager just removes the borders, sets the window’s resolution to that of the monitor and puts it on top. for KWin (KDE 4) I know a way to always run 0ad in this mode(I use it and i’ts quite nice): http://www.wildfireg...98 you can move the window between monitors by <ALT>+mouse drag’n’drop
  4. ^^ no problem. I’ll try to contribute where I can, and such things don’t need code knowledge. 2 monitors and enough cpu cores to feed 6 parallel running atlas instances really helps speeding such tasks up as a general rule: every map using the pathplacer js code needs at least 2 players, otherwise the code will fail with an exception. I only know of Canyon. maybe Dark Forest. If I don’t forget it, it’ll be done tomorrow.
  5. Now that we have player number restriction per map size, I’ve looked into the available map scripts.(opened 3 atlas instances and generated every map in tiny+4players, small+6players and medium+8players) those maps are working well with the default [4, 6, 8, 8, 8, 8, 8]: Ardennes Forest Atlas Mountains Cantabrian Highlands Continent Corinthian Isthmus Cycladic Archipelago English Channel Fortress Gear Gulf of Bothnia (There are no islands in the gulf, but the map description says so) Hyrcanian Shores Kerala Lake Latium Lorraine Plain Neareastern Badlands New RMS Test (well…) Northern Lights Oasis Persian Highlands Pyrenean Sierra Rhine Marshlands Rivers Saharan Oases Sahel Watering Holes Syria The Nile Volcanic Lands those maps need tweaking: they had different flaws with the default, like beeing largely unfair or otherwise broken layout (esp Migration, where all islands are connected with default restrictions) Archipelago (with 4 players on a tiny map, thats not an archipelago at all…) [3, 6, 8, 8, 8, 8, 8] Belgian Uplands (largely unfair with 6 players on a small map) [4, 4, 8, 8, 8, 8, 8] Canyon [3, 6, 8, 8, 8, 8, 8] Corsica vs Sardinia (very crowded) [2, 4, 6, 8, 8, 8, 8] Deep Forest (not a real forest with 4 players on a tiny map) [3, 6, 8, 8, 8, 8, 8] Guadalquivir River (northern players very disadvantaged) [2, 4, 6, 6, 8, 8, 8] Islands (generaly generates very slowly) [2, 4, 6, 8, 8, 8, 8] Migration (restrictive, otherwise islands may be connected; even on giant with 8 players and seed 9560) [2, 3, 5, 5, 6, 7, 8] Snowflake Searocks [3, 4, 8, 8, 8, 8, 8] The Unknown scripts should get those, since some of the included variations may not work well with the default Unknown [2, 4, 6, 8, 8, 8, 8] Unknown Land [2, 4, 6, 8, 8, 8, 8] Unknown Nomad [2, 4, 6, 8, 8, 8, 8]
  6. while you are at it… Would it be ok to either reduce the default player count to 3 or default map size to Normal for random maps? I think it’s odd that the game defaults to 4 players on “Medium (3 players)”… Either 3 players on “Medium (3 players)” (better performance wise) or 4 players on “Normal (4 players)”. BTW the link in your last post is broken…
  7. I would say change the constant MAX_PLAYERS_BY_MAP_SIZE_RMS to: const MAX_PLAYERS_BY_MAP_SIZE_RMS = [2, 2, 3, 4, 6, 8, 8]; this way it exactly matches the number of players in the size description. with current settings, you can’t play with 8 players on a “Very Large (8 players)” map… or const MAX_PLAYERS_BY_MAP_SIZE_RMS = [2, 3, 4, 5, 7, 8, 8]; this way it matches number of players in the size description +1 or: const MAX_PLAYERS_BY_MAP_SIZE_RMS = [4, 6, 8, 8, 8, 8, 8]; that one would be very permissive and might not work with many maps about minimal player count: some RMS might not work with 1 or 2 players… Canyon throws an exeption with only one player… or the layout may be broken (for whatever reason) but I think one of those is a reasonable default: const MIN_PLAYERS_BY_MAP_SIZE_RMS = [1, 1, 1, 1, 1, 1, 1]; const MIN_PLAYERS_BY_MAP_SIZE_RMS = [2, 2, 2, 2, 2, 2, 2]; it should only be set otherwise by a RMS that needs this
  8. Tested it once(configured 6 players, changed to Tiny, the UI updated properly, raising map size kept the 2 players, raised again to 6 players, switched to Tiny, clicked on Start, got a match with 2 players) working!!
  9. this one is broken… you need the placement in onGameAttributesChange() to update the UI. your current version does not Update the UI. It just needs to additionally set the player count with selectNumPlayers(). I just don’t know a sane position for this one.
  10. I really don’t know the code, where should that js file be placed? EDIT: found it. ~/.cache/0ad/mods/public/gui/gamesetup/gamesetup.js I’ll try what I can… EDIT2: looks like a logic bug. the player number is not updated. it just updates the UI and removes the player from the UI. It does not set the actual player number variable: select 3 players, change to tiny. UI says 2 players. click start. 3 players are placed. you should call selectNumPlayers() when you have to remove a player due to map limitations. that function seems to be able to do everything needed. so:(something like this pseudo-code) if (current_player_count > max_supported_count_by_current_size) selectNumPlayers(max_supported_count_by_current_size); I just haven’t found the line where to place this.
  11. you still include the old mapSizeToSizeIndex(size), but don’t call it at all… a minor typo in one of the first comments: 'player linit' (just use search function to find it)
  12. just a suggestion, I can’t code js, but a quick google query told me it’s possible change function mapSizeToSizeIndex(size) to: function mapSizeToSizeIndex(size) { var sizeIndex = undefined; switch (size) { case 128: sizeIndex = 0; break; case 192: sizeIndex = 1; break; case 256: sizeIndex = 2; break; case 320: sizeIndex = 3; break; case 384: sizeIndex = 4; break; case 448: sizeIndex = 5; break; case 512: sizeIndex = 6; break; default: //some error handling here, since invalid size passed } return sizeIndex; } or: (shorter version without a variable) function mapSizeToSizeIndex(size) { switch (size) { case 128: return 0; case 192: return 1; case 256: return 2; case 320: return 3; case 384: return 4; case 448: return 5; case 512: return 6; default: //some error handling here, since invalid size passed return undefined; } } or: the shortest version that uses the specific values 'size' can have this one is fragile, you may use a variable for the calculation and error-check before returning the value function mapSizeToSizeIndex(size) { return (size/64-2); }
  13. I looked at those from about 2m distance, they just look awesome! are those textures downscaled from a high-res source? and the same with the models? then you could later include the high-res version for ingame campaign cinematics (if planned)
  14. it becomes real-time if you manage to stare your enemy down > < 1. Empire Earth 1+Addon 2. OilRush 3. CnC 3
  15. ok, I tested it on my machine using my limiter script: I can provide tests with the following values: CPU-number: 1 to 6 clock speeds(both maximum and minimum; in kHz): one of 2800000 2200000 1500000 800000 I just tested: build: latest git master as of now map: combat Demo(Huge) singlecore 1,5GHz: no stalls at all(!), you can clearly hear the sim update: music plays smooth, every 3-4 seconds you hear a bunch of battle sounds from a sim update dualcore 800MHz: no stalls, similar to singlecore 1.5GHz this is below the mimimal system requirements: singlecore 800MHz: some stalls(only directly after sim update;the stalls are infrequent and short), sim updates very infrequently(+10seconds/sim update in mid-battle)
  16. for normal playing,i use the weekly ppa build. (0ad-dev) I got the described result with last weeks build. i have the git repo on my machine(svn is just slow), but haven’t tested it jet your changes are in master, right?
  17. I’ve written it for exactly this purpose I’ve tested it:(that happens with my AMD CPU, with vendors it should be the same) you cannot disable cpu 0; trying to do so gives a file-not-found error you cannot use too low values as clock speed; "bad argument" you can use too high values as clock speed; nothing happens, it does not overclock, but simply uses your maximum cpu clock speed at least my system monitor told me that, be careful with this one using minimum_frequency>maximum_frequency gives a "bad argument" error so it should be safe to use, but i recommend using proper values (the script prints them out when calling it without arguments) other than that: if you really cut your cpu down, your system will get really slow! I can reduce my cpu power from 6*2,8GHz to 1*800Mhz. You can feel the effect immediately with 1*800MHz, the rendering in 0ad(latest dev ppa build) completely freezes (but hey, music continues nicely!)
  18. Hi there, I’ve written a script that limits the available CPU cores and frequencies to user defined values. Purpose is simulating a slow CPU for testing multithreading performance/mutex locking behaviour on those systems. This script temporarily turns your high-performance 12core i7 CPU into a slow single-core or dual-core cpu (or whatever you specify) by disabling cpu cores and limiting the minimum and maximum frequencies of the remaining cores Disabling 5/6 cores of a 6-core CPU doesn’t exactly give the performance of a single-core CPU with same clock speed(since the multi-core CPU isn’t designed to run that way) but at least it should give some usable approximation. The script is designed to run in another terminal window. After changing your system, it waits for the user to say "exit" by pressing [Return], and restores everything to the original values(re-enables disabled CPU cores and restores original min/max clock speeds). It (temporarily) modifies your system, so it has to be run as root user(so check the script first before running it!) I’ve written 2 variations: cpu_limiter.sh is interactive and asks the user for input values. It tells you which values are available on your system and checks if the entered values are valid. (it’s not completely failsafe though) cpu_limiter_plain.sh requires those values as parameters, calling it without any gives a short usage information and prints the available values on your system. This one does not check anything, but assumes you are calling it with correct/working values! I tested both versions on my system, they are fully working(otherwise i would not have released it) (my system: Kubuntu 12.10, AMD Phenom II X6 CPU(6 cores)) But I did NOT test what happens, if you feed the plain version with bad arguments(text strings, negative/very high numbers etc.)… just don’t do that! Download: cpu_limiter.zip Plaintext version(in the Spoiler): I hope that it will be useful for someone
  19. idk, if it works good, but it might be worth a try you could use Virtualbox to create a low resource machine: install Virtualbox and a VM with an SVN build of 0ad (+Guest Additions for OpenGL-passthrough; idk whether 0ad runs with that, haven’t tested it) in the VM-Settings under System->Processor you can set the number of cpus the vm can use + a cpu limiter the limiter is important. you can reduce the cpu-power the VM gets to eg. 20% of your physical cpu-power. (eg you have a 3.6GHz cpu. you can test the game on a 1GHz cpu by setting the limiter to 28%)
  20. what do you try to achieve? 'trigger' should be a conversion function?? where’s the definition for 'trigger(…)' ? CTrigger trigger(eventName); m_Triggers.push_back(trigger); you basically do: define a function prototype and than push_back() a zero-pointer to that non-existing function you can define function without implementing it when you don‘t call it, but you try to push it into the list ____ so implement CTrigger trigger(eventName); in the h/cpp file and then use m_Triggers.push_back(trigger(eventName));
  21. since that check isn’t copied 1:1 into the codebase i see my complain as [iNVALID], so only one last thing from my side ok, I don’t know javascript. If there’s a semantic difference between var !== false and var == true for a boolean variable, your point is valid. isn’t there a warning when calling a function with too few parameters? so there’s a difference between these 3 pseudo-js-functions? function f1(bool_var) { if(bool_var !== false) do_smth(); } function f2(bool_var) { if(bool_var == true) do_smth(); } function f3(bool_var) { if(bool_var) do_smth(); } when calling those like this? f1(); f2(); f3(); since it’s boolean algebra, you can’t have a semantic 'undefined' or 'null'; undefined is a random true or false and null normally is false and everything else is true
  22. a minor note from my side: don’t use double negations in boolean expressions when you can avoid them. instead of if (playsound !== false && owner == playerID || owner == 0 || g_DevSettings.controlAll) _playSound(added[0]); use if (playsound == true && owner == playerID || owner == 0 || g_DevSettings.controlAll) _playSound(added[0]); or even if (playsound && owner == playerID || owner == 0 || g_DevSettings.controlAll) _playSound(added[0]); that saves you 2 byte of disk space ( ) and is easier to understand consider this example pseudo-c snippet(ask yourself which 'if' implements the desired behaviour; play the sound when sound is enabled) if(disable_sound != false) playsound(whatever); if(enable_sound == true) playsound(whatever); in theory you could remove every occurance of "!== false" in the codebase… EDIT: i just looked into the linked changeset, everything is ok, never said anything
  23. I like the new design, its really nice. a big usability plus(compared to other sites): those drop-down menu headers("News", "Game Info", etc) are not clickable( thats a good thing!). That makes the site usable on touch screen devices, since there you don’t have the (otherwise required) hover-, but only the click-(and-drag) action available well done!
  24. for me it sounds like you 2 have misunderstood him… I think he wanted the answer for this question: "Is it normal that the game consumes every cpu cycle it can grab, even if nothing happens like in the match setup screen?" Am I right? look at the screenshot(in the spoiler): even in the menu the game uses 100% of 2 cores(i’ve disabled dividing cpu load through number of cores to show it better) that behavior causes my notebook to overheat even when i let the game idle in the menu it looks like the game does some busy waiting or polling, which is quite bad
  25. which packing programm do you use? I’ve created that with 7zip on linux maybe your programm doesn’t like the deflate64 packing method… however, I’ve done a repack and re-upload(and removed the possibly corrupted file 2 posts above): chickens.zip
×
×
  • Create New...