Still hardly any games, why entity systems suck, and why 4k is good

No excuses here! I’m a Java zealot, but deployment is a real issue, which I personally believe Sun/Oracle has not addressed adequately (except from their own perspective, to maintain brand awareness). That said, it has nothing to do with actually creating a good game (for which Java is a great language/platform).

I’d love some tips on how to better package and deploy my Java game(s) for end-users, so they don’t need to know about Java. In short, I’m using launch4j to create a Windows exe (but the user is still responsible for installing a JRE).

I entirely agree with Cas, that Flash got it right. And while I’m on my soapbox, Java Applets should have been the platform of choice for all in-browser applications, but there are too many pitfalls getting it to work for end users.

I’ll be looking for deployment topics here at JGO, and will post some of my questions and experiences… (I’m glad I found this place, lots of really interesting discussions.)

Aha! Right:

Windows: embed your VM. Write C++ launcher. Make NSIS installer to install the lot. Do not under any circumstances rely on an existing JVM on the system. I will post some code, I think, in a bit.
MacOS: taken care of for you. Steal mine.
Linux: ditto. Ignore people who don’t have Java already installed for now. Head pains, hair loss, etc. result from supporting Linux.

Cas :slight_smile:

I agree that people find architectural problems in their code, and then invest time trying to solve them (such as building an Entity component system). But I disagree that they do this because Java is flexible. The reason they cannot solve these problems easily is because Java is not flexible, and so they have to build a framework to allow them to do this.

In a flexible language no framework would be needed.

Thanks for this summary, Cas. I look forward more details (in another topic, I presume). I’m an experienced Java application developer, but I admit my inexperience at this topic (and others, to be sure).

I loath installers. (Aside: If I were to design an OS, applications would be single files. Mac almost gets it.) Overall, I wish I could just compile a single “executable” for each platform and truly embed a JVM. That is, the JVM would be part of the executable (not something that is installed separately). Sun/Oracle’s licensing is not compatible with this, but maybe there is some hope from the OpenJDK project.

I see that you are providing a Revenge of the Titans .deb for Linux users. I’ll have to see how that goes under Ubuntu (yes, I’m one of those).

I don’t think the people trying to perfect their entity systems were ever going to be able to make a fun game. Making a fun game is really hard and takes a very specific skill set that is very rare. If you don’t have all the skills needed (most of which can’t be learned), you will fail unless you can team up with someone with a complementary skill.

I think the reason flash is so much more successful is many more artists are attracted to that platform. Artists naturally have an appreciation for look and feel which is the biggest thing lacking in the Java Dev community. I think this innate sense of feel is so much more important than people realize because the ability to analyze the psychological impact at a graphical level extends down into the feel of the game-play which is really hard to get right if you don’t have a feel for it.

Maybe that’s another way of viewing this topic:
Lots of coding and a little bit of content creation = Game development as a hobby.
Lots of content creation and a little bit of coding = Game development for a paying audience.

Hey, that’s pretty good, and very insightful. What do you think of this formula:

Lots of coding + player created content = The next big thing = Island Forge!

  • crosses fingers *

Well, as some of you know, I’m not a games developer as such, but a (hiss, spit! :wink: ) artist. Still it’s all meant to be interactive and fun, and it uses lots of the same tech. In general I’d second (or twenty-second! :slight_smile: ) Cas’s point. Just get out there and create something goddammit! And I mean something that’ll impress non-coders. Restraints are good for you and your creativity - set yourself some deadlines and go and show people summat - just make sure they’re people who think good Java is a decent cup of coffee. ;D

More people around here should evaluate using the runtime container from the NetBeans platform. Great platform for deployment. Cross platform and highly customizable installers / launchers (it is possible to include an embedded JVM with a bit of work), along with a decent module system, good native loading mechanism, and much more besides.

Lots of posting about Island Forge + lots of people around here who aren’t US resident = next big thing on my spam filter! :stuck_out_tongue:

I’m joking - just!

you can never expect java is installed, and I want to do everything I can to hide it’s java

people even now message notch saying “isnt it too slow?” - all java 1.0 opinions are never going to die

when I made a mini game recently, Arcane Nebula, I included a private VM of course
What you can also do is change the java.exe name to Gamebla.exe so in the task manager too it wont show java

but I’m gonna need that mac stuff from Cas eventually - never done anything on a mac, so I dont even now what kind of .exe equivalents there are

Ha! Sorry to be overzealous in mentioning my first game title (just over excited to actually have one). I admit, I arrived here in my search for players, but I’m sticking around for the great discussions.

Bonus points to anyone who implements a entity system in 4k ;D

You’re right to a point princec, but I’ve spent a fair amount of time doing ES stuff and while I agree you can get lost in it, the current framework I have now is pretty much complimentary to prototyping if you’ve gotten the hang of it.

You also managed to hide it from the Linux, and Mac scene, as well as making installation a hell for Windows users.
Portability, was not poart of Arcane Nebula. Sorry.

hell what? That is possible? Please make it as soon as you have time :frowning: I’m looking for a way to deploy my own jvm so long, since -as you said- you can’t rely on the jvm’s the end user has >:|

Don’t argue with linux and mac part - wasn’t trying to port it.
But about windows ? It has a nice NSIS installer for windows.
Took Cas’ advice that he and probably normal users wont even bother with a game if it doesn’t have a proper installer.
Of course just using an archive is kinda more easier for people you just want to peek in and stuff - but not for publishing

RuneScape started off using Java2D and it’s probably the most successful java game ever. (at least for now, I can see minecraft taking over)

No need to wait, you can do it with launch4j already.

Also you can use embeded JRE under Linux too and hopefully soon on Mac too. Which is the most reliable way to run Java apps.

[…] even I’ve shifted 300,000 copies of Revenge of the Titans […]

Ace. :slight_smile:

Linux: ditto. Ignore people who don’t have Java already installed for now. Head pains, hair loss, etc. result from supporting Linux.

Ubuntu is shipped with Java. Also, Open Office (or Libre Office) requires Java. I guess that Java is installed on >90% of the Linux desktops.

It barely used Java2D. All drawing was done directly to an int[] backing a BufferedImage. (It’s also worth mentioning that the company which was set up to exploit it commercially was named after the engine - although Andrew Gower had written a lot of games before writing that engine).

The point is that it didn’t start off using OpenGL, and it certainly didn’t use LWJGL. It only used Java2D.

The smallest-possible implementation over at http://entity-systems.wikidot.com/ would probably fit quite well in 4k entry.

Although I wouldn’t recommend it. With 4k, you’re not iterating enough to really care about ES, IMHO.