The Answer is Dropbox

April 13, 2012

I have multiple machines that I develop on.

When doing C# dev, I can use SVN and google code or assembla and keep things synchronized pretty well.

For Java dev, I have not had as much success.

For one thing, eclipse has a large number of frivolous files that I just don’t need checked in.

Also, I tend to leave out the bin directory when I’m checking in to SVN.

This apparently confuses eclipse.

Yes, I tried the svn plugin.

Hated it.

So, the answer is Dropbox for Java projects.

However, the way I install it is not the standard way.

The standard installation in Windows puts the folder under C:\Users\USERNAME\Dropbox

Not all of my machines have the same user.

So I put it in a custom location instead.

C:\Dropbox

This way all of my classpath and other garbage stays consistent between the machines I develop on.

Also, I’ve gotten more organized with how my Dropbox folder is organized.

I have a Libs folder with subfolders for the various external dependencies that I have, like lwjgl, slick, zxing.

I have a Projects folder with subfolders for the various workspaces. I similarly split workspaces by broad category.

Sigh. Getting there…

Somedays, the sight of the black rectangle is the most beautiful sight in the world!

April 13, 2012

Today, I accomplished something.

I took my do-nothing HellowLWJGLApplet and put it into a web page.

You can see it here.

It seriously does nothing. It is the boilerplate from a LWJGL tutorial for getting an applet set up.

But, when this simply feat has eluded me for so long, it is a mighty victory.

Yay!

I blame @notch (or, updates for bukkit plugins)

April 12, 2012

Since I was revamping my eclipse dev environment ANYWAY, I figured I’d update my bukkit plugins.

You can find my first one, TSA here.

You can find my second one, SpawnSurance here.

And bukkit/minecraft plugins were the entire reason I started developing in java.

Which is why I blame notch.

And the bukkit people I suppose.

And a number of other swedes.

And a couple of brits.

 

Adventures in Java

April 12, 2012

In the end, I don’t want much as a developer.

I want a canvas that I can draw images and text on.

I want the ability to play a sound, and the ability to set the volume of that sound.

I want to be able to respond to keyboard and mouse input.

And I want to be able to set a timer that periodically does something.

And that’s all I want to do.

Also, I’m impatient, and I don’t want to take the time to learn a new tool or API or method of deploying something.

However, at the same time, I want a decent tool for debugging, and a simply way of deploying.

Eclipse, I must say, is a decent tool for writing and debugging code.

Even though the various Java platforms resist anything being easy.

I have played with Slick2D, playn, LWJGL, and Android development.

Playn seems like too much of a black art for me to want to try to use it.  It had me downloading all sort of nonsense like maven and git and the gwt.

I didn’t mind the android SDK. I was able to get going with OpenGL on it.

The main issue for me was that it took a really long time for the emulator to start up, so android development work would take me quite a long time.

So, I like LWJGL and Slick2D.

And, because I have now taken the time to learn how to structure my Java projects into different packages, I can create my game in such a way where there is very little platform specific code separated from the game code and renderer.

Both the web platform and desktop platform can share a renderer, and the android gets its own renderer, but the underlying logic winds up the same.

Everything else is configuration.

So, a common library of useful classes is one package.

One package is the abstract game logic.

One package is a platform specific renderer.

One package is the overall wrapper for the platform.

(In the case of the Android, the renderer/platform shell can be the same package).

And I feel like I’m “architecting”.

But at the same time, I’ve gone back to basics.

Rather than write most of a usable game prototype, I made HelloLWJGL.

It works in eclipse.

I made HelloLWJGLApplet.

It also works in eclipse.

Next, make HelloLWJGL work as a runnable jar downloadable to Windows, Mac, and Linux.

Next, make HelloLWJGLApplet work in a web page that I upload to my Dropbox account.

And I LEAVE THESE THINGS AS PATTERNS SO THAT I CAN REFER BACK TO THEM AND NOT HAVE TO STRUGGLE SO MUCH.

So I’ve learned the language.

I’ve learned the tool.

I’ve learned the platform.

Now it is time to do some damage.

Le Sigh.

April 5, 2012

Dear OpenGLES and Android SDK,
For my three hours of work, I have managed to draw a single horizontal line. SINGLE. HORIZONTAL. LINE.
Had I known that all I needed to do was enable GL_VERTEX_ARRAY, I’d practically have a working DoD renderer by now.
As it is, I think I’m going to go play Minecraft now, and get back to you when I have my palm surgically removed from my face.
Love,
Me

Monsters

April 4, 2012

A while ago, I made a bunch of character cards based on some plastic figurines of creatures I had.

