Rezoner Posted May 16, 2016 Share Posted May 16, 2016 Hiya there, I've just released open beta of a hack'n'slash that I've been working on for about two months (mostly consumed by learning blender from scratch).http://wilds.io/ The engine is custom made - on the backend there is obviously node.js The whole architecture consists of a client, lobby (load balancer), multiple game servers and postgres database to store users Game is 2D - I have modeled these folks in voxels - then animated in blender and exported into a spritesheet using blender internal scripting in python It's also probably the first game that uses Patreon API as a business model I am glad to answer any technical questions. Oak, commention, ecv and 2 others 5 Quote Link to comment Share on other sites More sharing options...
endel Posted May 16, 2016 Share Posted May 16, 2016 That's amazing. Did you made everything by yourself? Great work! Smart move to separate the sprite sheet of the legs and arms to allow rotating them separately. What was your biggest challenge on making it multiplayer? Keep it up! Quote Link to comment Share on other sites More sharing options...
Rezoner Posted May 16, 2016 Author Share Posted May 16, 2016 Almost. I bought most of the sounds - also Yeti and Goblin are some stock models. The biggest challenge was to sync object life-cycle - as in take care of that the client doesn't try to operate on objects that have been already removed - or not yet added. It's not my first attempt at multiplayer so I find the whole thing rather easy - but I remember that the first time I have read too much about extrapolation (predicting where the object will be) and overengineering the whole thing. Today I don't give a damn about extrapolating data (except very fast objects - like bullets) - I just interpolate everything - which simply means tweening positions to the next set of data received from server. Also I do not recommend "do it all yourself" attitude I am practicing - it's a waste of time, health and potential. The only upside of it is that there is nobody except you to screw up. michaelcalkins, ecv, WombatTurkey and 1 other 4 Quote Link to comment Share on other sites More sharing options...
kevdude Posted May 16, 2016 Share Posted May 16, 2016 Wow! Very nice graphics and gameplay, seems like there were very many people online! What servers do you use to host the game? In the past I have worked with Heroku, Openshift, and Google App Engine. Also, what would you say is the best and most effective way you marketed your game? Great Game! Rezoner 1 Quote Link to comment Share on other sites More sharing options...
endel Posted May 16, 2016 Share Posted May 16, 2016 Awesome. Thanks for sharing your experience I'm making an open-source game server called Colyseus (https://github.com/gamestdio/colyseus), which by now I only used for some prototypes in game jams, and extrapolating data is exactly what I'm trying to achieve right now. I'm trying not to over-engineer but applying lag compensation techniques can be kinda messy. Hope your game become a huge thing! Rezoner 1 Quote Link to comment Share on other sites More sharing options...
Fatalist Posted May 17, 2016 Share Posted May 17, 2016 Not a fan of pixel-art generally, but this is really well made. 13 hours ago, Rezoner said: I just interpolate everything - which simply means tweening positions to the next set of data received from server. The price you pay is slight input delay right? It feels very responsive anyway. webdva and Rezoner 2 Quote Link to comment Share on other sites More sharing options...
Umz Posted May 17, 2016 Share Posted May 17, 2016 Damn that was impressive. Never seen or knew that Patreon had that API to work with. The controls were a bit tricky, took some getting used to. I think Space Bar as jump while I'm using both hands is a bit difficult. What I really want to know though, is how did you get it to load so fast Jadegames and Rezoner 2 Quote Link to comment Share on other sites More sharing options...
blackmoondev Posted May 17, 2016 Share Posted May 17, 2016 It's super awesome, but I still miss Jason;) Rezoner 1 Quote Link to comment Share on other sites More sharing options...
mattstyles Posted May 17, 2016 Share Posted May 17, 2016 It's great, love it! Rezoner 1 Quote Link to comment Share on other sites More sharing options...
Gio Posted May 17, 2016 Share Posted May 17, 2016 Very nice, feels very responsive too - if I hadn't read your post I would have thought you were using some clever extrapolation algorithms. With simple interpolation it works better than I would have expected. Questions: Why postgres if I may ask? Are you just going to self-publish it on your site with the Patreon API? If I'm not mistaken you already have a game on Steam, what made you decide not to go the Steam route this time? Rezoner 1 Quote Link to comment Share on other sites More sharing options...
Rezoner Posted May 17, 2016 Author Share Posted May 17, 2016 @kevdude: I can't answer marketing question yet - we shall see in a few months. I am hosting it on a bunch of 1 core (node js doesn't support more anyway) VPSes on https://www.ovh.com/ @end What's more important than extrapolation is predictability - as in the constant flow of the game - if every action takes 200ms to see a response - players will get used to it and. For player controled character tho it's good to have some instant response even if it's not truly synced with server state - legs and torso direction for the main hero in my game are determined by client. The skills are however not - because it could lead to very frustrating misses. @umz: The controls are in the early stage and lots may change. @blackmoondev: One thing that I don't miss - is Jameson. It was painful experience :S @mattstyles: I want to reply to everyone - so -thanks @Gio: Postgres - some people who are dealing with millions of records told me that I will cry at some point if I pick mongodb. Yes I am going to roll my business model solely around Patreon - if it fails I will think about switching to real payments or Steam. The game is browser based - it's always extra work to make it available and updated on Steam - I can put these extra hours into gameplay instead. Also there is a ongoing myth that being on Steam = super revenue. I have earned around 5000$ (minus Steam cut, minus taxes from QbQbQb) which wasn't worth the hustle - I've made a lot more from bundles than the Steam alone. webdva 1 Quote Link to comment Share on other sites More sharing options...
Umz Posted May 17, 2016 Share Posted May 17, 2016 Well keep posting when updates are out. Really like the whole idea and the game is great. The controls are good, I think it was just the jump that was off, because I had to move my hands away from the mouse or the controls to do it. Also, I'd love to know if this business model works as well as, or even better than Steam and all the tribulations that go with it. Rezoner 1 Quote Link to comment Share on other sites More sharing options...
Antonio89 Posted May 19, 2016 Share Posted May 19, 2016 Omg, I played it an hour. This is epic. Something really special. Please keep it up and bring more updtes. Rezoner 1 Quote Link to comment Share on other sites More sharing options...
WombatTurkey Posted May 19, 2016 Share Posted May 19, 2016 On 5/17/2016 at 2:26 AM, Rezoner said: @kevdude: I can't answer marketing question yet - we shall see in a few months. I am hosting it on a bunch of 1 core (node js doesn't support more anyway) VPSes on https://www.ovh.com/ That's awesome, great work to finally see people taking advantage of how node is supposed to be used! Edit: Just curious, how many node instances do you have running right now and how many ws connections do each of them hold? Also, the cpu/specs if you want. Thanks so much, this game is really blowing up, awesome work! Rezoner 1 Quote Link to comment Share on other sites More sharing options...
Rezoner Posted May 20, 2016 Author Share Posted May 20, 2016 @WombatTurkey I have moved to Digital Ocean because they let me clone a server with one click. I am currently running it on cheapest nodes which stands for: 512 MB RAM Intel(R) Xeon(R) CPU E5-2630L 0 @ 2.00GHz I am running 10 of these. It can only handle 40 players - although from what I can tell only 20% burns in the game logic, the rest sinks in websockets communication. Take note that I didn't bothered with binary transfer - it's all based on LZW compressed JSON which might be the reason it's underperforming WombatTurkey and webdva 2 Quote Link to comment Share on other sites More sharing options...
WombatTurkey Posted May 20, 2016 Share Posted May 20, 2016 7 hours ago, Rezoner said: @WombatTurkey I have moved to Digital Ocean because they let me clone a server with one click. I am currently running it on cheapest nodes which stands for: 512 MB RAM Intel(R) Xeon(R) CPU E5-2630L 0 @ 2.00GHz I am running 10 of these. It can only handle 40 players - although from what I can tell only 20% burns in the game logic, the rest sinks in websockets communication. Take note that I didn't bothered with binary transfer - it's all based on LZW compressed JSON which might be the reason it's underperforming Nice! Thank you so much, this information is invaluable really. It's hard to find real world use cases in websocket data mixed with node. Although yea, LZW is crazy expensive (especially on long strings). I've done some benchmarks and basically the result was if your server can handle the bandwidth, no compression is worth it (Trade off, bandwidth -> speed). Also to add, MSGpack, bson, and others simple fall short in comparing to the native JSON speeds. Again, thanks! I've told my friends on discord about the game they love it Quote Link to comment Share on other sites More sharing options...
Reinkaos Posted May 20, 2016 Share Posted May 20, 2016 Wow this is really great! I am getting some bad lag in New Zealand though :(. Keep it up man, the way the game is looks feels pretty polished! I have always been curious about making a multiplayer game with a Node back end. So it's interesting to read about what you have used to make this work. Quote Link to comment Share on other sites More sharing options...
benny! Posted May 22, 2016 Share Posted May 22, 2016 Outstanding work!!! Quote Link to comment Share on other sites More sharing options...
ecv Posted May 23, 2016 Share Posted May 23, 2016 Awesome Quote Link to comment Share on other sites More sharing options...
blackgames Posted May 23, 2016 Share Posted May 23, 2016 funny game, keep it up Quote Link to comment Share on other sites More sharing options...
Rezoner Posted May 24, 2016 Author Share Posted May 24, 2016 Not sure if anyone is interested but perMessageDeflate in websocket/ws is super bugged - it causes huge memory leaks - after disabling that my server can handle 200 players instead of 40. Also thanks for all the congratulations. The game is getting steady flow of users but with that comes a responsibility, worries about loosing players and feeling of constant demand for new features - it burns you out nonetheless than corporate work Umz, kevdude and mattstyles 3 Quote Link to comment Share on other sites More sharing options...
benny! Posted May 25, 2016 Share Posted May 25, 2016 @Rezoner Give yourself a break of some days. I know that feeling - it can be hard - especially for a one man army to keep motivated. For me it helps to take a break of some days. Then coming back with a full battery everything feels a lot of easier. kevdude 1 Quote Link to comment Share on other sites More sharing options...
danzel Posted May 25, 2016 Share Posted May 25, 2016 Game runs really well, well done. Interested to hear about your server performance, what is taking up all your CPU time? I have a game I'm working on that uses a nodejs+websockets based server and the server is still idling at 20 players. (Haven't built load testing stuff yet) Quote Link to comment Share on other sites More sharing options...
Rezoner Posted May 30, 2016 Author Share Posted May 30, 2016 Soz for the delay. Would love to say that it was due to a break like @benny! suggested - but I had to meet my commercial deadlines One server ($5 digitalocean thing) can now withstand 140-200 players - the most CPU goes into websocket communication not the game logic as one would expect. Not that I am using UTF-8 not binary packets - but I plan to switch soon, so I can give you a report was it worth the work. Quote Link to comment Share on other sites More sharing options...
danzel Posted May 30, 2016 Share Posted May 30, 2016 You might want to check out µWebSockets, I haven't tried it yet, but their goal is to have better performance than other websocket implementations. Might buy you a few CPU cycles :-) https://github.com/alexhultman/uWebSockets Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.