Continuation of Java Version?

A new update is now available, introducing seasons and more!
  • nope. well, not in the form of updates, anyway. developing one game is time consuming enough, red can't do both. java will remain as it was when the switch to unity began, forever, while unity will come to match and then surpass it in every way.


    red will probably still offer support in the form of talk assistance when people have difficulty with java, tho.

    ich kann nur ein bisschen deutsch sprechen (mehr lesen). fur alles andere, es gibt google translate.


    any blueprints i share are free to use however you want (aside from selling them obviously), but i would love to see what you do with them, and be sure to credit me when you share projects that involve my work.


    Bitte verlinken Sie zurück zu meinen Blueprint-Threads (oder erwähnen Sie zumindest meinen Namen), wenn Sie Projekte hochladen, die meine Arbeit verwenden.

  • I'm guessing a lot of the code from Java will have been reused (rewritten) for Unity and improved upon during the rewrite. Java and C# are syntatically very close.


    Releasing the code for Java version would be like giving away his business. So it's pretty unlikely. :crazy:


    Having said that, the Java version still works, and there is a pretty solid API for it. So someone could continue working with it making plugins. Not to mention mods would be easier as the codebase isn't going to change again, so mods would be persistant.


    Honestly though, it's probably time for it's sunset.

  • Absoluty my opinion.

  • I'm guessing a lot of the code from Java will have been reused (rewritten) for Unity and improved upon during the rewrite. Java and C# are syntatically very close.

    Most code for current version is C++, not C#, so it will be different. Some parts will be logically equal, but this doesn't mean that they can be ported directly. C++ use many things that Java don't, like pointers, for example. And it requires manual garbage collection, so you will need to check for memory leaks much harder.


    Most old code was also based on JMonkey Engine things (like physics, lights, GUI, and so on), which will require complete replacement on Unity as this is different engine. Some changes related to it you can already see in possible GUI API description

  • I was not for a second suggesting the existing code was reused. Hence the keyword - rewrite.


    Data structures as you know are the same whatever language you choose to write in.


    I stand by my initial statement; giving the source code away for Java version would be like giving your business away.

  • I'm sure you know not than me - I'm not a programmer, but how do you know its C++ and not C#?


    I've followed RW development for many years now, and I've never seen a post mentioning what the new game will be written in except that it's going to be using Unity.


    As the Java version was written in, well, Java, I just assumed the new one would be C#. As it makes sense to me. Again, not a programmer. A hobbiest at best. :saint:

  • I'm sure you know not than me - I'm not a programmer, but how do you know its C++ and not C#?


    I've followed RW development for many years now, and I've never seen a post mentioning what the new game will be written in except that it's going to be using Unity.


    As the Java version was written in, well, Java, I just assumed the new one would be C#. As it makes sense to me. Again, not a programmer. A hobbiest at best. :saint:

    everything i have looked at about/for unity is c# . also, from everything i have looked at c# is a lot more like java than c++. you mentioned data structures as well, i had not even thought of that. that being said i agree it would be giving the game away, unity version or not.

  • Data structures as you know are the same whatever language you choose to write in.

    This is not correct, different languages have completely different implementation, brief example: in Java enums are objects, in C# it is numbers (which means that they can't store data, but can be casted one to each other and to numbers, same for C and C++), in scriptable languages there is no concept of enums at all. Different languages may have or not have concept of arrays, different indexing, may not have classes, have different ways of inheritance and so on.


    how do you know its C++ and not C#?

    From Red, it was mentioned on Steam and on Forum. This is also an only one choice to make possible run Java in Unity as it will require custom instance of JNI.

    C++ is also a good choice, as while Java and C++ have semi-equal operational time Unity C# was 40-50 times slower (worlgen tests from Steam)

  • everything i have looked at about/for unity is c#

    C# is a scriptable language inside Unity editor while C++ is the language of Unity itself. It is possible to write code for Unity on C++, but this is not common practice - C# purpose is to make development simpler, but more limited. C++ was chosen due to two main reasons: it is required for JNI and it is much faster than C#. It is possible to run JNI in C#, but only for android, so most answers if you will ask "how to run Java in Unity" will be "You can't" as it is not completely supported on C# level

  • I wouldn't really 'class' a enum as a data structure myself, more a data type. Big difference. But hey, whatever, we're not here to fight.


    I guess then when I was taught about data structures and algorithms and their abstraction, and the ways that they can be implemented in any language I was lied to.


    Looking back, what a stupid assignment the lecturer to give us to ask us to write a linked list in 3 different languages of our choice. Feel like I was trolled now.


    Thank you so much for your in-depth correction though. :thumbup:

  • I wouldn't really 'class' a enum as a data structure myself, more a data type

    Enum in Java is an Object, so it is included in data structure. Enums can be parent/child for each other, for example, or have other data types in hierarchy. And they can store data inside (which is a common practice in Java) while they are still an enum.
    Java itself have two types of data - objects and primitives. Enum is object in Java, while in C# it is a primitive, so it will have different behaviour.


    Brief example:
    You have enum of fruits, what will operation like APPLE + BANANA mean?
    In Java: syntax error, you can't use "+" operator on objects
    C languages: That's valid operation, I will just return a number for that

    So if your code in Java have a complicated enum structure it will be hard to port it into C languages, and more important - if this structure is a part of another library that you are using it will become much harder. From both code side and license side, and this is also a RW case as it uses JMonkey Engine, so it is related to JMonkey implementation of things which cannot be ported and must be carefully replaced with analogues


    they can be implemented in any language

    Technically this is true, but only for ideal abstract algorithm (and, I guess, for turing complete language). Most real tasks in huge projects are highly twisted with side libraries, different aspects of specific code language and many many small details. That's also a reason why most banks still use code from 70-80 on Fortran - it is almost impossible to port it on another language


    Addition: Red's post about languages and what parts of RW uses C++

  • https://en.wikipedia.org/wiki/Enumerated_type - I just quickly edited Wikepedia to backup my argument :monocle:

    You have enum of fruits, what will operation like APPLE + BANANA mean?

    I sure as heck have never used an operator on a enum like that before :crazy:


    But, like I said, I'm no programmer. I'm sure your kung-fu as a professional programmer is better than mine.

  • You have enum of fruits, what will operation like APPLE + BANANA mean?

    I guess you could do this. . .


    Java
    public class EnumFruits {
        public static final int APPLE = 1;
        public static final int BANANA = 2;
    }


    It's not using the built in enum class, but it works the same, and it's written in Java


    Java
    int x = EnumFruits.APPLE + EnumFruits.BANANA;
    //x = 3

Participate now!

Don’t have an account yet? Create a new account now and be part of our community!