May Day! Geocache #2-6

Yep, it was that time of year again. Grab yourself a beer and go out trekking in the woods until you are drunk enough to come out again.

In good old north-west German tradition we set out for a day filling walk on  Tag der Arbeit. What made this day so unique was the fact that we collected various Geocaches along the way. Six hours of hiking just wasn’t enough. Enjoy!

May Day Geocache Route Teutoburger Wald

Found Caches:

Picturelink

-Sebastian

Veröffentlicht unter Allgemein, Geocaching | 1 Kommentar

Unbrand, ROOT, S-Off

Android Root

What an ordeal! In order to backup the CalDav App from my HTC Desire I had to go through a TON of tutorials and Howtos knowing that if I screw up, chances are my dear phone will get bricked. So after 2 hours of reading, ISO burning and flash galore, I got a fully rooted(Secure flag OFF) and unbranded HTC Desire.

In case I have to repeat this I am posting these links that did the trick (German only, sry).

  1. Creating a Goldcard for temp ROOT access on branded devices
  2. Rooting via unrevoked3 and recovery-RA-desire-v2.0.0 ROM
  3. Flashing with AlphaRev. S-OFF (security off) thus disabling NAND security

-Sebastian

Veröffentlicht unter Android | Verschlagwortet mit , , , | Hinterlasse einen Kommentar

R/C Aircraft Fun: Futaba 7C 2.4 Ghz

A few weeks ago I became interested in remote controlled airplane flying. I went  through a lot of online research before settling on a concept of how to approach this hobby. The most important decision to be made was choosing the main operating r/c frequency: 35/40Mhz or the newer 2,4Ghz. In terms of aqisation costs the 35Mhz equiptment is pretty cheap. But the main reason which ushered me to choose 2,4 Ghz over 35Mhz was the security issue. Utilizing technologies like frequency hopping, it is nearly impossible to loose control over a model because somebody else used your frequency.

Another decision to be made was concerning the number of channels a remote shall support. This determines how many functions of the airplane model it can directly address. While some simple entry aircrafts only need 3 or 4 channels, others need a vast array of channels for additional motors, landing flaps, landing gear or gsp tracking units.
Remote control prices are tightly coupled with the supported channel amount. So you’ll need to find a good mix between the features you want and the amount of money you are willing to pay for a remote.

Anyway, I ordered a Futaba 2,4Ghz 7 channel remote control with reciever from hobbyfly.de. The model I am planning on getting occupies four channels which still leaves three for future updates.

The Futaba<->USB cable took a while longer to arrive from Hong Kong.

Since the weather is bad and I used up all my funds for this month, I’ll only be flying in a simulator for now. Stay tuned.

-Sebastian

Veröffentlicht unter Allgemein | Hinterlasse einen Kommentar

Mozilla Labs: Submission closed, Voting opened!

Mozilla closed the submission of new games on January 11th. Over 160 games were filed but only 124 made it into the contest selection. Zulu is one of them!

If you register, you can vote on five randomly selected games. These votes will determine the entry which wins the community’s favorite award. The other awards will be granted the first week of February after the judges examine each game.

Zulu World Map

Zulu World Map

Check out all entries in the Mozilla Labs Game On Gallery.

Check out Zulu directly.

-Sebastian

Veröffentlicht unter Coding, Mozilla Labs GameOn, Zulu | Verschlagwortet mit , , , | Hinterlasse einen Kommentar

Geocache #1: The tree snake

We got ourselves a Garmin Dakota 10 GPS unit for Christmas which we will be using to locate Geocaches in the area.  Occasionally I’ll post some impressions of where we go and what we find here on binbash.

Cache ID:  GC2EDKH
Difficulty: 1.5 / 5
Terrain: 1.5 / 5

Our first cache took us deep into the woods of Hasbergen. We brought two friends and 3 dogs for support.

-Sebastian

Veröffentlicht unter Geocaching | Verschlagwortet mit | Hinterlasse einen Kommentar

Mozilla Labs: Game On 2010 Contest opened!

At last! After a month of waiting Mozilla Labs’ own openweb programming contest started.  The rules are simple and fair. Contra to popular belief they do allow closed-source projects.

Anyway the main categories by which the judging will take place are:

  • Technology
  • Web-iness
  • Aesthetics
  • Originality
  • Polish
  • Fun

