Hello there! So far I’ve been working on some small projects, but now I’ve decided that I want to start a bigger project. So I’m thinking to program a 2D sidescroller RPG-ish, that has a multiplayer part.
For starters, I can’t decide on which engine to use; I’ve worked with both LibGDX and slick2D, and I’m leaning towards slick2D because I’ve been using it more, but from what I’ve read it’s outdated. The game is going to be running on PC, I’m not going to port it to mobile devices(Android or iOS). I will consider other engines too, if suggested. So I’m asking for your opinion, which one should I use and why?
Like I stated above, it’s going to have some networking involved and, again, I don’t know which API to use. I’ve considered KryoNet and Mina Apache so far, but I don’t know anything about them and I don’t know which one is better.
Also, I’ve been thinking about how to implement the data transfer. The terrain is going to be like in Terraria or Minecraft. So far i thought about splitting the map into chunks and sending some of them to the player based on his location, along with a list of mobs and other players. To keep the map updated I’m thinking about transferring a list of updated blocks between the server and the clients, so I don’t have to send the whole chunk again. But I don’t know how to do mob movement and combat, and how to keep it in sync across clients.
I know there are a lot of questions, but this is my first project of this kind and I want to do it right. Thank you for your patience.
Even if you’re going with PC only, I’d still say go with LibGDX. Slick operates in immediate mode with no geometry batching, and it lacks anything as useful as scene2d (slick-gui really doesn’t count). You’ll be able to use tools like Spine for animations if you like, which has integration with GDX but not Slick. And you’ll have a community website and forum that’s still there and plans to remain so.
As for networking, I’d recommend KryoNet. Mina is very low-level in comparison, and it’s kind of obsolete anyway, with most of its users (including its developers) having moved on to Netty. Netty is a great networking API to study, but you probably don’t need it.
Start simple, write lots of unit tests, and give your network clients and servers debug modes that deliberately slow down or drop packets.