Sign in to follow this  
Septharoth

[Java] Isometric ORPG Engine

Recommended Posts

Hello everyone!  Just dropping by to post some progress reports of my current project in Java.

 

For the last month or so, I've been working on and off with a new game engine, inspired by the classic "Endless Online."  

This is entirely coded in Java, to allow for cross platform support on both the client and server.

 

The client will be using LibGDX for their tremendous library of amazing features.

I'm building my server model and client connection class off of Java's NIO library.

 

I've got screenshots from the first attempt at the project, as to mark early stages of the idea and to look back on for memories.  I'll create sort of a "timeline" of screenshots for the project, opposed to the traditional way people share their projects.

 

This is the first successful rendering of the map, and player. Though, without animation..

(Outdated Screenshot, pre LibGDX)
OG0M9OD.png

 

I then worked out a basic camera system, animation, and player movement. (Outdated Screenshot, pre LibGDX)
TDKxTqwtX6.gif

 

Soon after; I added basic methods for displaying Player properties (HP/MP/SP), I also created temporary objects for an ESC Menu and Chatbox.  These would be removed after finding an artist of some sort.
xc9muAO.png

 

After an annoying battle with understanding how networking really works, I successfully rendered other players to the screen, as well as displaying Admin Chat logs.  This is where I decided to restart the project.

 

(outdated screenshot, pre LibGDX)
Screen_Shot_2018-02-15_at_2.54.14_PM.png

 

Since then, I've moved on to using LibGDX and would not regret it one bit!

 

Here are current versions of Main Menu & then a Character Selection concept.  LibGDX uses a "UISkin" to create it's version of swing components, I am currently still waiting for my UI Artist to finish creating this for me.
Screen_Shot_2018-03-12_at_4.30.43_AM.png
CharacterSelection.png?width=615&height=

 

Upon actually having these GUI concepts, I decided to start REALLY getting into LibGDX's Scene2D, using stages and tables to my advantage.  I did not style, nor continue with anything else as I'm still waiting for the custom uiskin files.  Create button was placed in a separate part of the table to better understand the origin points of table row/column corners.

 

Screen_Shot_2018-03-13_at_7.05.51_PM.png

 

Soon after, Map Rendering, player rendering (without data yet! I'm not trying to get TOO far ahead of myself and make things complicated once I get the uiskin files)

Screen_Shot_2018-03-14_at_5.23.11_AM.png

Movement is pixel based for now - may or may not be subject to change.  (I found the tiles on the internet, and will not be included in official releases.)

 

 

As I progress with this project, I will be seeking pixel artists as that will be seemingly the hardest position to fill.  Once I've got a better model to show off.. I'm sure you guys will jump on it :P
 

Give me design ideas, what you think I should add to the game/engine, and I will try to share my project as I develop the engine.

Important notes:

  • For now, the project is named "jEndlessOnline," solely to reach out to the dying community Endless Online left behind and grasp interest into a new game.
  • The final, finished product, will not use any artwork or names from Endless Online.
  • I am going to reiterate that this is NOT a remake of the game, it will NOT be compatible with the "Endless Online" Client, Server, or Private Server software.
  • Credits belong to EndlessOnline for their character sprites, and Im afraid I can not find the source of the tileset used.  Let it be known that I do not intend to claim any of the artwork currently in the project as my own.

 

 

I would absolutely love input, suggestions, what you would like to see in the client.  

Share this post


Link to post
Share on other sites

I don't have time to read the post. But let me say this:

 

My girl and I are huge fans of Endless Online. We played Endless Online private servers (EOServ) religiously. We also developed a server and coded on the EOServ framework.

 

We like the idea of resurrecting Endless Online. EOServ is great, but there really needs to be an open source client that a developer can fully modify. That's where EOServ lacks hardcore.

Id love both a generic isometric ORPG engine, as well as a more specific Endless Online style ORPG that I can fully modify to my liking (with both client and server).

 

Keep up the good work!

Share this post


Link to post
Share on other sites

Most definitely, guys! 

 

I will be quite busy with real life in the upcoming weeks but i wll be working on it as much as i can.  Once ive reached a point for closed testing ill seek some old friends and some randoms from here to hop on.  I also didnt plan on releasing anything open source at its current state, if this is an engine i will distribute both client and server software for; it will likely be obfuscated and include a Lua based Scripting system.

 

Thanks for the feedback, and also Shilo; I have tons of design ideas to REALLY change the gameplay to something with a little more action, making a proper class system so there arent pointless classes.. I guess in comparison to what the EO client was, Id like to finish it and extend it to a more modern era ORPG.

 

Things like instanced dungeons, raids, bosses are a must in my opinion. Other skill sets or even activities. LibGDX offers a particle engine.  Theres tons of things that are easily achieveable with the right mindset.  I also planned to make it need registration on a website rather than the game itself, maybe have it support different forum software like xen, ipb, smf, phpbb etc.

 

But to give everyone some insight on the cross platform aspect is so far;

 I have been able to build a runnable jar for Windows and Mac, have not tested with any typeof Linux.  I did come across some error in the class that handles connecting and internal methods when trying to build for html5, ill look more into it when i get home from work.  I believe that libgdx has it compile to js when i run the gradlew command. But an unsure off the top of my head sorry.

 

I do also have a separate project, which im likely to include to this one some how.  But am working on my own forum software, something lightweight and minimalistic, but waa thinking it would connect to the game in some way, even if it only handled account registration between the two, this could result in increased traffic to the website and maybe lure new forum users.  I believe something like that on any game would be beneficial in terms of monetizing your game.

 

 

And to clarify the reason as to why I REALLY wanted to start this project was for a hugr learning adventure, as upon entry I knew little to nothing about networking.  My java experience came from making scripts/bots for different botting software.

Share this post


Link to post
Share on other sites

That's awesome! Just a few things to keep in mind (not sure if you've already covered them):

