Beginning graphics

Started by
9 comments, last by juba 10 years, 3 months ago

Hey all.

I'm new to game programming but I've been programming in general for at least a few years. I need to know where to start with graphics as I've never worked with moving graphics or anything like that before. My best language by far is Java so that's what I'll be using. Once I gain some knowledge my ultimate goal is to make a very simple top-down sprite art RTS game if that helps you understand what I need to learn.

Thanks!

Advertisement

Java has Swing or AWT as the workhorse for windowing and whatnot. I hear they're not all that great for games, but that's pretty much all I've been using because I can't be bothered to look for anything else XD I think Oracle has some tutorials on how to work with those APIs, you might want to find those.

Yo dawg, don't even trip.

Light weight Java Game Library or lwjgl - http://lwjgl.org/

I believe it is a binding for OpenGL, OpenAL, OpenCL, and GLSL.

Minecraft used this library. It could be fun to try and create some minecraft mods to get some learning in.
http://www.minecraftforge.net/wiki/Basic_Modding.

It looks like you want to do 2D as your ultimate goal though so you can look here

http://lwjgl.org/wiki/index.php?title=Space_Invaders_Example_Game

Hi,

I feel that jMonkey is great for a Java beginner in game development. You can tweak the game engine source code with a pretty liberal license, too. Since you already know Java fairly decent, then get to know Blender which is part of the typical workflow pipeline for jMonkey. No need to reinvent the wheel, or reinvent anything else for that matter.

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software. The better the workflow pipeline, then the greater the potential output for a quality game. Completing projects is the last but finest order.

by Clinton, 3Ddreamer

I myself wish to throw in LibGBX as a java tool. When you are done you can launch to android and computer if you wish with very little work. However, I haven't played with any of the other libraries mentioned, so I recommend looking into each and seeing what looks simplest to you. (I mainly needed to rotate some sprites for android when I found LibGBX, as doing the OpenGL ES got a tad annoying)

I'm using Swing for my game project. It's not particularly powerful nor optimized for gaming, but for something simple like what you describe, it should do the trick. If all you need is a game loop, a window, mouse and keyboard control, and the ability to draw sprites and text, then Swing has you covered. Plus, it has the advantage of being built into Java, so no carting around libraries full of stuff you might not need. The Oracle documentation on the Swing API is quite thorough, so I recommend starting there.

My website: Brass Watch Games

Come check out Shipyard, my first real game project (Very WIP): Game Website Development Journal

Shipyard is a 2D turn-based strategy with a sci-fi theme, in which you build ships from individual parts rather than being given a selection of predefined models.

As an addition to the game library, it seems you might be confused about just how graphics move. This is usually done in an update loop that changes what the user sees based on events. For example in pong, the up key (event) will be held for 200 milliseconds. Based on this, the paddle might move 20 pixels. The update loop redraws the screen and provides the new image. Events are controlled by often controlled by booleans. Is upkey pressed?

There is also some opportunity for animators to run a sequence of images when an event happens.

Hopefully this doesn't insult your intelligence and someone else could probably give a more cohesive explanation. I just have been thinking about that question recently. How do images actually move?

Java has Swing or AWT as the workhorse for windowing and whatnot. I hear they're not all that great for games, but that's pretty much all I've been using because I can't be bothered to look for anything else XD I think Oracle has some tutorials on how to work with those APIs, you might want to find those.

Swing is aiming for deprecation due to Java FX and its usefulness is currently found only in select mobile devices. Just a friendly FYI.

Shmoopy, I don't know if you wanted to create a game or a game engine, so I included suggestions for both.

Game Engine: If your aiming strictly for graphics, it sounds like a game engine is what your aiming for. Assuming so, and if your not aiming for any special platform, you'll want to study the following Doc Overviews (API):


Java SE 6 or above: http://docs.oracle.com/javase/6/docs/api/ - Core Java (Study multi-threading and how to make things thread safe).

Java FX 8: http://download.java.net/jdk8/jfxdocs/ - Use for interface design (Is replacing Swing)

JOGL: http://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/ - (Use for OpenGL Rendering).

If you intend to access a relational databases using the JDBC or doing any business logic (Struts, Hibernate, Spring), you'll need to go into this too:

Java EE: http://docs.oracle.com/javaee/5/api/

* If you intend to use the Hadoop DB, just focus on your JavaScript and Java Core and disregard the need for JavaEE.

Game: Assuming you want to make a game, I would suggest using the jMonkey engine. They have a modified version of the Netbeans IDE specially tailored to their needs, which can be accessed by going to this site: http://jmonkeyengine.org/

Once you install their IDE, I would suggest refreshing up with their Doc Overview found here: http://hub.jmonkeyengine.org/javadoc/

