
Show HN: Hordes – A Mmorpg in JavaScript - johmar
https://hordes.io/
======
crisopolis
I love the UI, and how performant this game is for being JavaScript. What GFx
engine does this use? Also timeline to getting to this Alpha? Years?

~~~
johmar
The alpha is using three.js, which is fast enough for what alpha is doing. For
the beta, I wrote my own renderer based on OGL that uses a lot of
optimizations for specific things that you can't easily do with Three.js
(batch draw calls of dynamic objects for example).

Largely, the alpha was made in 3 months, after which I added features on and
off. I did not work in it full time, but released two major updates from
2017-2018. (Items, and UI overhaul).

In late 2018 I started working on the beta. Entirely new codebase, too much
technical debt in the alpha. Many technologies were improved, such as moving
from a json based net protocol to a much faster and smaller binary net
protocol, moving away from mongodb and threejs.

The result is now a much more stable and future proof engine. We even have a
world editor that also runs in the browser and communicates with the server.
You can edit the world with multiple people at the same time with the changes
reflecting in real time for the players.

~~~
badsavage
Awesome work! What is your technology stack now?

~~~
johmar
Thanks! The entire project essentially lives in a series of horizontally
scaling node.js processes doing all kinds of things. The worlds are divided
into chunks which helps significantly with culling network traffic and
distributing the load.

For the database I moved from MongoDB to Postgres. When I started doing Hordes
I had very little DB experience and thought that using MongoDB might be a good
idea since I am using node. Turns out that Postgres is much better at helping
with transactional logic for an MMORPG. Inventory management for example can
be constructed almost entirely with constraints, ensuring that the data
_always_ makes sense (no two items occupying one slot, that kind of thing).

The alpha used vanillajs for the entire front end, but with the beta I started
using Svelte and Rollup, which I would highly recommend for almost anything.

~~~
crisopolis
Postgres is my fav. I've never heard of Svelte but just looked it up and might
have to give it a whirl.

Anyways great information and great work on your MMO! If you ever need more
Dev staff I'd love to help!

~~~
johmar
Hey, thanks! Feel free to check by on our discord channel -
[https://discord.gg/hordes](https://discord.gg/hordes) :)

------
atum47
I'm waiting to get home to play it. Im working on a 2D rpg, but no release
date yet. All vanilla js too.

------
jessehorne
Oh man. I found Hordes recently and was impressed. I guess I didn't expect a
3D game to run so smoothly in my browser. Glad to see it here! Quick question,
what's the plan with beta? I signed up a few days ago! Great work, by the way!

~~~
johmar
Thank you! WebGL is underutilized in my opinion. You can do a lot with it, and
if you do it right, it can be performant, too. Right now the Hordes Alpha is
more or less a concept for what the game is meant to be, and the Beta is a
total overhaul. We're doing tests on the weekends and the response has been
very positive!

Some of the new features will include:

\- A party system that allows 10 people to group up and fight bosses together

\- A skill progression system for each class, with a vastly broader amount of
skills you can learn

\- Much larger worlds, and the ability to chain many worlds together

\- Improved performance, slicker netcode, and overall a more snappy experience

If you're interested, you can sign up for the beta here:
[https://beta.hordes.io](https://beta.hordes.io) Hit me up when you're around
:)

~~~
jessehorne
I'm extremely excited to see those features. I appreciate your response. I'll
definitely be in touch!

------
badsavage
I am really interested in the beta and also would like to help somehow:
bobo.linux \@ \g\m\a\i\l\\.\c\o\m

