• [ << ]
  • [ 0 ]
  • [ 1 ]
  • [ 2 ]
  • [ >> ]
May '09
30


De Java Scene Graph API en JavaFX.

Met de komst van JavaFX is er nu ook een Java 2D Scene Graph framework. Een Scene Graph is een boomstructuur die de inhoud van het scherm representeert. Een vierkant is nu bijvoorbeeld een apart object in de boom en kan buiten de teken methode om gemanipuleerd worden. Het voordeel is dat op deze manier een beter beheersbare structuur ontstaat (in plaats van een enorme lijst van opeenvolgende teken operaties) waarin makkelijker wijzigingen kunnen worden aangebracht.

Hoe kan ik 3D spellen maken?

De standaardbibliotheek in Java is niet geschikt om zonder meer 3D spellen te maken. Uiteraard is het mogelijk om een eigen 3D software renderer maken (en daar zijn hele interessante boeken over te lezen) maar dan nog mist het spel de performance van hardware acceleratie. De enige manier om dat voor elkaar te krijgen is met native code te communiceren. Gelukkig is er de Light Weight Java Game Library (LWJGL) die het mogelijk maakt om via Open GL hardware geaccelereerde 3D graphics te tekenen, inclusief alle special effects die daarbij horen. Nu is LWJGL toch wel wat bewerkelijk aangezien je vrij direct bezig bent met Open GL instructies. Daarom is het prettig dat er nog één abstractie laag boven komt, een Scenegraph laag net zoals bij de 2D renderers. In Java heb je daar verschillende smaken van:

Java3D

Java 3D bestaat al sinds 1998. Het leidde lange tijd een sluimerend bestaan maar sinds enige tijd is het een open source (GPL) project waaraan weer actief aan wordt ontwikkeld. Java3D biedt alles wat je nodig hebt om een spel te maken. De enige minpunten die ik kan bedenken zijn dat voorbeeld code voor speciale effecten (water, reflectie) schaars is en dat je er geen commerciële spellen kan maken door de licentie.

jMonkeyEngine

Is een alternatief voor Java3D dat wel commercieel gebruikt kan worden. De jMonkeyEngine is gebouwd boven op de Light Weight Java Game Library en biedt naast een aantal standaard 'game loop' implementaties ook een geïntegreerde muziek speler en hulpmiddelen om menu's aan het spel toe te voegen zonder dat de render code benvloedt. Naast de standaard dingen die van een 3D engine verwacht kan worden, worden er bij de jMonkeyEngine een groot aantal voorbeelden geleverd over hoe je bepaalde special effects kan maken. Reflecterend water, particles, schaduw etc. De jMonkeyEngine is beschikbaar voor Windows, Linux en Mac.

Physics Engines

Natuurlijk is een realistisch uiterlijk belangrijk en met de graphics engines kan dat goed benaderd worden maar realistisch gedrag is net zo belangrijk. Met zogenaamde physics engines is eenvoudig natuurkundig gedrag na te doen. Denk hierbij aan zwaartekracht, realistische botsingen (zoals bijvoorbeeld in snooker) en constructies die kapot kunnen gaan. De jMonkeyEngine heeft een apart project gewijd aan integratie met physics engines, het jME-Physics project. De standaard implementatie maakt gebruik van de Open Dynamics Engine (ODE). Op het ogenblik wordt er ook gewerkt aan integratie met de JBullet Engine dat een port is van een engine die in veel commercile spellen gebruikt wordt.

Installatie.

Een spel maken is een ding, maar het daarna installeren op andermans computer is een tweede. Zeker Java applicaties willen nog wel eens last hebben van bergen met jar files die op een en of andere manier op het classpath gezet moeten worden. Al snel resulteert dit in een .bat of .sh file. Echt gebruikersvriendelijk is anders. Gelukkig is er Java Web Start waarmee dit soort problemen opgelost kunnen worden. Java Web Start is een onderdeel van iedere Java Runtime Environment sinds versie 1.4 en verzorgt de download en installatieprocedure van Java software. Wat er precies gedownload en geïnstalleerd moet worden staat beschreven in de zogenaamde .jnlp file, inclusief eventuele platform specifieke modules.

Conclusie:

Het is op het ogenblik prima mogelijk om zowel 2D als 3D spellen te schrijven in Java. De taal en de bijpassende tooling zijn al geruime tijd volwassen en er zijn ook frameworks beschikbaar waarmee efficiënt spellen ontwikkeld kunnen worden. Voor 2D spellen is de standaardbibliotheek voldoende en voor 3D spellen zijn er interessante frameworks beschikbaar (zoals de jMonkeyEngine) die bewezen hebben dat ze werken. Door het gebruik van Java Web Start is ook installatie van het spel door de eindgebruiker eenvoudig. Het is nu slechts wachten op een ontwikkelaar die een geweldig spel schrijft!

Handige links

www.javagaming.org Java game development forum.
www.java4k.com Home page van de jaarlijkse java4k wedstrijd.
www.cokeandcode.com Blog over Java games.
www.peacemakergame.com Website van het prijswinnende PeaceMaker spel.
www.puppygames.net Leuke in java geschreven actie spellen.
www.nordgame.com Multiplayer rollenspel voor de Scandinavische markt.
www.jmonkeyengine.com 3D Game Engine.
  • [ << ]
  • [ 0 ]
  • [ 1 ]
  • [ 2 ]
  • [ >> ]