Archive for Projects

Ludum Dare 48 hour game dev competition

Ludum Dare is coming up, August 8 – 10. I’ve poked around the entries for the competition before, and once I lurked on irc while a compo was in progress. But this will be the first year I’m participating. My wife is out of town and taking her dog, so I will be left with the other dog, and a house to keep up. But other than a good long walk and a workout on Saturday, I’ll be able to devote most of my time to the competition.

I am going to go with out of the box Java, using Java 2D for graphics. That will let me focus on gameplay and design rather than battling with the graphics. The themes to vote on aren’t up yet, but I quite like the “Meanwhile…” theme. I’ll be spending Friday before the compo cleaning the house, installing time lapse software, preparing food and cleaning up my desktop (physically and virtually). Oh and working the day job, of course.

Comments

Java 3D vs. Java OpenGL

I have been experimenting with Java3D and JOGL as 3D libraries. Both are mature, and perfectly acceptable for anything I would be doing with them.

Java OpenGL uses JNI (meaning the underlying system must support OpenGL), and it doesn’t use Java3D’s scene graph approach. With Java 6, Java2D and JOGL can work closer, resulting in swoopy features like a Swing button with a 3D icon image.

Java3D was meant to be a Java wrapper for DirectX and OpenGL. It, too, uses JNI, and it seems there is no sophisticated 3D graphics library that doesn’t. But, as Alexander Schunk writes, JOGL makes Java3D somewhat ineffective as a unifying library among the 3D graphics technologies.

So, I don’t know which I will go with. There are some fantastic books on OpenGL, and it’s certainly a useful skill set. It’s too bad you can’t easily port things over from OpenGL to the scene graph API of Java3D. They’re such different approaches, but that’s why they’re two distinct projects.

Comments

Choosing a Game Development Library

I’m not officially calling this a project because it’s as much an exploration as a project. But I’ve been looking into some tools to help me make a game. I’ve got a few vague ideas for games, and some things I know would be fun to write. I’m also easy to please – just about anything with a story, a moderate challenge, stat bonuses and upgrades will suit me just fine. That in itself is a bit odd because I’m such a huge fan of genre-bending games and I absolutely adore the idea of thematic categories rather than gameplay mechanic categories like shooter, RPG, simulation, etc.

But I digress. I’m looking to create nothing particularly special. So I set out looking for some tools to help me with nothing really in mind other than I don’t want to do everything myself. But I don’t even know how much I want to do myself, so I’m really a blank slate. Early on, I realized there was a big difference between game libraries and game engines. Seems obvious, but it had never occured to me.

A game library is exactly what it sounds like. It holds pieces of information that could be useful to you, but makes no attempt to pull it together and, in the metaphor of a library, write your essay for you. A game engine on the other hand already does a lot of the grunt work, not just the boring display/network/audio set up stuff, but collision detection, movement and animation algorithms, timers, and even event handlers and such.

So I figured, “Where’s the fun in that?” and decided to stop looking at game engines, and just look at game libraries. Now here’s the rub: I do Java. I have a lot of interest in C, and a bit of interest in C++, but I am also studying to take the Sun Certified Java Programmer certification in the fall. So now’s not the best time to jump ship and join the C/C++ crowd. So I need a Java game library.

I found a decent game library listing on the Game Programming Wiki, although there are very few Java libraries included. Of the few that I found, only the Lightweight Java Game Library seemed to be what I was looking for (and I found that just by poking around some search engines). So, I guess that does it for me. I’ll try out LWJGL, and we’ll see how it goes. I’ve never worked in 3D before, and was actually hoping for 2D, so I might choose to use Java2D or find another library.

Now, to figure out what, exactly, LWJGL does (and doesn’t do)…

Comments

Project: Removing Footnotes for Screen Readers

So here’s a problem which I imagine is common for any blind or visually impaired student or scholar: Many academic books are not available on tape through the Library of Congress. So the solution is frequently to get a hard copy of the book and scan it, page by page, into a computer. Then the user performs optical character recognition (OCR) on the scanned images to recognize them as text.

My experience in this case is limited only to Kurzweil 1000, version 8.5 (2 upgrades behind the current version) because that’s the software my (blind) partner uses. So Kurzweil does a decent job recognizing the text, automatically orienting the page, recognizing the language, and converting it to its own proprietary format (which appears to be a text file with additional tags before each word that indicate phonetic pronunciation, or something similar). Up to this point all is well and good. Here’s the problem: In academic books, there are footnotes at the bottom of the page, and Kurzweil doesn’t recognize them as such, and treats them no differently from the book’s text.

The footnotes make the book annoying to read at best, and impossible to understand at worst. The other day, after my 3rd hour of removing footnotes by hand (scroll down, silence the reading, identify the garbled text, select it, remove it, repeat), I got to thinking – there has to be a better way. I have some ideas for simple heuristics to determine what is a footnote, and a few ideas of blue-sky improvements that would be very spiffy. So my current project is to create an application (Java for convenience, portability and, of course, accessibility) that will be a utility designed to help with editing plain text books that have been OCR’d.

Here are the purposes of the program:

  • Allow users to edit a scanned book in Kurzweil’s .kes format or in .txt format
  • Provide footnote removal tools with adjustable sensitivity/aggression, and the ability to preview the changes
  • Provide regular expression search and replace, with some useful pre-made replacements
  • Maintain a dictionary of replacements similar to Kurzweil’s “Apply Corrections” function, but with added functionality
  • (Maybe) Display frequency-weighted spelling mistakes and the ability to replace them all

And here are some loose initial requirements:

  • Accessible to blind and visually impaired users
  • Preserves .kes formatting and allows editing without seeing .kes markup
  • User-friendly, correct, robust
  • Open-source (license to be determined)

As soon as possible, I will be uploading screenshots (well-described, of course) and writing about design decisions, implementation progress and eventually interesting code snippets. Next up: the basic User Interface prototype within a week.

Comments