If you intend to make a game for a specific platform, you may need to adjust my suggestions above to tailor your needs. As an example, I do not believe Java FX is supported on Android (where use of Swing may be needed). Also, Google has their own API which (and correct me if I'm wrong) has their own version of a OpenGL library nullifying the need for JOGL.

Likewise, you may also want to consider your legal direction. jMonkey engine and their IDE are copy left licensed (GNU Version 2+). If you want to sell the game, don't make it with jMonkey. If you want to sell service with the game, you should be fine but I would suggest reading up on the legal details here: http://en.wikipedia.org/wiki/GNU_Free_Documentation_License

Hopefully, this'll give you a good start. Feel free to add to this suggestion all, as my suggestion is very broad, basic and general.

- For the record, I don't make games (yet). I just code business logic and had some exposure to game development in general.

Starting with JavaFX (its been included since Java 7 AFAIK), while it might be harder than starting with Swing, it's a better move in the long run IMO.

It's a common issue, Swing has been out for a very long time, so there are tutorials, books, documentation, examples, everything. JavaFX is more green but it will simply best Swing in the next years (it has to).

Besides, its scene graph architecture lends itself better to what you'd find in a game.

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator

Java has Swing or AWT as the workhorse for windowing and whatnot. I hear they're not all that great for games, but that's pretty much all I've been using because I can't be bothered to look for anything else XD I think Oracle has some tutorials on how to work with those APIs, you might want to find those.

Swing is aiming for deprecation due to Java FX and its usefulness is currently found only in select mobile devices. Just a friendly FYI.

Shmoopy, I don't know if you wanted to create a game or a game engine, so I included suggestions for both.

Game Engine: If your aiming strictly for graphics, it sounds like a game engine is what your aiming for. Assuming so, and if your not aiming for any special platform, you'll want to study the following Doc Overviews (API):


Java SE 6 or above: http://docs.oracle.com/javase/6/docs/api/ - Core Java (Study multi-threading and how to make things thread safe).

Java FX 8: http://download.java.net/jdk8/jfxdocs/ - Use for interface design (Is replacing Swing)

JOGL: http://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/ - (Use for OpenGL Rendering).

If you intend to access a relational databases using the JDBC or doing any business logic (Struts, Hibernate, Spring), you'll need to go into this too:

Java EE: http://docs.oracle.com/javaee/5/api/

* If you intend to use the Hadoop DB, just focus on your JavaScript and Java Core and disregard the need for JavaEE.

Game: Assuming you want to make a game, I would suggest using the jMonkey engine. They have a modified version of the Netbeans IDE specially tailored to their needs, which can be accessed by going to this site: http://jmonkeyengine.org/

Once you install their IDE, I would suggest refreshing up with their Doc Overview found here: http://hub.jmonkeyengine.org/javadoc/

If you intend to make a game for a specific platform, you may need to adjust my suggestions above to tailor your needs. As an example, I do not believe Java FX is supported on Android (where use of Swing may be needed). Also, Google has their own API which (and correct me if I'm wrong) has their own version of a OpenGL library nullifying the need for JOGL.

Likewise, you may also want to consider your legal direction. jMonkey engine and their IDE are copy left licensed (GNU Version 2+). If you want to sell the game, don't make it with jMonkey. If you want to sell service with the game, you should be fine but I would suggest reading up on the legal details here: http://en.wikipedia.org/wiki/GNU_Free_Documentation_License

Hopefully, this'll give you a good start. Feel free to add to this suggestion all, as my suggestion is very broad, basic and general.

- For the record, I don't make games (yet). I just code business logic and had some exposure to game development in general.

I did some follow up research on my own comments, just to validate it's accuracy. I like this stuff and like to sharpen my skills in it so it was no bother to me.

First off, for mobile development, you wouldn't use Java FX. Rather, you would use Java ME. However, there is a Google variant of this (and a lawsuit from Oracle because of such). I'm pretty confident in saying that this Google variant is likely a better option for games, as Oracle has a habit of aiming strictly for business logic and applications.

Also, I did verify that Java SE has a Java 3D API. Unfortunately, the feed back regarding this is awful. I still stand next to JOGL. You might be interested in watching this for further information regarding JOGL:

I also found out that the Unity engine is now supporting Java. It uses the IKVM.NET framework that converts the Java code into C#. It seems to have been tested enough to validate it's working functionality. Based on the reading, Unity was originally designed to work only with JavaScript. However, it was later expanded onto C# compatibility but did not include the IKVM.NET framework at the C# integration phase. The most current version of Unity now supports the IKVM.NET framework, which now provides Java to C# translation support. Not exactly something sounding reliable yet but might be worth researching.

Here's some information regarding Java and Unity support:

http://answers.unity3d.com/questions/15308/can-i-access-java-code-from-unity.html

http://www.ikvm.net/

Additionally, here is something that might help you even further, assuming you wanted to make games on an Android platform: http://hub.jmonkeyengine.org/wiki/doku.php/jme3:eclipse_jme3_android_jnindk

Hope this helps further. Wish Java was more often used for stuff other than business presentation, business logic and database access. It's practically sitting on a bed of gold, which is being swept away by C#.NET.

This topic is closed to new replies.

Advertisement