Hello, everyone!
Since this jam is very hard by default, I decided to make a small Guide to help you get started with it and also recommend a bunch of cool technologies and tips and tricks to help you finish your MMORPG in 3 days. Reply this post if you feel like I miss something and feel free to suggest new recommendations for me to include in it in the comments.
About the Rules...
The first thing I'd like to point out is about the Jam Rules:
Tough ones, right?
Well... not really!
What you may have not realized yet is that the ultimate goal of the "hardest jam in the world" is to allow you to ultimate challenge yourself to your own limits, yet still doing something in common with the other participants. But this also means that every participant have different limits and may find some of the rules "impossible" or "easy". That's why they have a bit "OPTIONAL" bellow them. You can pick the best combination of rules that fits your current knowledge extent, and that's totally fine. 馃槉
What really matters is that you try, push yourself to the limits, and finish the damn game!
So if you want to do all the rules by their 100%, then go for it... but if you want to do only half of them, you're free to pick this setup too.
With that said, let me give you some IMPORTANT tips:
Creating your own "Engine"
One of the OPTIONAL rules for the jam is to use your own Game Engine or technology to make the game. Some people misunderstand this rule a bit, so I'd like to clarify two things:
- #1: You DON'T NEED to make the Engine DURING the event!
I found that people that does NOT know how to make a game engine will probably not have a great time figuring it out DURING the jam (I don't recommend it if you don't know what you're doing, and ALSO, check the SECOND misunderstanding if that's your case) and the ones that DOES KNOW how to make an engine, will probably already have one or at least a bunch of useful code in the developments, so if that's you, you might as well use your tech during the jam. It's fine!
- #2: You DON'T NEED a GAME ENGINE to make a GAME!
This misunderstanding is very common. When I say this "your engine only" rule, people often think that they need to create their own Unity or Unreal for the jam. That's not true. You can simply just make the game by itself, with "no engine", and write your own rendering/physics procedures for it (and yes, you can use Libraries). So if you're new to this "game engine" thing, this is the path I recommend.
Hosting your MMO Server
You'll have to host it somewhere in the internet and the best way to do that is by using a VPS machine with Linux (or something, but Linux is usually cheaper to find - and better - than Windows Servers, keep that in mind). If you never used a VPS before or don't even know what it means, it might be a good idea to check this part before the jam starts and even try to run a program in it, open an UDP or TCP port and so on. So I'll leave this Google Article about what is a VPS here.
But the most important aspect is that I recommend you to choice the VPS you'll be using for the jam and set it up beforehand, since it could be a timely task if you have zero experience with it. VPS are usually not free, but they use to be cheap, like ~$5 a month, depending on the settings. The one I personally use is DigitalOcean, with pricing starting at $4/mo.
There are plenty of "free tiers" in other providers, such as AWS, Google Cloud and Oracle Cloud. This GitHub Page here have an extensive list of all of them and a comparison of the free tiers. If you go with a free one, JUST BE AWARE that some of them requires you to insert your credit card info AND if you overflow the free tier limits, it will automatically charge you. So make sure you are monitoring the rates to not end up with a thousand dollar bill. :P
Be Aware that Custom TECH may be good...
In an MMO, a lot of the fancy stuff happens in the server side. And it may not be very easy to run "Unity" or something like that in such a limited environment like a cheap VPS...
So what you'll probably want to do is to write the server side yourself, with the minimal amount of boilerplate code possible. And for that, having your own Technologies (Game Engine, lib, etc) may be a facilitator. Physics, math and so on could become a bit easier to manage if you do it like that. It's not a rule, but it is important to think about it before and plan ahead!
Library Recommendations
If you decide to make your own tech to create the game, or even if you're not, you will still need some custom code for the server side. So I'll be recommending some libraries for various tasks that I find good. All the libs, if not said upfront, are for C/C++, but most of them have a lot of bindings to different languages, so it's worth having a look.
- Enet (for Networking): http://enet.bespin.org/
- Glm (for Math): https://github.com/g-truc/glm
To handle the main Engine/Client aspects, such as rendering, window and event handling, audio and so on, we have those two amazing libraries:
- Gunslinger: https://github.com/MrFrenik/gunslinger - This one is nice!
- Raylib: https://www.raylib.com/
- Panda3D (for Python): https://www.panda3d.org/ - I've never used this one, but people like it
For 3D Physics, we have those two that are amazing. Be aware that it may or may not be overkill to run then on a simple MMO server with simple collisions. But here you go:
- Bullet Physics: https://github.com/bulletphysics/bullet3
- Jolt Physics: https://github.com/jrouwe/JoltPhysics
And if you decided to completely ignore the "It must be 3D" rule, here is some 2D goodies for you:
- Box2D: https://box2d.org/
- PyGame (for Python): https://www.pygame.org/docs/ - This one is nice!
Free Assets Recommendations
Well... what about the "No PREMADE ASSETS" rule?
As I said, you may want to follow it... or just to completely ignore it in favor of finishing the game. If that's the case, I only recommend two amazing free assets sources (other than itch.io itself and OpenGameArt):
- https://quaternius.com/ - (they are all Free and CC0 - Public Domain!)
- https://www.kenney.nl/ - (they are all Free and CC0 - Public Domain!)
That's it!
Have a great jam and enjoy it!