The basic idea is a board divided into squares or hexes (hadn’t decided yet), with varying types of terrain (clear, elevated, rough, impassible), and game mechanics for basic attack and movement similar to HeroQuest.

That is, each “attack die” has a 50% chance of scoring  a hit, each “defend die” has 33% chance of defending. Movement is one square/hex per point. Body is hitpoints, Mind is mana.

And the characters represent giant monsters. This could work as teams or in a battle royale type thing.

And, of course, each monster has a special power.  I generally based it on what the character looks like.  For example, Algernon has big ears, which reminds me of a bat, which reminds me of sonar, which leads me to think of a sonic attack.

The following are the creature cards with their pictures. The stats are the same for all of them (they need tweaking that can only be determined in a play-test) but each has its special power listed and described.

General turn sequence is that each creature gets to move and attack on its turn. The move can take place before the attack, or the attack can take place before the move.

In my opinion, the best power is Oswald’s Shock ability.  A close runner up is Montague’s immunity to everything.

The worst is Orville’s Jump ability, but the dude looked like a kangaroo.

A note about the names: I googled “wimpy names” and came up with most of the list, with the exception of Fluffy, who looked like a dog, so I came up with a wimpy dog name.

I liked the dichotomy of wimpy names and giant monsters.

Infinite Hallway, DoD style

April 3, 2012

A quick little test of the DoD rendering prototype.


This is a little thing in C# XNA, which I used primarily because it was very easy to get a prototype going quickly.

The basic plan next:

Using a WinForms C# program, make images of each of the blocks rendering onto a 640×480 frame.

This will allow me to automatically generate an occlusion list as well.

Then I take my images, and start rendering scenes.

 

(2^(-(3^(-1)))) FTW (Dungeons of Daggorath Reverse Engineering)

April 2, 2012

Here is a screen grab of a Youtube video playing a runthrough of Dungeons of Daggorath.

I’ll explain the little red lines and number after.

There are a number of things I know about Dungeons of Daggorath, but a few of them are germane to the technical details of rendering the view.

First, I know that the screen resolution on DoD was 256×192.  Although not really. It was in PMODE4, which was really PMODE3 with a call to POKE &hFF22,248 afterwards.

The viewport was, therefore, 256×148.

In measuring the various positions horizontally and vertically (in the picture above), I first spotted that the proportion of an inner “ring” to an outer one was about 0.8.

Further digging (in putting together a number of ring sizes), I determined that the proportion isn’t best represented as 0.8, but rather the cube root of one half (or (1/2)^(1/3), aka 2^(-(3^(-1))).

In the end, every three rings down the tunnel I go, the width and height of the ring is halved.

Question: Why is this useful?

If I am to render a blocky graphic QR world in the styling of DoD, I need to know these things.

DoD had a few other advantages that I don’t have, however.

All of the DoD levels were tunnels that crossed at various intervals.

Which means that the DoD renderer never had to look across an empty area.  It was always looking down a tunnel, and while the first block of an intersecting passageway was visible, the whole are was not.

In a QR code, large areas can be open.

But that’s ok.

Here’s why.

This is a quick little SVG mockup of two blocks rendered in a DoD-like environment. The red box is the viewport, and the frame is only showing on grid boundaries (not the half-grid like in DoD – thats the little horizontal line in the middle of a block on the ceiling).

In order to render the row of blocks I am right next to (forward), I only need three graphics, one for in front of me directly, and two for each side.

One row away, I’d need five graphics to be able to render all of them.

The next row is more like 7… haven’t figured it out yet.

But in the end, for about 15 pre-rendered images(or if I’m smart, about 8, and flip em horizontally), I can render a distance of 3 rows.

Which is cheap, rendering-wise.

Question: Why am I not doing 3D?

First, if you are asking this question, you cannot possibly understand.

Second, that sort of rendering pipeline matrixy crap is extreme overkill….

You can only face the four cardinal directions.

You can only move forward or backward one block at a time.

A final word:

I am not making Dungeons of Daggorath. I am making a game in the STYLE of DoD. Don’t get excited.

Also, I think it needs to be an Android game.

Also, I think it needs to ship.

For real, already. Time to put up or shut up, and I think a DoD style game could do well.

 

 

Self Notes

March 29, 2012

So I don’t lose this later….

Based on the DoD way of rendering, the “walls” are:

(800×600) (“behind”)
640×480(screen)
512×384
320×240
200×150
128×96
80×60 (I dont think I need to go past here, but just in case…)
50×37.5
32×24
20×15

Release to share

March 27, 2012

The current version of Minoquar can be downloaded and played here.

Works on a  mac (just tested it).

Likely to crash if the minoquar gets you. (you are likely to be eated by a Yen symbol).

And a video in case you don’t want to download it: