Can I implement JBullet physics later in development - java

I am a semi-new OpenGL programmer, and am in the process of learning of how VBO's and Shaders interact with each other. I have a basic demo set up, and it imports the model and places a light in the scene. Now, in the future I would like to have physics, but my knowledge of JBullet is at a minimum. Should I implement the physics into it from the ground up, while learning more about rendering, or is it something I can add later, assuming my engine's framework is somewhat flexible to new API's?
Note: I am using LWJGL, and plan on using JBullet along with GLSL

Short Answer
Yes
Long Answer
Your Graphics code should be separated from any Physics code. In most engines, from Unity to UDK the Physics has little to do with your Graphics code. The only place where they connect is your game code when you do something like
Position = PhysicsObject.GetPosition();
DrawableModel.Draw(Position);
Some engines put higher levels of abstraction on top of this, like UDK with UnrealScript. Others like Unity behave exactly like this.
You might also want to have a look at a pattern or architecture called Entity Component System

Related

2D Water effect in libGDX

I'm working with libGDX and I'd like to reproduce the water behavior we can find in games like Terraria or Go To Hell. The water must be able to flow under the effect of gravity and adapt it's shape to the container's shape.
Actually I don't really know were to start, therefore I have no code to show. I found some tutorial for water effects like reflexion or physics with Box2D, but nothing that I want for my project. If you have some clue it'd be great.
Thanks !
The water effect can be achieved by using LiquidFun physics engine based on Box2D. There is an LiquidFun extension for LibGDX available.

Playground for Artificial Intelligence?

In school, one of my professors had created a 3D game (not just an engine), where all the players were entirely AI-controlled, and it was our assignment to program the AI of a single player. We were basically provided an API to interact with the game world.
Our AI implementations were then dropped into the game together, and we watched as our programs went to battle against each other.
It was like robot soccer, but virtual, with lots of big guns, and no soccer ball.
I'm now looking for anything similar (and open source) to play with. (Preferably in Java, but I'm open to any language.) I'm not looking for a game engine, or a framework... I'm looking for a complete game that simply lacks AI code... preferably set up for this kind of exercise. Suggestions?
This sounds very similar to Robocode.
Robocode is a programming game, where the goal is to develop a robot battle tank to battle against other tanks in Java or .NET. The robot battles are running in real-time and on-screen.
You may want to check out AIIDE in 2010, where they will be hosting a Starcraft Broodwar AI competition. You can download the software, API, and proxies to allow you to connect your homegrown AI into the Broodwar simulation.
Unlike other platforms such as 3D Robocup, the Broodwar engine will handle the physics, and will probably allow you to focus most of your time on higher level aspects such as path planning, strategy, resource allocation, etc. There are also basic forms of AI that you can plop in as placeholders while you work on your specific improvement, say a melee AI for example.
Check out Mario AI. You get to program an AI to control mario. There's a competition and some papers associated with it. Very easy to setup and get running with Java or any JVM language.
My AI class used the open-source BZFlag, which turned out to be quite entertaining and informative.
You might consider Open NERO (" (Preferably in Java, but I'm open to any language.)") but it's written in Python. If none of the Java suggestions appeal to you, take a look here:
http://code.google.com/p/opennero/
It doesn't "lack" AI code, it contains it. Perhaps looking at an AI implmentation in Python would give you some inspiration for your Java efforts.
Edit: To address vidstige's comment - you could try this : http://aichallenge.org/ - Programming ants to gather food and fight enemy. There seems to be a Java implementation there.
You may start with
this game
Some AI is already implemented so that you can take example
I know you indirectly referenced RoboCup in your question, but I think it's worth a mention here given the heading. There are both 2D and 3D versions:
2D League
3D League
The 2D league is more abstract with commands like move, catch, kick.
The 3D league is more complex as you have to control the angles of each hinge in a 3D robot's body (22 of them with the Nao model).
Both are equally valid exercises for AI. It probably depends what area of AI you want to play with.
Both can be programmed from any language/platform that supports TCP sockets. You'll find sample code in Java online to get you started. I've been maintaining a list of existing libraries for 3D RoboCup on the SimSpark Wiki here.
If you want to use .NET for the 3D league, you can use the TinMan library I created.
Check out ORTS.
Torcs is a racing game engine that lets you build your own drivers in C++.
Your prof's game reminds me a lot of the old macintosh game Assassin, which wasted many of my after-school hours back in the day. It was an interesting turn-based game where players input their moves at the start of each turn, and then their moves are executed simultaneously. The game's AI's were kind of dumb, and I always wished I could muck around and improve them, but I never found an open source version of the game.

Java - Zoom / 3D Data Visualization Libraries

What are the best libraries/frameworks for doing 3D and/or Zoom interfaces in Java?
I'd like to be able to do some prototyping of creating new types of interfaces for navigating within data and representing object graphs/relationships.
Low and no cost options are better. Open Source is also a plus.
UPDATE:
The higher level the api the better. Ideally I could set some properties (color, shape, etc) on my virtual object, register it with the visualization environment/engine, hook in callback functions...for example when a user hovers, clicks or double clicks on an object my code would get kicked off, and the visualization environment would handle the rest. So the rendering of the objects, navigation, zoom, user interaction would all be handled by the engine. Tall order probably, but this seems like it could exist as a reusable/generic tool.
Java3D is a pretty good 3d visualization in library. OpenGL is a standard 3d graphics library and JOGL is a port to Java.
Haven't done more than play with it, but you may want to look into processing. You could build some virtual objects, then pan around it with the mouse.
You might try JMonkeyEngine. It's higher level than Java3D and JOGL.

What are some techniques to create scrollable areas?

I'm getting started with OpenGL ES on Android and I'd looking to learn some techniques to have a game map larger than the visible area.
I'm assuming I've somehow got to ensure that the system isn't rendering the entire scene, including what's outside of the visible area. I'm just not sure how I'd go about designing this!
This is for simple 2D top-down tile based rendering. No real 3D except what's inherent in OpenGL ES itself.
Would anyone be able to get me started on the right path? Are there options that might scale nicely when I decide to start tilting my perspective and doing 3D?
There are many, MANY techniques for accomplishing this goal, but the base idea of what you are looking for is called Frustum Culling, that is not drawing anything the user isn't going to see anyway. Here and here are a couple of tutorials on how this works.

What libraries are available to help create 2D Java games for phones?

I want to begin developing 2D Java games for phones (on J2ME) therefore I'd like to know if any libraries or "engines" exist to help out in the various graphical tasks:
Drawing text with pixel fonts?
Drawing bitmaps for sprites with multiple frames like animated GIFs?
Drawing graphics with code, lines, beziers, flood-filling and gradient fills?
Ordering / layering of sprites?
Or maybe a great book exists, that gives you enough code samples to get off the ground quickly?
MIDP (JSR-118) includes the basics (most of the things you listed above) mainly in the javax.microedition.lcdui and javax.microedition.lcdui.game namespaces.
I didn't use it myself, but heard some good reference on here.
And here is even a list of libraries, you might need.
There was a book released quite a few years ago called Developing Games in Java by David Brackeen.
That covers the basics of 2d and 3d development in pure Java as well as how to handle time jumps and update the physical properties of your game characters. It is a good introduction to the topic.

Categories

Resources