First AI approach for the traffic system

With more than one vehicle on the road a little bit of artificial intelligence is needed. 

I decided to attach three Unity3D collider (with activated “trigger” property and one rigidbody component) to each vehicle:

  • An active front collider to detect if the vehicle is about to crash into another car or pedestrian
  • A passive body collider to be detected by the front collider of another vehicle
  • A passive back collider – also to be detected by another front collider

 

First idea of the collider and the AI behavior:

If the front collider of the vehicle hits a body collider it stops and tries to drive back a little bit. 

When the back collider is hit, the other car is probably just driving on the same track but with less speed. In this case the vehicle with the triggered front collider adjusts to the speed of the car in front of it.

The result looks more like a cartoon character using trial and error  than a defensive driving style. I call this AI behavior “Italian  driving mode” ;-)

A first animated video of some vehicles using the AI:

 

BTW: One thing I learned about Unity3Dwhile working on this: Because Unity seems to serialize enums as numbers and not by name: Use a flag number for every enum value. Otherwise when you change the order inside the enum definition the meaning swaps.

A very simple version of the traffic network system is presentable now

After creating the road system, now the traffic system has to be programmed.

First conceptual drawings for the traffic system:



The goal was to create a self-connecting traffic network, which should work for left- and right-hand traffic.
Everything went fine until the cars had to drive around corners.
But a little bit later (and with some vector calculation) this also works very well.

A view of the transport system in the editor. The red squares and red lines represent the center lines of the street.

A first animated video

Starting the development of a new video game

It's been three years since I developed my last game Pumpkin Jumpin. Time to start with a new one :-)

It will be my first deeper experience with Unity3D and also my first game with auto-creating maps. So playing the game may surprise myself because I cannot know the automatically created maps before playing them myself.

The game will take place in a sort of city - so my first steps will be:

  1. Creating a level map system and pedestrian system
  2. Creating a traffic system for cars

Let´s go!

Oculus Rift DK2 - unboxing und erster Eindruck

Glückliche Überraschung heute: Die 2. Version des Oculus Rift Development Kits war in der Post.

Beim Auspacken, dann gleich eine kleine Enttäuschung: Statt eines schönen Kunststoffkoffers - in welchem die erste Version geliefert wurde - kommt das DK2 in einem Papp-Karton.

Im Karton selbst sieht es dann wieder der ersten Entwicklerversion ähnlich:

Die Linsen wirken etwas größer als beim DK2, dafür ist aber nur eine alternative Sehstärke dabei. Beim DK1 waren es noch zwei.

Neu ist in dieser Version die Erfassung von Kopfbewegungen im Raum (die erste Version konnte nur Drehbewegungen erkennen). Die eine Hälfte meines Kinect-Oculus-Projektes vom letzten Jahr ist damit nun abgelöst worden.

Damit das gelingt, verwendet die Brille nun eine zusätzliche Infrarot-Kamera. In der Rift-Brille sind IR-LEDs versteckt eingebaut, welche von der Kamera erkannt werden. Dadurch kann die Position im Raum ermittelt werden.

Entfallen ist das Adapter-Kästchen, so dass die Kabel jetzt ohne Ballast direkt an den PC angeschlossen werden können.

Den wichtigsten Eindruck kann ich hier im Blog aber natürlich nicht zeigen: Ist das DK2 besser als die vorherige Oculus Rift?

Definitiv! Die Auflösung ist zunächst einmal deutlich besser. Dazu kommt, dass die Kopfbewegungen den Eindruck noch einmal wesentlich realistischer machen. Oculus liefert eine Demo-Szene mit, in welcher man vor einem Schreibtisch sitzt. Durch die Bewegungen kann man die Objekte auf dem Schreibtisch wirklich aus der Nähe und von der Seite betrachten.

Wenn man den Eindruck der ersten Brille schon schlecht beschreiben konnte, sondern besser zeigen musste, toppt die zweite Version die Erfahrung noch einmal deutlich.

C=64 legacy reloaded

Was macht man, wenn man gern möglichst authentisch Spiele auf dem Commodore C=64 spielen möchte, aber keine Lust auf alte Disketten, zu viele Kabel und unscharfes TV-Signal hat?

Man stattet einen C=64 mit USB, WLAN, HDMI etc. aus.... Genauer gesagt: Man verbaut einen Raspberry-PI mit entsprechendem Zubehör.

Auf den ersten Blick soll der C=64 sich möglichst "echt" anfühlen und aussehen:

Von hinten erscheint bereits einiges anderes...

...und unter der Haube noch ein paar Dinge mehr :-)

Das Ganze funktioniert prima: Disk-Images können entweder per WLAN und Browser auf der Gerät hochgeladen werden. Oder alternativ in einem Rutsch direkt auf den USB-Stick gespielt werden.

Durch den Anschluss per HDMI ist das Bild gestochen scharf. Das ganze Gerät benötigt nur die 5 Volt, welche über den USB-Anschluß eingespeist werden.