I must admit I find the categories kind of lame. I hoped for some actual gaming sections like “Best FPS”, “Best oldschool Adventure”, etc. but I guess they didn’t want to push the participants in any specific direction.

Mozilla says they dug up a bunch of prizes while the main one being a trip for two to the Game Developer Conference and the Mozilla Headquarters in San Francisco which is really awesome! The judges team will be a mix of community voters and industry experts.

The Game On! 2010 contest ends January 11th 2011. Winners will be announced at the end of January.

Alright, nuff said, back to hacking so I can submit my entry be the end of next week.

-Sebastian

Veröffentlicht unter Allgemein | Hinterlasse einen Kommentar

GWT – Prevent Key Repeat Delays


The Problem

Have you ever noticed that short delay between holding down a key and the second letter appearing? This is a feature to prevent users from accidentally typing 2 letters when they press a key a little longer than usual. While this behavior is desirable in everyday browser and text-processing situations, it is totally wrong from a gaming point of view as one would prefer instantaneous key handling.

Imagine the following: you want your character to move to the right. So you would press and hold down the right cursor key. After taking one step the key-delay kicks in and waits roughly 300-400ms (Operating System dependent) before sending the next key event and moving the character further on.

This behavior results in a less fluent game-play and should be somehow coped with. Since key-press delays are an OS dependent setting there is no real way to adjust the value or turning it off without going into low-level coding (!=GWT). I managed to create a small workaround for the Zulu game which you may find interesting if you come across similar problems.

Be aware that key handling is implemented very differently in each browser!

The Implementation

My Controls class implements KeyPressHandler and KeyUpHandler thus it is always informed of keys which are being pressed and released. Once a key is pressed (eg: Right Cursor Key) a Timer class re-dispatches the event to the KeyPressHandler until the Key-Released Event is called or the natural Keyboard Events arrive (after the REPEAT_MS delay).

Listing A show an example:

public class Controls implements KeyPressHandler, KeyUpHandler {

  private KeyPressEvent lastEvent;
  private static final long REPEAT_MS = 150;

  public Controls() {
    this.activeKey = null;
    this.t.scheduleRepeating(REPEAT_MS);
  }

  private final Timer t = new Timer() {
    public void run() {
      if(lastEvent != null)
        // Redispatch event
        onKeyPress(lastEvent);
    }
  };

  @Override
  public void onKeyPress(final KeyPressEvent event) {
      // Remember event until key release
      lastEvent = event;
    // Move Character, attack, etc.
  }

  @Override
  public void onKeyUp(final KeyUpEvent event) {
    // Terminate all active key events
    lastEvent = null;
  }
}

While this GWT Key Repeat Delay workaround does the job pretty well, it is neither elegant nor efficient and has some nasty browser dependent caveats. Opera (10.62) fires a Key-Release Event after every KeyPressEvent even if the key is being held down which results in constant toggling of lastEvent. And Google’s own Chromium browser has massive problems with handling KeyEvents from cursor keys.

If you have other(better) solutions to the repeat delay problem in GWT, don’t hesitate to leave a comment.

Cheers!

-Sebastian

Veröffentlicht unter Coding, Zulu | Verschlagwortet mit , , , | Hinterlasse einen Kommentar

Dungeon Exploration Part I: Tutorial

Once the player logs in for the first time, he will find himself trapped in a gloomy prison. This initial dungeon will represent a quick interactive tutorial to the game itself. It leaves the gamer with no other option but to seek an exit whereas every once in a while tool-tips pop up with basic information about how the game mechanics and controls work. This will prevent a step learning curve which casual players may encounter.

Creational Objectives:

  • Level linearity – remember this is a tutorial dungeon. One shall not wonder in which direction to go.
  • Keep it short – Don’t annoy hardcore gamers with overlong tutorial parts. Five to ten minutes ought to be enough for this type of game.
  • Show a lot. Show nothing. – Introduce the basics but don’t give away the best parts in the game within the first five minutes.
Prison Cells

Prison Cells

A Graveyard

A Graveyard

Although the tool-tips are currently turned off, and not all rooms are filled yet, the dungeon layout gradually takes shape. The first few entry-monsters still feature no AI and the Field of View implementation creates some nasty artifacts but its a fair start. To help me with the creation of further environments, I am developing a basic Tile Editor in Java. I could imagine that someday players create their own maps and upload them to Zulu but that’s distant future.

