Thread: Java Based Game Engines

Page 1 of 3 123 LastLast
Results 1 to 10 of 23
  1. #1 Java Based Game Engines 
    Banned

    Join Date
    Aug 2016
    Posts
    242
    Thanks given
    109
    Thanks received
    61
    Rep Power
    0
    Not so much a Help Question, More of a does anyone have any information kinda deal.
    So I've been reading up on game engines as a friend of mine would like me to do some work for him with Cryengine, I'm trying to get a better understanding for game engines, such things like
    are there any java base game engines besides jMonkey? why has no one used jMonkey to create a visually pleasing rsps? ive read a few topics on R-S that people have tried to recode their servers to C++
    and considering most game engines are coded in C/C++, So im assuming id have to recode as well ?

    If anyone could just give me some insight on what I would need to do , or atleast what i would need to look into to do these things as im sure im not the only one who has thought something along these lines.
    Reply With Quote  
     

  2. #2  
    Ex Rune-Scaper

    Join Date
    Jun 2008
    Posts
    3,534
    Thanks given
    457
    Thanks received
    1,257
    Rep Power
    990
    C#
    Unity
    • Great for mobile, 2D and 3D games
    • Can have some amazing graphics but not as good as CryENGINE
    • Great for intermediate-programmers (it's not extremely easy to use but it's not that hard either)
    • Fully cross-platform (android, ios, windows, mac, playstation 4, xbox one, web with webgl)
    • Marketplace (huge support for downloadable content)


    CryENGINE
    • By far the best graphical capabilities
    • Designed only for PC and consoles, including PlayStation 4 and Xbox One
    • Harder to learn
    • No royalties
    • Full engine source code
    • No license fee
    • No obligations
    • They provide a lot of tutorials because the learving curve is high


    Unreal Engine 4
    • Photorealistic graphics or simple 2D side scrollers
    • 2D and 3D
    • Mobile, Console, Desktop games
    • Access to the complete C++ engine
    • Support for Virtual Reality
    • Tons of nice tools (physically-based rendering, UI, level building, animation, visual effects, physics, networking, and asset management)
    • Marketplace
    • 5% royalty


    Java
    LibGDX
    • All features of LWJGL (Libgdx is based on LWJGL)
    • Easier to understand (Great for beginners-intermediate)
    • All of the back-end stuff is already done for you
    • Used heavily in mobile games (android or ios) or on the web (html)
    • Great for 2D and 3D games


    LWJGL
    • Allows you to do more because it's lightweight, and lower-level than LibGDX
    • Cross-platform, allows you to write code once and deploy your game to all devices (android, ios, windows, mac)
    • Very complicated for beginners
    • Great for 2D and 3D games


    JMonkeyEngine
    • Allows you to go both low-level like LWJGL or high-level like LibGDX
    • Allows you to write games quickly
    • Great for 3D games
    • Cross-platform
    • Allows you to freely design your game because of its highly extensible design


    JavaFX
    • Fairly new yet (As in when the last updates were anyway)
    • Huge improvement in regards to 3D vs Swing (JavaFX is a lot easier)
    • Has some great features but Oracle needs to update it more.
    • Simple games
    • No support for WebGL


    LibGDX is my favorite because it's really simple to use, you can write games in no time, have fairly good graphics and deploy your games on any platform.
    Attached image
    Reply With Quote  
     


  3. #3  
    Registered Member
    Join Date
    Apr 2016
    Posts
    124
    Thanks given
    14
    Thanks received
    21
    Rep Power
    37
    There's not many good game engines written in Java. My guess is because game engines are supposed to be versatile and multi-purpose and Java really limits you to making low-perf (in comparison) games.

    Why has no one used jMonkey to recreate the client? Because it's time-consuming and requires effort.

    Not sure if you really meant that users have tried to recode their servers to c++ or if you meant client. If you did mean server, creating a server with c++ is not worth it unless you really want to handle memory management in a specific manner (such as having a static amount of memory usage that will never change throughout the application's life time) or if you want the ability to speak to the hardware (can't think of a situation in games where you would need to speak to the hardware on your server's VM)

    You can have a client in any language and the server in a complete different one. They simply have to connect to one another correctly (reading and writing the same respective bytes)
    Reply With Quote  
     

  4. #4  
    Banned
    Join Date
    Oct 2016
    Posts
    65
    Thanks given
    42
    Thanks received
    17
    Rep Power
    0
    Quote Originally Posted by Mutiny_ View Post
    Not so much a Help Question, More of a does anyone have any information kinda deal.
    So I've been reading up on game engines as a friend of mine would like me to do some work for him with Cryengine, I'm trying to get a better understanding for game engines, such things like
    are there any java base game engines besides jMonkey? why has no one used jMonkey to create a visually pleasing rsps? ive read a few topics on R-S that people have tried to recode their servers to C++
    and considering most game engines are coded in C/C++, So im assuming id have to recode as well ?

    If anyone could just give me some insight on what I would need to do , or atleast what i would need to look into to do these things as im sure im not the only one who has thought something along these lines.

    honestly if you want your own game engine c++ or c# would be best, to view models atleast infact theres many tutorials out there on how to build a basic "soft engine" with C, the rest could then be done in java if you wanted.
    Reply With Quote  
     

  5. #5  
    Номер 1


    Leanbow's Avatar
    Join Date
    Feb 2008
    Posts
    5,895
    Thanks given
    1,564
    Thanks received
    2,624
    Rep Power
    5000
    Runetek
    Reply With Quote  
     

  6. #6  
    Registered Member
    Join Date
    Apr 2016
    Posts
    124
    Thanks given
    14
    Thanks received
    21
    Rep Power
    37
    Quote Originally Posted by Free View Post
    There are good java game engines out there, the issues is that much of the older game engines out there are written in C++. Most of the time game companies license game engines from other companies so they wouldn't port these game engines to another language because it requires time and money. Not mention the license may not even allow it. Andrew didn't use a license when he made RuneScape because it was a hobby of his when he was in college. (It just happened to take off and he didn't need to get a license)

    Most game companies also reuse their code from previous projects to so they don't reintroduce new bugs into the new project.. Almost all games use some sort of scripting language for content, its just the back-end stuff written in C++.

    Garbage collection was an issue with Java, we'll find out in Java 9 how well it performs with the change in GC. C# uses a very similar garbage collector and many games are written in C#. Though, C# allows you to explot your hardware a lot more easily than Java, java hardly lets you do any of this. C# allows you to use pointers so if you wanted to you could manage your memory better, Java doesn't allow pointers therefore you have to rely on the default GC java provides you.

    There are very successful Java games out there though, but to maximize the best graphics as possible as of right now it won't happen with Java due to some of the limitations it has.
    You seem to be really misinformed. You can watch several head developers (such as the head developer for Ubisoft france) speak in conferences such as cppcon specifically saying why they still use c++. If you say they should switch over to a language like Java they'll just laugh in your face. They would not be able to do half the things with a high-level language.

    If you think Java's only downfall is the GC you are sadly mistaken. I can list a few off the top of my head

    - Pass by value on anything other than integral types
    - Every method in every class is assigned to the vtable
    - Unpredictable memory usage
    - Cannot natively speak to the hardware when certain things need to be done in a specific way (i.e allocate virtual page memory in a base address of X)
    - Hides what the hardware is actually doing with your code through all its abstraction (more on abstraction below)

    Java is an Object-Oriented language meaning it's classes are built on top of classes, which are built on top of other classes, which are built on top of other classes (so on until you hit the "Object"). This may be fine to you, but the machine actually has to takes it time to get from where you're writing your code to actual data it can process (i.e SuperAbstractFerrari -> ItalianSportsCar -> SportsCar -> ...). The machine doesn't just start and end in SuperAbstractFerrari. It has to travel from SuperAbstractFerrari all the way down, finding the methods, variables and class in the vtable to get the pointer to the memory address (leading to three cache misses 99.9% of the time) in which it can now find said fields and doing so over and over until it's down to the Object. This may be fine and dandy for an application that has no hard constraint on the time to do its task, but in a field such as game rendering when you want to ideally push out every single render call in 16ms and under, this is going to be your downfall.

    There is a whole programming paradigm regarding how to write your code to help the machine (and the compiler in a lot of cases) understand it better and help it in things such as branch prediction, while also encouraging the code to use as much tightly-packed data as possible (to avoid as many cache misses as you can, in theory all your relative data should be contiguous) and many more things. The paradigm is called Data-oriented design


    Quote Originally Posted by Free View Post
    You can definitely do it, especially for the #317 because its been fully documented but is it worth your time? No, especially if you're trying to make the graphics better.
    No idea why you quoted me on this if you were going to agree that no one does it because of the time and effort.

    Quote Originally Posted by Free View Post
    Most of the community doesn't even know C++ so it would never take off. There really isn't any benefit in using C++ for a runescape private server even to manage memory because runescape isn't a very graphics intensive game.
    There really is though. So many clients use have either huge memory usage or fps sometimes trickle down to ~20 fps just to render a resizable client due to the fact it's rendering on the software. The software rendering is kind of off-topic since it's not really related to what language you're using, just a side-rant I guess. However, with the WINAPI I have been able to render a lot more models than a normal rsps at around 10x the speed. This may just be due to the fact that the data is talking to the OS directly instead of going through many layers of communication.
    Reply With Quote  
     

  7. #7  
    Banned

    Join Date
    Aug 2016
    Posts
    242
    Thanks given
    109
    Thanks received
    61
    Rep Power
    0
    Quote Originally Posted by Free View Post
    There are good java game engines out there, the issues is that much of the older game engines out there are written in C++. Most of the time game companies license game engines from other companies so they wouldn't port these game engines to another language because it requires time and money. Not mention the license may not even allow it. Andrew didn't use a license when he made RuneScape because it was a hobby of his when he was in college. (It just happened to take off and he didn't need to get a license)

    Most game companies also reuse their code from previous projects too so they don't reintroduce new bugs into the new project.. Almost all games use some sort of scripting language for content, its just the back-end stuff written in C++.

    Garbage collection was an issue with Java, we'll find out in Java 9 how well it performs with the new change in GC. C# uses a very similar garbage collector and many games are written in C#. Though, C# allows you to explot your hardware a lot more easily than Java, java hardly lets you do any of this. C# allows you to use pointers so if you wanted to you could manage your memory better, Java doesn't allow pointers therefore you have to rely on the default GC to do this for you.

    There are very successful Java games out there though, but to maximize the best graphics as possible as of right now it won't happen with Java due to some of the limitations it has.



    You can definitely do it, especially for the #317 because its been fully documented but is it worth your time? No, especially if you're trying to make the graphics a lot better.



    Most of the community doesn't even know C++ so it would never take off. There really isn't any benefit in using C++ for a runescape private server even to manage memory because runescape isn't a very graphics intensive game.

    RuneScape did perfectly fine for many years until they started upgrading their graphics they ran into some issues hence why you see a C++ client now for RS3.
    You have been massively informative free, and if i do decide to go through with this as a project i will be running to you with a lot of my questions it seems, I had never really gotten behind a game engine so I did not know that only the client would need to be modified to C++ which seems to be a huge weight off the process i was expecting lol.


    I would like to see a more graphical version of Runescape, beyond what RS3 has done.
    with a full immersive world.

    but if i did use a game engine wouldn't i need to be able to manage the memory better?
    seeing as though the graphical transformation would be drastic wouldnt it?
    Reply With Quote  
     

  8. #8  
    Ex Rune-Scaper

    Join Date
    Jun 2008
    Posts
    3,534
    Thanks given
    457
    Thanks received
    1,257
    Rep Power
    990
    Quote Originally Posted by Mutiny_ View Post
    You have been massively informative free, and if i do decide to go through with this as a project i will be running to you with a lot of my questions it seems, I had never really gotten behind a game engine so I did not know that only the client would need to be modified to C++ which seems to be a huge weight off the process i was expecting lol.


    I would like to see a more graphical version of Runescape, beyond what RS3 has done.
    with a full immersive world.

    but if i did use a game engine wouldn't i need to be able to manage the memory better?
    seeing as though the graphical transformation would be drastic wouldnt it?
    The way I see it as of now. If you want a very graphics intensive game, something that's like photo-realistic then you can't achieve that with Java (right now anyway). CryEngine is really nice and can achieve the best graphics but its extremely hard to learn. Unity is a great alternative. I don't like Unreal engine because they charge for royalties which is really annoying especially if you have your game for a long time. (Which most people do because they are in it to make money and as long as your game is making money you have to pay them royalties)

    The server you can keep Java, memory management won't be an issue at all. The client will if you want to make it very graphics intensive because you want your users to have a very smooth game play and a lot of that is tied with memory and how you're managing it.

    You can use whatever engine you like, but if you haven't written any games yet or if you don't know anything about 3D you're gonna struggle learning CryEngine. Unity is a lot more friendly even if you don't understand 3D as much.
    Attached image
    Reply With Quote  
     

  9. #9  
    Registered Member
    Join Date
    Apr 2016
    Posts
    124
    Thanks given
    14
    Thanks received
    21
    Rep Power
    37
    You really shouldn't of replied to the thread unless you were absolutely sure of what you were talking about. OP is now misguided which will be worse in the long run. Oh well.
    Reply With Quote  
     

  10. #10  
    Ex Rune-Scaper

    Join Date
    Jun 2008
    Posts
    3,534
    Thanks given
    457
    Thanks received
    1,257
    Rep Power
    990
    Quote Originally Posted by NeedDump View Post
    You really shouldn't of replied to the thread unless you were absolutely sure of what you were talking about. OP is now misguided which will be worse in the long run. Oh well.
    Lol what?

    Quote Originally Posted by NeedDump View Post
    You seem to be really misinformed.
    Quote Originally Posted by NeedDump View Post
    If you say they should switch over to a language like Java they'll just laugh in your face.
    You're implying something I never said.

    Quote Originally Posted by NeedDump View Post
    If you think Java's only downfall is the GC you are sadly mistaken.
    Once again

    Quote Originally Posted by NeedDump View Post
    Pass by value on anything other than integral types
    Java only passes by value. Don't get that confused with references; which are pointers according to Java. (It's bad naming on their part)

    Quote Originally Posted by NeedDump View Post
    Cannot natively speak to the hardware when certain things need to be done in a specific way (i.e allocate virtual page memory in a base address of X)
    Java has hardly any support for exploiting your hardware in which I mentioned because its not meant to do this. It's a higher-level language.

    Quote Originally Posted by NeedDump View Post
    Java is an Object-Oriented language
    Java doesn't only support object-orientated it supports functional as well. There's many different styles to programming, even procedural. OO is actually great for some types of games. Because almost every game manipulates stateful objects. What you mentioned is just poor design to begin with.

    Quote Originally Posted by NeedDump View Post
    No idea why you quoted me on this if you were going to agree that no one does it because of the time and effort.
    Because you can, depending on the type of game you want to make.

    Quote Originally Posted by NeedDump View Post
    So many clients use have either huge memory usage or fps sometimes trickle down to ~20 fps just to render a resizable client due to the fact it's rendering on the software.
    You realize the clients you're implying about having memory issues because people don't know what they are doing. Thinking something is optimized when its really not. Not to mention trying to use the #317 to render things its not capable of.
    Attached image
    Reply With Quote  
     

Page 1 of 3 123 LastLast

Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Similar Threads

  1. Java 2D Game Engine
    By CrazyPanda in forum Application Development
    Replies: 5
    Last Post: 09-17-2016, 10:26 AM
  2. Java 2d game engine development
    By blackaddiction in forum Application Development
    Replies: 53
    Last Post: 01-22-2012, 09:01 PM
  3. [JAVA] 3D Game Engine.
    By Mouse in forum Application Development
    Replies: 14
    Last Post: 11-30-2011, 12:26 PM
  4. [Java] Simplicity Tile Based Game - Livin' the Simple Life
    By Wizzy G in forum Application Development
    Replies: 8
    Last Post: 02-15-2011, 04:52 PM
  5. [JAVA]Game engine
    By Inept in forum Application Development
    Replies: 10
    Last Post: 07-19-2008, 06:07 AM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •