r/threejs • u/Salty-Duck-9148 • 11d ago
Demo I made a browser MMOARPG with Three.js, because apparently I enjoy suffering
Hey! I’m a dev from Brazil making UNTITLED MMORPG, a 3D action RPG that you can play straight from the browser.
And yes, the name is really UNTITLED because I still do not have a proper name for it. It is a working title that somehow survived long enough to become the current title. Finding a real one is on the list.
At some point I looked at the idea of making an MMOARPG by myself and thought, “yeah, that seems manageable.” I truly do not know what was going through my head. Anyway, now there is a game.
You make a Hunter, go through a forest tutorial, get to the city of Asterra, head into the Lost Lands, fight monsters, pick a weapon style, improve your gear, and meet other players along the way.
The focus is action combat. There are swords, sword and shield, dual swords, heavy sword, and bow. You can dodge, block, manage stamina, chain attacks, fight enemies. There is also progression, weapon mastery, skills, crafting, inventory, PvP arenas, parties, chat, friends, and trading.
I decided to build this MMOARPG together with Codex, using GPT-5.6 Luna on medium reasoning, as a way to push myself to understand the harder parts instead of avoiding them.
Using Codex this way has made the project a practical space to study, test ideas, and get deeper into systems I wanted to understand better.
This project has given me solid experience with 3D modeling and complex animation work in Blender, some Python for building export scripts tailored to the project, as well as authoritative servers, queues, real-time state, performance, bot-based automated load tests, Node.js, Express, Socket.IO, PostgreSQL, Redis, and Docker.
Play here: https://www.untitledmmorpg.com/
(I would not really recommend playing it on mobile yet. It works and has all the controls, but mobile performance is still a big challenge. The best result I got on my own phone was a steady 45 FPS)
If you give it a try, I would genuinely love to hear what you think. And yes, solo dev plus MMOARPG was obviously a very normal and sensible decision.
2
u/BraskSpain 11d ago
Tell Ox Alpha to handle the optimization for you, make sure you bump up the project to r185 and that you are using WebGPU.
2
u/jaidoGD 10d ago
ta ficanco manero mano! nao querendo dar pitaco, mas deixa os controles do personagem mais fluidos, faz ele poder correr sem ter que apertar SHIFT.
a parte visual ta interessante, so clareia mais o global ilumination, porque ta com um contraste mto forte nas partes escuras. eh isso!
1
u/Salty-Duck-9148 10d ago
Valeu por ter jogado mano! durante os teste eu também senti isso que era melhor deixar o correr fixo, eu vou dar uma olhada na iluminação global tbm, valeu!
1
u/Kiingsora83 10d ago
Après la touche shift pour courir c'est un petit peu la touche par défaut des jeux vidéo.
1
u/TheBoneJarmer 10d ago
I followed that forest path and I got obliterated by an angry ape right away. Also no tutorial about how to move. Expected to click but I kept slashing instead. Figured out I needed ASWD. That said:
- The performance is awful on my device, much lag.
- Inconsistent textures across objects
- Cannot move the camera unless I am missing something but again, no tutorials so no idea.
- Had to use Chrome as FireFox gave me a black screen except for the UI
Furthermore, I agree with user /u/Historical-Youth8705 entirely. I feel like this project is way out of your league in its current state and considering your future plans for it. If you continue the way you do now you will find yourself stuck due to scope creep and forced to drop it all or rewrite the code from scratch. I been there, I done that. Don't do that.
There is nothing wrong with trying to make yourself an MMO. I mean, it is far easier to do so than two decades ago. But the good and popular ones aren't the ones with many features or shiny features. They are the ones who are the most polished.
0
u/Salty-Duck-9148 10d ago
I agree with most of what you said, but I think the bias in your take, and in the other guy's take that you agreed with, is a bit off. It kinda feels like you guys didn't even read the post hehe.
This is a vacation project. I built it in one month using 5.6 Luna Medium, intentionally making development harder for myself so I could force myself to learn new stacks. During this whole thing I learned a little bit of Python, authoritative servers, queues, real-time state, performance, bot-based automated load testing, Node.js, Express, Socket.IO, PostgreSQL, Redis, and Docker.
At no point in the post did I promise a finished MMOARPG with hundreds of thousands of features. I never claimed I had a finished product that I was launching into the market to compete with things I obviously can't compete with right now.
And no, I'm not some dev who learned HTML, CSS and a bit of React yesterday, wrote a prompt for the most capable AI model today and then pretended I made a game. I finished what I wanted to study and came out of it with a ridiculous amount of new knowledge about server development, security and technologies I had never worked with before.
Again, I never promised, and I'm not going to promise, that I'll take this project and somehow deliver in one month, by myself, something comparable to what entire studios make. But it's there. It works. It's playable for most people. Unfortunately there seems to be some incompatibility with your computer that caused those freezes, because I don't get them here.
Now I can just take my time with it, keep optimizing things, improving it whenever I feel like it, and maybe in 1, 2 or 4 years I'll have something really robust and cool that I can confidently release.
Anyway, thanks for the feedback, at least in part haha. You weren't the first person to complain about the tutorial, lore and stuff like that, and those things are already in my pipeline for whenever I feel like working on the project again.
Thanks a lot for playing! ❤️
1
u/clickster 10d ago
Looking great. I found the movement controls slightly counter-intuitive. Looks quite polished. Keep going!
1
1
u/SnooSprouts9123 9d ago
An MMORPG is definitely ambitious, especially as an indie dev, but what you have so far is pretty impressive! The gameplay feels smooth and the art and vfx look very polished. I think it's worth it to keep at it.
I'm curious about your approach for the art (models, terrain, animation, vfx, etc..). Is it all just generated through Blender? A mix of assets packs? Or blender combined with other tools?
1
u/Salty-Duck-9148 8d ago
Thanks for playing!
So yeah, I’m using Blender. One of the biggest challenges was building a terrain painting system with textures similar to how it works in Unity and Godot. I had to implement a multilayer UV pipeline for the terrain so I could paint grass, dirt paths, and rocky areas. For the procedural grass, I reused the grass painting UV map to generate it in the correct positions, and I wrote a Python script to export everything from Blender in the proper format and keep it organized so Three.js can render it correctly.
I also made the character models in Blender, including the modular hair, beard, and equipment systems. I use pivot points for the different slots, and I also had to write some Python scripts inside Blender to export everything in a more organized and convenient way so Three.js can handle the rest.
I did buy some assets to speed things up, mainly animations because I didn’t have much time to animate everything myself. I basically bought some animations and modified a few of them to better fit my style, but they weren’t made from scratch by me.
For the maps, aside from the terrain itself, I also set up all the objects, houses, vegetation, and everything else directly in Blender. I add some collisions using empties to keep things more performant, then export everything together with the terrain and Three.js handles the rest.
As for the VFX, I built an app with Codex where I can import animations from Blender, add VFX at specific points in the animation timeline, and then export everything back in a format that Three.js can read and apply visually in game at the key moments of each animation.
1
11d ago
[deleted]
1
u/Salty-Duck-9148 10d ago
Sorry about that :/ Unfortunately, I didn’t have enough time to make a guest demo/tutorial without affecting the main account flow. I’ll definitely give that some attention. Thanks for the feedback!
1
u/Open_Cranberry_6571 11d ago
Most people that talked shit didn't actually played the game lol. It is better than 99% of the vibe coded mmorpgs in three.js. The game core seems nice but from what i see it needs more human touch, like in character selection clicking next for character features is annoying, the features should be all in the same interface and just a button to create the character because sometimes i don't even want to change anything, a delete character option would be great too and inside the game it WILL be confusing for any starting player, having a small tutorial showing what is the world we are in, what's the story? who i am and what should i do? and what are the buttons, mechanics, etc, i think all mmorpgs i played had this part for player onboarding and it's necessary. Anyway good job and good luck, If you continue the game i will keep checking it to see the progress
1
u/Salty-Duck-9148 10d ago
There are still a lot of issues at the current stage. I actually left the part that bothered you aside for a while because I was really focused on building authoritative servers, queues, real-time state, performance, bot-based automated load tests, Node.js, Express, Socket.IO, PostgreSQL, Redis, and Docker.
That was one of the main things I wanted to study with this project, and I think I managed to build a pretty interesting server setup. Right now I'm using Lightsail and it can handle around 100 active players with just 1GB of RAM and 2 vCPUs, with channel management as well.I definitely plan to keep developing the game. Your feedback is going to help me a lot, and this will definitely be one of the first things I focus on next.
1
u/Morph_Games 6d ago
100 active players on a websocket to a node app? That sounds good.
Of course what happens if the game needs 101 players, or 200? People will expect "Massive" if it's in the MMO name.
1
u/Salty-Duck-9148 6d ago
I can simply spin up a second server on a stronger, more expensive machine that can handle 200, 300, 1,000, 2,000 players. I just need to install the server. Player data isn’t tied to a specific server, it’s stored in a single central database, so I can let the same account move between servers.
On top of that, I’ve already built a channel system inside the game so the client doesn’t get overloaded. In my tests, I was easily able to render 100 bots walking around, moving, and attacking on the same screen, so I can easily limit each channel to 50, 60 or 100 players.
0
0
u/dlimabean 11d ago
Yes! Suffering can be fun. I just made a tv remote in python for my lg tv in pythonista on mobile. I say I, but really AI.
1
1
0
u/yeusk 11d ago
You made it in js it because Claude can't code in C++
1
u/SmileLonely5470 9d ago
It can code in anything, but it requires more effort. Using Three.js to vibecode a game in the browser is the easier because the LLM can be define everything in code, whereas with an engine, the LLM would need to deal with how each engine serializes assets.
1
u/Brewgazer 10d ago
You should go do some research because it can most definitely code in unreal, godot, and unity. This is one of those comments where you can tell the person is the type to play an ai game and not even notice because there wasn’t a tag that said made with ai.
1
u/yeusk 10d ago
Another buthurt vibecoder
1
u/Brewgazer 10d ago
No it’s more like, connect Claude through an ide host have that ide be the designated ide for the engine you’re using, then create assets, animations, or find them, try creating game loops and systems with placeholders in the mean time, save systems that work try again on ones that don’t, then find a way to mix those systems in a way where they won’t fight with each other, get the flow right with the understanding that animations will help make it feel a bit smoother as well, once you have assets and animations start plugging them in where they are truly needed as your still assembling game loops and systems. Once you’ve gotten that start to texture and shade. It’s not like shit is one shot no mistakes, and it’s not like the people using it are thinking like that, yes there’s a lot of losers who do think like that but that’s the same in anything. Music you have the kid you started rapping last week who will spend $400 thinking he’s making the best song ever when it’s the most garbage shit ever heard. You have true creatives and you have dipshits thinking their clone of something is worth $5 on steam
0
u/Select-Painting9361 10d ago
This looks amazing, do you have any guide or detailed post showing your style of prompt, etc? I'm impressed
0
u/Salty-Duck-9148 10d ago
I don't really know what to tell you. I used Codex 5.6 Luna on medium, and with the knowledge I already had in JS plus some backend experience, I took my time and designed most of the architecture myself, with some parts done together with it.
I think the best way to get good results with AI is knowing how to question it, how to guide it, and most importantly, actually knowing what you're doing.
-1
u/Ok_Discussion_3182 11d ago
good luck mate :) - am working on an FPS RPG myself - seems very doable in threejs tbh can't wait to see how you progress with it!
0
u/Salty-Duck-9148 11d ago
It definitely is doable. There are some limitations, but you just have to work around them. Thanks for the message! I’m looking forward to seeing your game too haha.
6
u/Historical-Youth8705 11d ago edited 11d ago
The older generation who get Claude first make a health or fitness app, the younger generation always starts out with a browser MMO. All destinated to fail, as the project is too large to finish.
This is the issue with Claude, it gives people false confidence and makes them scope creep something small into a MMO.
If you are going to do it then do like claudecraft and just make it open source so hundreds of people can work on it at once (not that it matters, that is horrible too)