-Sebastian

Veröffentlicht unter Coding, Dungeons, Mozilla Labs GameOn, Zulu | Verschlagwortet mit , , , , | 2 Kommentare

The Technicals

Before getting into any gaming details, I’ll give a quick overview of the technology landscape in use:

Google GWT Google Web ToolkitGWT v 2.0.1
As already mentioned, the GWT Google Web Toolkit is the primary framework this project is based on. The GWT compiles Java into JavaScript code and handles all AJAX calls to the server. This way any code run on the client side is plug-in free (giving that the browser supports JavaScript).

Compiling does take quite some time (about 30sec. on this 2×2,6Ghz / 4GbRam machine).  But other than that there is not much to complain about.

GWT Incubator
The GWT Incubator project includes widgets and libraries which may be included in future GWT releases. It incorporates GWTCanvas which is a necessary library for painting on a HTML 5 Canvas element. GWTCanvas implements most of the Canvas features which makes it a perfect utility for drawing and composing complex graphics. The only major drawback is the fact that GWTCanvas does not support drawing of text.

Eclipse – Helios build
No large programming project on a JAVA basis without Eclipse. NEVER! Pared up with Googles’s GEP Eclipse Plug-in they form an ultimate weapon of mass coding!

Apache Tomcat v 6.0.X
Last thing left is a server running the server side code. Apache Tomcat is an open source Webserver which is pretty straightforward to use and up to the job. Nothing much else to say here.

How the GWT works

-Sebastian

Veröffentlicht unter Allgemein, Coding, Mozilla Labs GameOn | Verschlagwortet mit , , , , | Hinterlasse einen Kommentar

The History

Around September 2009 I started playing around with the new HTML 5 Canvas element. I was quite fascinated of the emerging possibilities this new technology had to offer in terms of graphics without any need of plug-in installation. As a Linux follower I have a native reluctance towards silverlight and that abomination called flash. Which leaves very little room for any sane browser games. Well, that is, until now.

Raycasting JavaScript
I enjoyed the little Wolfenstein 3d canvas demos that appeared and gave the concept a shot. I wrote a pure JavaScript raycasting engine which took about 3 months to implement. The result was rather disappointing. Implementing 3D functions consumed way too much time and JavaScript as a language is a pain in the ass. Yeah I’m a wasted Java brat but I don’t give two cents about it.

This is an actual screenshot from the engine with a link at the bottom if you care to try it out. This raycasting JavaScript engine hogs the CPU at 100% and there is not much to look at really but if you are interested you may try it out:

Canvas Raycasting

Canvas Raycasting

Play me

Ultima VI Canvas Clone
Shortly after Christmas 2009 I dropped the whole ray-casting project in favor of starting an Ultima 6 clone on a JavaScript/Canvas basis. 2D was way more fun and less tedious to get something working. Decrypting the original map files with pu6e and programming the conversation systems were really interesting tasks to be confronted with. Origin used simple 2D tiles with a slight isometric touch which looks somewhat awkward at first but after some time it fits the scene perfectly.

The Ultima VI clone does take some time to load though as the map and the tileset are rather big. Expect a gross of 2,5 Mb. Here is a screenshot and a link to the game:

Ultima 6 HTML Development Screens:

Ultima 6 HTML 5 Canvas Clone

Ultima 6 HTML 5 Canvas Clone

Play me

Anyway, JavaScript was again getting more and more in my way and I decided to finally switch to some other language. The GWT Google Web Toolkit seemed the way to go. The Java to JavaScript compiler and two halfway mature canvas plug-ins paved the way for some intense hacking. I abandoned the Ultima 6 project May 2010 in favor of something own.

A new hope
In August 2010 the first line of a canvas MORPG (working title ZULU) was written. GWT and GWTCanvas shall be the foundation for the game running on an Apache Tomcat Server. Until this day Zulu has come quite a long way. Especially since this is my first own full-fledged game creating experience.

Stay tuned for some tech talk, Zulu progress information and pure Java goodness.

-Sebastian

Veröffentlicht unter Allgemein, Coding | Verschlagwortet mit , , , , , , , , , | Hinterlasse einen Kommentar