Mr F

  • Content count

  • Joined

  • Last visited


    More updates: Bought the cheapest Linode server and benchmarked. Seems to handle up to 300 players, but... it's hard to measure, but I noticed that other players don't move as smoothly, as on AWS. Not sure why, feels like websocket stream is not as stable (?). Both aws and linode are in the same city. Didn't launch linode officially yet. However, it's just 5 bucks a month! I must fix this smoothness difference somehow and switch. - fixed shadows disappearing (some debris sometimes were flying away into space and somehow invalidated shadowmapping camera frustum) - fixed various repair bugs (being stuck in repair, not being able to enter, teleporting after walking away...) - removed a terrible yllix banner I added yesterday. Despite earning me 1 dollar (yay, first profit), it felt wrong. Most yllix ads are scam - fake download buttons, clickbait, etc. I don't want to support these kinds of ads and redirect my players to garbage.

    Today updates: - Was using permessage-deflate websocket compression experimentally for a few days, but had to disable it today. My data is already pretty small and binary, and deflate was only improving it by 10-20%. At the same time, CPU usage difference on server was huge! What was running on 8%, started to run on 30%. AWS instance was quickly getting out of cpu credits and throttled, that's likely why TomC experienced lagging. Should be better now. - Added ranks. All players now have an icon showing how dangerous they are, based on the amount of bought abilities. Killing highly ranked player now gives more XP. - Fixed some bugs

    Also one of the reasons I registered here is to read this: But I still can't. Apparently I'm still not enough an active user? What's the point of hiding this information? ---- huh, OK, just as I wrote this post, it started to open

    Oh yeah, today I released a smaaall server update... what could possibly go wrong?... suddenly everyone started randomly teleporting, disappearing, causing client to crash, and I didn't have backup. For about 2 hours I was in super stressful debugging and restarted the server frequently. Should be fine now. Lesson learned.

    That's weird, I'm playing from the UK too, and I don't see any lagging on the EU server. There's server selector in the main menu (eu/us). Ah, thanks for clarifying about Linode! No, I don't use any autoscaling cloud stuff. Just 2 fixed servers at fixed locations with fixed IPs. --- hitting buttons should give immediate result, because it doesn't wait for server, I use client prediction. But if your ping is bad, you can de-sync and start teleporting a bit. Is it what happened?

    Thank you all for your responses! So yeah, physics engine was made from scratch. Reasons: - PlayCanvas uses ammo.js physics by default. Which is just an Emscripten port of Bullet. I love Bullet and I worked with it in the past, but ammo doesn't impress me. First, it's almost 1 mb worth of code, not too great for a small web game. Second, I have experience making a WebGL demo for mobile, and it was sooo sloow there... I had to limit physics update to 10 ticks per second, and we had, like, 5 boxes falling on a static mesh with 100 triangles. I just don't believe in Emscripten. - Physics in this game are more about quantity than quality. We don't need very precise collision, stuff just should blow up and appear to bounce off everything. - I just wanted to make a physics engine. Having previously toyed with position based physics on CPU ( and GPU (, I wanted to finally make a proper large-scale engine. The way it works: - All objects are made of spheres. Each sphere is Verlet-simulated individually, and then all constraints (rigid or not) are satisfied by just moving them to right positions. Position-based physics are truly amazing, because the idea is super simple and straightforward, yet it looks impressive. - For physics, static level geometry is also represented with spheres! This is ridiculous, but it was tempting to do given simplicity/performance. - There's a separate precise collision system that's also made from scratch. In that system level is represented using boxes. It's used for raycasts, grenades and player collision. - Both physics and collision systems are optimized with simple 2D grid. All spheres/boxes are assigned to small cells and only interact with what's in the cell. Raycasts check boxes in their starting cell, then go to next one, until they intersect something or reach max distance. Dynamic spheres add/remove themselves from cells on the fly - this is something I'm not proud of and should change, because it uses actual JS arrays... giving some GC overhead. Also, physics cells aren't arrays per cell - but an "implicit grid", so just one array for every row and column. - All physics except grenades are client-only. Grenade trajectory is fully calculated on server and then sent to all clients as an array of positions. Clients then just interpolate the grenade, however if it touches any player, it will explode before reaching the end of its path. Fun facts: - Robot bodies have 2 physical spheres connected like a pendulum, that makes them swing based on player movement. Looks a bit more alive than just animation. - Explosions are made of multiple blob-like meshes, and each is physical, but without gravity. That makes them push each other away giving exploding movement. When, from where, and on which server were you playing? How did you notice lag? Hmm, what things will I need to setup, that I didn't have to do with AWS?

    Hi there! We recently finished a web game with friends, here it is: Less than 7 MB, play in your browser Note: only playable on desktop platforms at the moment. Rules: You control a robot and belong to one of 4 teams (marked by nickname color). There are 4 teams and 5 capture points on the map, and the aim is to help your team gain control over most of these points, while shooting enemies. You will gain XP by killing enemies and capturing points, and you can spend it on buying useful upgrades. Damaged robots can be repaired in small repair cabins at the corners of the map. Controls: Use W, A, S, D keys to move your robot. Aim with mouse cursor. Shoot left and right weapons with left and right mouse buttons. Press Space to sprint. Press Shift to activate shield. Press B to open shop menu. Press Esc to change sound/fullscreen/quality settings. Made in 6 months (not full-time) on PlayCanvas with friends (me and 2 artists).It was my first experience with networking and multiplayer. One of the reasons I registered here, apart from sharing, is to ask a monetization advice. I'm not greedy, but right now I have to pay for servers, and if there would be a way to at least cover that expence, I'd be happy Things I know/tried: - I'm using Amazon AWS servers. They're expensive. Gonna check Linode (sounds good?). - Google Adsense doesn't like us. "Insufficient content" (not too much text - but there's no reason to have text!), and they don't like iframes. Many game portals iframe the game (can't do anything about it). - Tried some affiliate banners from 500 clicks, $0, because they mostly pay for registering in advertised games, not for clicks. - Tried ad4game. They gave me amazingly terrible ads. Like, bright pink, blinking, stuff like that Can't add those, too annoying. Do you guys have better suggestions? I've been told about licensing the game to game portals. Does it mean banning it from unlicensed sites? They actually earn money by embedding our game and adding their ads on top, and they don't pay us, and that's not great.. however they also bring traffic, and that's good.