Nu har jag Àntligen lagt upp mitt spel frÄn JavaOne. Du hittar allting, kÀllkod och en webstart-lÀnk, pÄ http://jsolutions.se/DukeBeanEm. Uppdateirngar av spelet kommer ske i mÄn av tid.. ;)
-
Duke Bean’Em released!
- tor 24 maj, 2007 kl 12:08
- 6 kommentarer
- JOGL, Java, JavaOne
-
JavaOne – efterspel
- tis 15 maj, 2007 kl 15:11
- 1 kommentar
- JOGL, Java, JavaOne
Hemma igen och nĂ„gorlunda Ă„terstĂ€lld (jag fĂ„r alltid sĂ„n fet jetlag nĂ€r jag reser…). Har fĂ„tt massvis med positiv feedback pĂ„ min presentation, sĂ„ jag har inte riktigt kommit ner frĂ„n molnen Ă€n. Jobbar pĂ„ att fĂ„ ut spelet och koden nu i veckan sĂ„ att alla som Ă€r intresserade kan leka vidare med det. Det har börjat dyka upp en del blogg-inlĂ€gg som kommenterar min presentation. Alltid roligt att bli igenkĂ€nd. Min förhoppning Ă€r att det hela genererar ett lite större intresse för spelutveckling i Java, men Ă€ven möjlighet för mig att fĂ„ Ă„ka ut och prata mer om det pĂ„ andra konferenser.
För er som ska pÄ JavaForum i Göteborg nÀsta vecka sÄ tÀnkte jag köra en kort presentation av spelet sÄ ni ser vad det hela handlar om. See you all there! :)
-
En enkel lösning för att lÀsa in 3D Modeller i Java
- sön 8 apr, 2007 kl 16:42
- Kommentera!
- JOGL, Java, XML
Som jag tidigare har skrivit sĂ„ ska jag Ă„ka till JavaOne nu i maj och hĂ„lla en presentation med titeln ”How to write a 3D computer game using Java in less than 50 minutes.”. Detta lĂ„ter kanske som ett ganska djĂ€rvt pĂ„stĂ„ende, sĂ„ jag tĂ€nkte berĂ€tta lite om en av de större utmaningarna som jag haft med att ta fram denna presentation.
Som ni sÀkert vet sÄ brukar man skapa de 3D modeller som anvÀnds i spel med hjÀlp av ett 3D-modelleringsprogram, t.ex. 3DStudio MAX eller Lightwave. Den fil (eller filer) som dessa skapar kan liknas vid ett serialiserat 3D-objekt. För den som vill ladda en 3D-modell sÄ behöver man alltsÄ lista ut strukturen pÄ formatet (eller hitta specifikationen) och sen skriva en parser som lÀser igenom filen och skapar objektrepresentationen av det hela. LÄter ganska enkelt, eller hur?
Faktum Àr att det Àr vÀldigt enkelt att skriva en parser som laddar en fil frÄn en 3D-modellerare. I mitt fall handlar det om COLLADA-formatet som jag exporterat frÄn 3D modelleraren Blender. COLLADA Àr ett öppet XML-baserat format som anvÀnda för att beskriva en 3D scen (LÀs mer om COLLADA pÄ http://www.khronos.org/collada/). Bland annat sÄ har Sony valt att anvÀnda COLLADA som det standard-format som 3D modeller ska ha i PlayStation 3. Genom att anvÀnda det XML schema som finns för COLLADA sÄ kan jag enkelt generera klasser (Java Beans) för varje element som min 3D-modell bestÄr av. Genereringen gör jag med hjÀlp av ett API som heter XMLBeans. Man tar kort och gott ett XML Schema, kör XMLBeans schema-compiler och vips sÄ har du en jar-fil komplett med kompilerade klasser för alla element som finns beskrivet i ditt schema. DÀrefter Àr det en bara att lÀsa in din XML-fil pÄ följande vis:
COLLADADocument parsedDocument = COLLADADocument.Factory.parse(new File(fileName));
COLLADADocument Àr en genererad klass som representerar en COLLADA-fil. FrÄn det objektet kan jag sen stega mig ner till alla element som min 3D-modell innehÄller och enkelt lÀsa upp datan sÄ som jag vill anvÀnda den i min applikation. PÄ detta vis fÄr jag snabbt och enkelt en parser för att ladda mina modeller. Det enda du behöver kÀnna till Àr strukturen pÄ formatet, nÄgot som Àr ganska enkelt att lÀra sig dÄ COLLADA Àr ett öppet format och det finns rÀtt mycket dokumentation för den som vill fördjupa sig.
Det man upptÀcker rÀtt snabbt dÄ man börjar med 3D programmering Àr att inlÀsning av 3D-modeller Àr nÄgot som stÀller till rÀtt mycket. Det finns en hel del s.k. loaders tillgÀngliga, men alla dessa Àr helt beroende av det 3D API (t.ex. Java 3D eller Xith 3D) som de skrevs för. Du kan alltsÄ inte anvÀnda dessa loaders utan att samtidigt behöva binda upp dig till ett stort och ofta komplext ramverk. Men ovan beskrivna metod sÄ kommer du förbi det problemet. Allt du behöver göra Àr att ta din 3D-modell, lÀsa in den i Blender (eller vilket program du nu vÀljer anvÀnda) och exportera den till ett XML-baserat format (Det finns tvÄ stycken öppna standarder baserade pÄ XML, COLLADA och X3D).
Eftersom klasserna som skapas med XMLBeans följer JavaBeans-standarden sÄ finns det vÀldigt intressanta saker man kan göra hÀr. Spring Framework för spelprogrammering nÄgon?
XMLBeans har Àven mÄnga andra anvÀndabara omrÄden, sÄ jag rekommenderar er att ta en titt pÄ det om ni ska jobba mycket med olika XML-dokument i Java.
-
IBS JavaSolutions pÄ JavaOne 2007
- tor 1 mar, 2007 kl 13:36
- 4 kommentarer
- JOGL, Java, Konferenser
Till vĂ„r stora glĂ€dje sĂ„ blev en av vĂ„ra förslag till presentationer pĂ„ JavaOne 2007 godkĂ€nda. Vi ska nu dit och hĂ„lla en session med den preliminĂ€ra titeln ”Write A 3D Game in Java Technology in Less Than 50 Minutes…”. Syftet Ă€r att visa hur enkelt och snabbt man kan sĂ€tta ihop ett spel i Java. Nervositeten Ă€r hög men ambitionen Ă€r högre. :)
San Fransisco here we come!
-
Fun and easy 3D in Java!
- tis 9 jan, 2007 kl 17:52
- 1 kommentar
- JOGL, Java
Ever since I ran across Povray in the early nineties I’ve been a sucker for all aspects of 3D computer graphics. I loved playing around with 3D-modellers such as 3D Studio MAX, Maya or Blender (to name a few), trying to create my own 3D renderer from scratch (with a very poor result), experimenting with a wide range of 3D-engines, tried DirectX in both C++ and C# (Managed DirectX in C# is really quite nice, compared to the old-school C++ approach) and OpenGL in MANY different languages (including Scheme). However, since my skills in creating anything visually pleasing is comparable to a 3-year-old boy with crayons, the only area within the 3D computer graphics domain I can be productive in is ”pure” 3D programming in DirectX or OpenGL and rely on the 3D models available from the web (also, my color blindness has proved to be somewhat of an issue with results varying from simply weird to ”ouch, my eyes hurts!”).
Anyone who ever tried to learn 3D programming in any other language than Java or C# are aware of how much effort you have to put in to simply displaying an empty window. On top of that comes the fairly complex way of managing all related data structures (vertices, vectors, matrices etc.). For me, this was the major reason I never got further than creating simple 3D demos (e.g., rotating cubes etc.). It wasn’t so much due to OpenGL but rather the language I used. The amount of work required took the fun out of the task.
Imagine my anticipation when I first came across JOGL. I love developing in Java since it is so easy to work with. Setting up an OpenGL window was a piece of cake and creating a set of small utility-classes for managing matrices, vectors and vertices proved much more simple in Java than in C++. With the very nice user-input handing (KeyListener, MouseListener, MouseMotionListener etc.) in Java, creating interactive application with JOGL were a no-brainer.
This was back in 2003. Now, in 2007, JOGL has its own finalized JSR (JSR-231) and an updated version (JOGL 1.1) will soon be available. A visit to jogl.dev.java.net shows a bunch of ready-to-use applications built on-top of JOGL, and jogl-demos.dev.java.net contains a long list of examples of visually stunning examples for those who still doubt that OpenGL on Java is as good as OpenGL in C++ or any other native programming language. FPS-fans can now run the Java port of Quake2, Jake2, from any machine supporting JOGL using Java Web Start (i.e., click’n'play). With the release of Java 6 and all the cool desktop-features, we can finally create 3D applications that are both useful and looks cool. The embedded version of OpenGL (OpenGL ES) has its own JSR started and will hopefully deliver hardware accelerated support for Java ME (both CLDC 1 and 1.1).
Some of the things I think (or rather hope) we will see during 2007 regarding JOGL:- Java-based Google Earth? I bet someone at Google is already working on this…
- Real, working examples of applications with 3D interfaces. Increased research in Human-Computer Interaction with 3D user-interfaces.
- JOGL (and Java) support on Playstation (2 and 3), Wii and XBox 360 (ok, the last one is probably hoping to much.. ;). I know this is a bit of a stretch to hope for this, but it would be cool to be able to write your own games for these platforms (Playstation already has Linux-support so that one shouldn’t be an issue really). :)
- Tons and tons of really cool 3D games in Java…
Getting sick and tired of all frameworks, toolkits and APIs for developing ”state-of-the-art” AJAX-enabled, enterprise applications using *insert name of framework here*? Having nightmares about JavaScript, OR-mappings and aspects? Have you read the words Spring so many times lately that it left a scar on your retina? Try something completely different; OpenGL development in Java. :)
There are many tutorials, demos and examples to get started with JOGL and if you prefer books you can find many good ones with a simple search on Amazon (I’m listing a bunch of resource to get you started below). I truly hope that more developers, both from the Java-community and from the gaming-industry, will discover how fantastic JOGL really is. For those of you living in Sweden I recommend visiting jFokus in Stockholm (January 30th) or JavaForum in Gothenburg (Februari 7th) to see my presentation ”JOGL and friends”. So come on everyone! Lets help make Java on the desktop really cool this year!
Recommended JOGL-related links:
- JOGL API Project – The main page for JOGL.
- JOGL Demos – Cool demonstrations and examples in JOGL.
- Xith 3D – A very nice scene graph and game middleware using JOGL.
- Javagaming.org – Nice community and forum for Java game developers.
- Foundations of 3D Graphics Programming: Using JOGL and Java3D – A very nice starter book for those interested in OpenGL development in Java.
- Practical Java Game Programming – A little outdated by still a very good book on general game development in Java.
- NeHe OpenGL tutorials – In my opinion, the best tutorial on OpenGL available on the net. The code in the tutorial is in C, but since the method calls in JOGL are basically the same it is still very useful.
- OpenGL.org – The main site for everything related to OpenGL.
- Shwup – A very cool P2P application for sharing picture that uses JOGL for rendering.
- Jake2 – The Java port of Quake 2 from ID Software. Available as a Java Web Start application.
-
Java + OpenGL = Sant
- tis 12 sep, 2006 kl 13:23
- Kommentera!
- JOGL, Java
Ănda sen den dagen dĂ„ jag började programmera pĂ„ allvar sĂ„ har jag varit intresserad av spelprogrammering och 3D-grafik. TyvĂ€r sĂ„ var de reella lösningar som fanns tillgĂ€ngliga pĂ„ den tiden enbart OpenGL och Direct3D. Man var dessutom mer eller mindre begrĂ€nsad till C/C++.
Java fick rÀtt tidigt ett eget alternativ för 3D grafik som heter Java3D. TyvÀr sÄ var detta ett ganska begrÀnsat API som lÀmnade mycket att önska för den stackare som ville göra nÄgot seriöst i 3D-vÀg. DÀrför var det vÀldigt trevligt för alla 3D- och spel-programmeringsintresserade Java-kodare nÀr JOGL (Java OpenGL) dök upp pÄ https://jogl.dev.java.net/. Projektet har utvecklats stadigt sen den första releasen (september 2003 enligt projektsidan). API:et har passerat version 1.0 och det finns Àven en JSR pÄ gÄng (JSR-231 beta 5).
Nu tĂ€nker alla skeptiker sĂ€ker nĂ„got i stil med ”Men det kan ju aldrig bli lika snabbt som i C/C++…”. TyvĂ€r sĂ„ blir jag tvungen att göra er besvikna. JOGL-projektet har fokuserat pĂ„ att anvĂ€nda en kombination av Java NIO, JNI och ett verktyg som heter GlueGen för att göra lagret mellan JVM:en och operativsystemets OpenGL-bibliotek sĂ„ tunnt och snabbt som möjligt. Resultatet Ă€r att JOGL i praktiken Ă€r lika snabbt som motsvarande OpenGL program i C/C++. Kort sagt, vi har ett Java API för OpenGL som Ă€r fullt tillrĂ€ckligt för att pĂ„ allvar göra riktiga 3D applikationer.
Jag har lekt med JOGL till och frÄn sen 2004 ungefÀr, men aldrig gjort nÄgot mer seriöst. Detta tÀnkte jag nu Àndra pÄ genom att hÀr pÄ min jsolutions.se-blogg skriva om mitt projekt (sÄ att ni som lÀser det kan gnÀlla pÄ mig nÀr min progress blir för lÄngsam ;). Mitt JOGL-projekt Àr tÀnkt att bli ett vÀldigt enkelt FPS-spel. SÄ snart jag filat pÄ detaljerna runt det hela sÄ komemr jag presentera mer.
SÄ jag uppmanar er att hÄlla koll pÄ min blogg hÀr och följa mitt lilla hobbyprojekt. Kom gÀrna med förslag pÄ vad man kan göra och om ni sjÀlva Àr intresserade av att hjÀlpa till. Bara för att stressa mig sjÀlv lite sÄ ska jag försöka ha en första demo klar till november.