Open Andrews54757 opened 8 years ago
CURRENT EFFICIENCY AS OF NOV 5
I made it much more efficient again. Note that 1000 bots are running. I am comparing with OgarUL
OpenAgar:
OgarUL:
MultiOgar:
Open agar has surpassed both multiogar and ogarUL now in preformance. OgarUl just froze when 1000 bots were added, MultiOgar slowed down and became choppy when 1000 bots were added, and OpenAgar, had no lag whatsoever which is very very surprising.
@Andrews54757 That's interesting. What features does the server have right now?
Almost all the basics, except viruses. Yet the infrastructure is complete. Every feature that I add has virtually no performance drawbacks as they are made with extreme caution. More is being added. So these stats are probably off by a bit. But then, as I add more features, I also make it more efficient. So it balances out. I keep my CPU profiler at hand all the time to monitor the server
There are also cool features as well. Such as the revenge icon. Most features however, are devoted to efficiency. There are soo many features for efficiency, It is hard to list them all. Oh well, Il try
Anyway, I envision that future OpenAgar servers could hold 1000 players and 500 bots with zero lag
Interesting 👍
I find it depressing that Ogar is dead. No ogar server was ever updated in the last 2 months. Agar.io is apparently dead.
@Andrews54757 That's why we need to bring it back to life, not only as it being similar to Agar.io, but as to what you created Unlimited. Private servers still exist, but new updates to the game? nah. That's hardly never heard from miniclip, except them patching and making everything look better than before.
@Andrews54757 I don't think it's dead yet, Personally I'm looking for hosting hundreds of mini Ogar servers.
@LegitSoulja The whole game concept is dead now. The game used to be fun, but games are only fun for a bit. Unless if there would be a gamemode that would completely blow out all other .io games than it would work. But the issue is now there are hundreds of .io games that just have a MUCH better concept than Agar.io, after all, Agar.io was the first .io hit.
Yes, but I am thinking of adding special things such as mini games
@Andrews54757 Thats amazing, my multiogar server lags a ton in the bots gamemode when i give people more than 9 bots each,
Damn @Andrews54757 that's impressive, I'm so hype for this project!
I tried 2000 bots, and there was NO LAG!!
Well, next up: 3000 bots. And smart bots too.
@LegitSoulja OpenAgar is basically finished. There are only two things I have to do
@Andrews54757 I'll check out making new gamemodes when I get home.
I don't know when exactly. I might not go back home till this weekend :/.
@Andrews54757 Check gitter
This looks very nice! great work!
@Andrews54757 I have a question, what was the starting size of the bots when you ran them? I'd like to compare the performance to my MultiOgar, but I need to know the correct settings first.
Default
It takes a lot for OpenAgar to lag. Note that bots run on a different process, the same process in which collisions, leaderboard, and mass checking runs in. So they might be slowed down when bots are flooded. But the main physics wont. This only occurs for bots (not minions or players) because the bots run on the same process, and they are not optimised at all. Still though, you can run 2000 bots with no lag (for me), without the effect I mentioned. But I bet if the bot code was optimised (it is the same AI as OgarUL), it will be able to run 2500 bots without the effect. But still, lag is not visible even if you add more bots than expected (for me). The server is made to detect lag and mitigate it, you can see some lag status by going into the debug console (Type debug
).
@Andrews54757 Does running a child process happen on the same core, or all?
In that case I got a 8 core, gtx x4 64 gb mem, OS running on an SSD with 2 more internal, and processing speed is 5.7 (Overclocked). I flashed my motherboard :) in case you're wondering. That's how custom built my computer is.
So, after studying nodejs processes, I learned a v8 engine is very expensive. And using .fork spawns a new instance. So I have it set up dynamically to get the most bang out of my buck.
And yes, a new child will operate in another core
@Andrews54757 Good note.
I am kindof dissapointed though, that people are trying to steal my work, I just realised, the entire advancedness (a word?) of the program and how much work it took me to make
I just posted an update a while ago that changes the UID system so the keygen is different now. The client and everything will have to be updated.
Now I realise that I should have kept this project completely private
Oh well, this will be good on my resume anyway. Not anybody can do what I did with this in just 2-3 months
@LegitSoulja Please go to gitter
@Andrews54757 I know you are probably busy and all and its the holidays and all that, but I would like to ask a few more questions.
How is the performance with 5000 ten mass minions? Be brutally honest, I'd like to compare performance again. If you do test it, can you leave the contents of the debug
command here? Did the server slow down or physics become choppy? Please explain in great detail, I want to feel as if I tested it for myself.
I know I've already asked a similar question and you probably don't have time to answer, but I couldn't wait any longer and the forums are closed as of now. Since I missed my chance to generate my own key, I cannot test the performance myself. I figured I would ask someone who has access to it.
Thank you for your time :) Sorry if I distracted you from your work :/
@Megabyte918 This is what will happen with 5000 minions: The server will lag badly.
[Debug] Client (ID: 1) was added to server 1
[Debug] Possible lag spike detected: 187 MS. Nodecount: 5671
[Debug] Mitigating lag...
[Debug] Possible lag spike detected: 137 MS. Nodecount: 5671
[Debug] Mitigating lag...
[Debug] Possible lag spike detected: 127 MS. Nodecount: 5671 U[Debug] Mitigating lag...
[Debug] Possible lag spike detected: 144 MS. Nodecount: 5671
[Debug] Mitigating lag...
[Debug] Possible lag spike detected: 87 MS. Nodecount: 5671
[Debug] Mitigating lag...
[Debug] Possible lag spike detected: 94 MS. Nodecount: 5671
[Debug] Mitigating lag...
[Debug] Possible lag spike detected: 91 MS. Nodecount: 5671
[Debug] Mitigating lag...
[Debug] Possible lag spike detected: 97 MS. Nodecount: 5671
[Debug] Mitigating lag...
[Debug] Possible lag spike detected: 101 MS. Nodecount: 5671
[Debug] Mitigating lag...
[Debug] Possible lag spike detected: 146 MS. Nodecount: 5671
[Debug] Mitigating lag...
[Debug] Possible lag spike detected: 131 MS. Nodecount: 5671
[Debug] Mitigating lag...
[Debug] Possible lag spike detected: 91 MS. Nodecount: 5671
[Debug] Mitigating lag...
[Debug] Possible lag spike detected: 90 MS. Nodecount: 5671
[Debug] Mitigating lag...
[Debug] Possible lag spike detected: 134 MS. Nodecount: 5671
[Debug] Mitigating lag...
[Debug] Possible lag spike detected: 134 MS. Nodecount: 5671
[Debug] Mitigating lag...
[Debug] Possible lag spike detected: 109 MS. Nodecount: 5671
[Debug] Mitigating lag...
[Debug] Possible lag spike detected: 95 MS. Nodecount: 5671
[Debug] Mitigating lag...
[Debug] Possible lag spike detected: 113 MS. Nodecount: 5671
[Debug] Mitigating lag...
[Debug] Possible lag spike detected: 112 MS. Nodecount: 5671
[Debug] Mitigating lag...
[Debug] Possible lag spike detected: 81 MS. Nodecount: 5671
[Debug] Mitigating lag...
[Debug] Possible lag spike detected: 115 MS. Nodecount: 5671
[Debug] Mitigating lag...
[Debug] Possible lag spike detected: 91 MS. Nodecount: 5671
[Debug] Mitigating lag...
[Debug] Possible lag spike detected: 95 MS. Nodecount: 5671
[Debug] Mitigating lag...
@Megabyte918 I will however, try to make preformance even better so it can handle 5000 minions. The reason for the horrible lag at 5000 minions is because they don't run on separate processes, unlike bots, because it is not "worth it" seeing that minions are only "temporal" when playing.
@Megabyte918 I have experimented more, and found that the limit for no lag minions are 2000
@Megabyte918 I have some ideas on how to optimize them.
@Megabyte918 I think, however, the lag is caused when huge amount of data is being sent to child processes. I could use a database to store the objects, and that could solve the problem, but its the same thing Micheal and I tried to do in the dev branch of ogarul. Didn't end up too well as people were complaining about the slow start time.
@Megabyte918
Normal Operation:
2000 minions:
5000 minions:
@Megabyte918 I also learned, that a lot of the lag I experienced, was infact client lag, even though I shut off the server, it still was "moving".
@Andrews54757 Very interesting... I have a few things to state about the possible optimizations:
When minions are not in view of players (not bots), don't do collision checking unless the minions are set to collect food or if their count is below 1000.
Won't that cause bugs with collision for other players trying to eat the minions? For example if I ran 2000 minions, and other players were trying to eat them out of my viewbox, if the collision checking is disabled, then the players won't be able to eat/feed/interact with the minions right?
When two minions overlap, do collision checking only once for them
Wouldn't having the server constantly checking if minions are overlapping decrease performance? Especially if your running greater than the recommended amount of minions
@Andrews54757 Have you tried disabling visible-node calculations for minions? It really helps. Here is an example of it in action on my server:
Disabled(default): https://streamable.com/6om8h Enabled: https://streamable.com/xx9vz
I am using an extension because my computer can't handle recording with 5k minions with the agario client's graphics.
That being said I am very very impressed on how well OpenAgar handles 2k minions, especially with all features it has and all of the configs and all that. I'm glad it didn't turn out like OgarUL did with the lag and all, you guys did a great job @Andrews54757 and @LegitSoulja. Thanks for taking the time to respond to all of my questions with such detail, I wish you guys the best of luck and a happy holidays :)
@Megabyte918 Minions already don't have visible calculations and whatnot. They are very very simplified. Take a look at the code and you will see the pure simplicity. They still have all the features though
@Andrews54757 Nice, I can't wait to see what it can do after your future optimizations 👍
@Megabyte918 I have discovered something: Socket.io is very slow. I found out that OpenAgar is not lagging minions due to the fact that socket.io is slow. I then pried through Socket.io's code, and made it much more efficient. Then, the server could handle more minions
BEFORE OPTIMISATION: (note in all images, it is running 2000 minions)
AFTER OPTIMISATION:
@Megabyte918 's MultiOgar-Edited:
@Andrews54757 Wow.. that's impressive 👍
Hey @Andrews54757 Andrews54757 I dont know "How can I Setup OpenAgar?" Plz record video and send link plsss I want this OpenAgar
@KaanAga
We don't provide support. OpenAgar comes in the box, WithInstructions
which are basic. Nobody provide things without meaning, sources, and docs.
All we ask you is to read. Or ask google,bing,yahoo,stackoverflow,twitter,or a friend who has experience with doing it. However we don't provide. You can read the old project "videos, issues, and even projects". Better hurry on the issues.
@LegitSoulja, should we make the packets binary? (that didnt make so much sense). I created a tool to do so: https://github.com/ThreeLetters/Binary
@LegitSoulja I am creating a more detailed documentation here: https://ajs-development.github.io/OpenAgar/
@Andrews54757 If it turns out with better performance then sure
I kindof want to make my own socket in which with non nodejs, but with browser, in which can communicate with socket.io, and websockets using protocols.
Or even my own sys, in which sends vice versa data.
Gallery
Revenge system: Icon grows bigger when you are closer to the player, and the icon is put on the cell when in the screen
Skins: (the skin is a custom skin)
Multi-Processes
Website (opnagar.us)
Plugin system:
Onan config editor (plugin)