1. Use a database for storing information (MySql, Postgres, and MongoDB are all good options).

2. DO NOT STORE PASSWORDS IN PLAINTEXT. You'll want to hash and salt the passwords using a secure algorithm (i.e. bcrypt).

3. I recommend reading up on various security methods. Computerphile has a ton of good videos on network security.

4. Remember to never trust the client. Seriously, never trust it. The server should make all decisions.

 

I know my "tips" were uninvited and I may even come off as arrogant by putting them in this post (a sort of backseat programming) but I feel as they are relatively important, even for the initiated. I see way too many projects inspired by Eclipse Origins ignore the aforementioned things; instead opting to store data in raw files (without a database engine), exposing passwords in plaintext, and disregarding security. Note: I am not intending to be a backseat programmer, just offering my insight.

 

Lua sounds really cool. I've enjoyed integrating it into my games before. However, I am not sure whether the Lua support in Java is all that good. NLua for instance, while it is easy to use and fairly powerful, it is also pretty slow. That is not to say that you can't do Lua in Java because you certainly can. Just don't make the mistake of doing too much in Lua. I've done that before and it killed performance. I like to use Lua for scripting gameplay behaviour/logic.

 

In any case, your progress has been stellar and I wish you the best of luck! If you need any good multiplayer programming resources, hit me up, I have a ton of books and resources I can recommend. 

Share this post


Link to post
Share on other sites

Love it man, most of that is common sense though.  And my idea with lua was to have the game logic and behavior coded with the java and the would extend or rewrite the main code.

 

Maybe even find a better choice of scripting.  We will see when the time comes.

Share this post


Link to post
Share on other sites

Yep, it should be common sense haha. 

Take a look at Python, I find it much better than Lua. It's much more powerful, in my opinion. But yeah, don't worry about it for now.

Share this post


Link to post
Share on other sites

After tons of researching and experimenting..

I think I'll be rewriting the server, and the client's main connection class using Kryonet, as it's more of something that could be user friendly if I were to release this open source.  Which; being back here is something that's definitely been coming to my mind.  I still plan to make my own game, but I feel as if you guys following my journey in developing this engine;  it would be unfair to not release it to you all.

 

And, I'm hopeful that my UI artist will be done soon enough with the uiskin files so I can get back to real work on the menus and everything.  This will allow me to create the UIs programmatically instead of rendering images over images; which ultimately would be the best decision for something that is looking more towards a public platform for game development.

Share this post


Link to post
Share on other sites

Ill post some updates in a few days.

 

Have been rewriting everything, fixing the architectural design and making things more organized.  Ive picked a new team member up as well, more details when ive screenshots to provide.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this