Here are the major open source technologies that I use:
Blender - 3D modeling software for creating the overall environment and every game object. I've gotten a lot of CC and Public Domain assets from https://poly.pizza
GLTF - I export assets from blender to the GLTF asset format
JSON - I write a JSON config for every game object that describes things like its name, its interactions, its collisions, etc.
Node.js exporter - I iterate over the environment and every asset to create a scene hierarchy. I use gltf-transform for processing all GLTF files, compressing them, removing redundancies, etc.
Node.js server - Uses express and socket.io to process game state updates. It keeps track of every client's game state and issues delta's at each game tick (currently 600ms). The client can send interactions with different objects. The server validates those and updates the game state accordingly.
HTML/CSS/JavaScript/Three.js client - I use regular web technologies for the UI elements and three.js for the 3D rending on the browser. The client is responsible for rending the world state and providing the client with different interactions. All code is written in JavaScript which means less context switching. Performance seems to be good enough, and I figure I can always optimize the server code in C++ if necessary.
I am currently running two cheap shared instances but based on my testing, they can likely support about 200 users each. This is a low-poly browser based game so it should be compatible across many devices. The data a user needs to download to play, including all 3d assets, is approximately 2 MB, even though there are hundreds of assets.
Overall, it's been a fun project. Web development and open source software have progressed to the point that this is no longer an incredibly difficult feat. I feel like development is going pretty well and in a year or so there will be plenty of good content to play.
There were 5000+ successful logins! I think I need a better SMTP email provider and a way to make sure a failure doesn't crash everything else.
I built Genfanad (http://genfanad.com/) as a browser based game with similar inspirations to yours a few years ago. A lot of the technologies you mentioned are very similar. It's surprising how easy getting something up and running is these days!
We ended up shutting down a few months ago as I couldn't figure out how to take it to profitability. Do you have plans for that, or is it just a fun side project?
A bit more serious, I haven't seen many attempts at just making a donation bar showing how much it costs to keep it running per month? Let people donate until the bar is filled, when it overflows it goes to next month. Very visible on login screen. In this bar ofcourse include your salary for keeping it running after developement is doneish.
Maybe stretch-goals for donation to make new functions?
And please use Ko-fi for donations, much friendlier and less cutting into your profits :-)
Coding is the fun part, but it's less than 5% of actually launching and making a successful product. If you don't think you want to spend most of your time not coding, don't try to make it a business!
Marketing is more important than making something. You will get a small boost from things like this (I was always too embarrassed to post here!), but it's an endless pit of time and money! To do it right, I've heard all sorts of numbers, but a good rule of thumb is every dollar/hour you put to making your game, put a dollar/hour to marketing it as well.
From a technical perspective, your stack is fine. You want to make sure you host all your assets behind cloudflare/s3 or similar, the $5 server is fine for gameplay but if you also try to make it send all the stuff, it's gonna die. (As evidenced today!)
Most of my other experience and advice is about how to run a team and set budgets and goals. If you're going about it as a hobby (and that's probably the best way to go!) then just keep doing what you're doing, write some blogs and foster a community instead.
A little bit about my computing environment. Terribly bad Wi-Fi on terribly bad DSL in rural America. Modern CPU, but no GPU. Some visual stutters here and there. I would not be surprised if it's my network which is causing the errors, but at the same time I think the engine should assume the network is unreliable and compensate.
Anyway, thanks for the fun distraction!
Will have to check it out more on my laptop.
One thing the pinch zoom is super funky on iOS. It zoomed me really far out and I couldn’t really get it back.
Also, a very long time ago I remember seeing the early genesis of minecraft emerging on iirc https://forums.tigsource.com/. The community there is still vibrant, so if not already there then that is a good place to show your game and get solid feedback and encouragement :)
Congrats on launching though, looks like a fun project.
Congrats on 100% Authentic MMO Experience! xD
I downscaled a lot of them in blender. They are quite good for how easy it is to get them and work with them.
I used 600ms because that's a reasonable rate for walking one square and it's also what is used in the largest similar game Old School Runescape. Even at 600ms ticks, I had to do some tricks to make it feel smoother. For example, I calculate the average latency variation in the client and delay updates so that they fall more closely to exactly 600ms apart. I think 50ms could work if the players are geolocated, otherwise I think that's pushing it. You would need to figure out a very intelligient way to deal with lag at the start.
Is there a way to interact or chat on mobile?
People have said mobile works but I honestly haven't tried it yet. All my devices are too old to work with webgl.
Seems to be related to this: https://bugzilla.mozilla.org/show_bug.cgi?id=1365492
Always good to see that Firefox has a severe bug and no plans to address it.
As suggested in the bug report comments, toggling webgl.disable-angle to true in about:config lets the page load correctly. I'm not thrilled with this, mostly because I failed to find any documentation of the behavior, or existence, of that setting.
Awesome work, good luck!
I ran around smacking cows and chickens and PK-ing some people.
You can talk to NPC's and do all their quests/tasks/riddles etc and do the goblin boss fight and quest. There is a lever-door puzzle in the basement of the chef's house.
You can fish, cook, mine, smelt, smith, woodcut, farm, and craft different items. There are some special abilities you can unlock. To me at least, the fun is just choosing your own adventure and discovering things as you go.
You do have to get used to right clicking on things to see if you can interact with them.
My plan is to develop content for the next year or so, make sure it's pretty stable, and then see what happens from there. There could be a membership option that unlocks more of the world or more playtime or something. I figure I need to make an actually good game though first before I think about monetizing it.
I hope someday WebTransport gets peer-to-peer support that is easier to use than WebRTC. And Safari support.
this webrtc/udp question is something that gets asked super frequently. If you have been able to make this work, it might be worth commercializing it
Node.js is fine on the server and JS is my preferred language. That said I switched from VSCode to vim a few years back because my laptop couldn't handle all the Electron apps I had running. Now the only browser instance I run is the actual browser and I'll never go back to Electron apps.
And you can also writing C++ (complies wasm) in a browser.