Praktische Tastaturbelegung unter Linux

Vom 5. März 2010

Vor einigen Tage bin ich mehr oder minder durch Zufall auf eine Karte der deutschen Tastaturbelegung von Linux gestoßen.

Für alle Interessierten: Die Grafik der Tastaturbelegung findet man bei Ubuntu Linux unter System → Einstellungen → Tastatur → Belegung → Hinzufügen …

Zu meiner großen Überraschung kann man dort z.B. die Symbole für die Pfeiltasten direkt finden (Alt Gr + z z.B. ergibt ←). Das macht die Verwendung der Pfeile sehr angenehm. Dazu gibt es noch einige praktische Zeichen mehr, die ich ab und zu verwende wie z.B. die Ellipse … bei Alt Gr + . oder diverse mathematische Zeichen wie × bei Alt Gr + Umschalt + ,.

Die ganzen Zeichen funktionieren zwar nicht immer unter Windows, aber solange man in der Linux-Welt unterwegs ist, sind diese Zeichen echt praktisch. :)

Abgelegt in: Sonstiges | Kommentare ansehen und hinterlassen

Asteroids

Vom 28. Februar 2010

This is (or was) one of the projects, that consumed my time for several weeks now:

A small screenshot of Asteroids. Starships shooting asteroids... and sometimes crashing on them.

Download: Linux with i368 and amd64 binaries, Windows

On Ubuntu Linux you need a newer libsdl-image1.2 package than the one in the repository. Installing the newer Debian package does the trick.

When you start the game you can find an overview of the basic controls in the lower right corner. The normal cannon (space key or left mouse button) is a fast firing projectile weapon. However you’ll need multiple hits with it before an asteroid finally breaks apart. The secondary weapon (called “sweeper”) fires 10 projectiles at once with a small spread, making it effective at close range. However has a cooldown of 5 seconds so it can not be used that often.

As with every game there are some small bugs:

  • The player collision is not really exact. It does not consider the players rotation (always checks as if the player would be looking up).
  • If you hit an asteroid with the sweeper weapon at close range it might happen that more than two small asteroids are spawned.

Background and development

This game mainly was a playground to get a better feeling for the D programming language and to explore how a game could be programmed. It all stared with a course (development of computer games) Thomas Fuchsmann gave at the university. Since then I was somehow hooked up by this topic and so Asteroids became my official project for this course (due tomorrow).

However the game is not “just” an usual Asteroids remake. I guess when making a game every developer mixes in some other influences. Here are the specials:

  • An “ingame” menu. That does’t mean the menu is part of the game, but that your are flying around in the menu. You can land in different docks to trigger several actions (e.g. start a new game, continue a game or exit).
  • Particle effects. I don’t actually know if the original Asteroids game had particle effects. Anyway, this game has particles with color. Thanks to Daniel Klier for inspiring me to write a basic particle system.
  • Real thrusters. Well, as real as virtual thrusters can be. The players ship is equipped with 7 thrusters. Depending on your controls different thrusters fire and this causes the ship to move or rotate. Of course each thruster has particle effects corresponding to its strength. Just try to rotate the ship with the arrow keys and with the mouse. You’ll see the difference if you look closely.
  • Modern controls. Sort of. You can move your ship with the keyboard (basic WASD controls know from ego shooters) and rotate it and fire with the mouse (this makes crazy flying quite funny). You can also rotate the ship with the arrow keys. More or less the standard controls for PC games today, but now you can play Asteroids in this style, too.

I also worked on a way to really shatter the asteroids instead of just replacing them by smaller ones. However this didn’t really worked as I wanted (concave polygons can be troublesome fellows) and it was to unreliable to give a good gameplay experience, so I removed it again.

Another drawback: The game can only be played on a fixed 800×800 pixel window right now. It would not be much effort to allow different sizes or a full screen mode but I simply didn’t considered it important enough to devote time to it.

Technically I’ve learned quite a lot during this project. Several ways to structure your game with all sorts of pros and cons, architecture of an engine and even some details about math and algorithms. I only used OpenGL, SDL and SDL_Image as a basis, the rest was all done from scratch (starting from an N-Tree for the scene graph up to collision detection).

Turned out that D was quite a nice language to work with. Even if it’s not really at home on 64 bit Linux yet (the game was developed with the GDC compiler on Ubuntu 64 bit). You also need wrappers for some stuff but it’s still the most productive compiled language I’ve worked with so far. I’ll definitely use this language more often now. However I might try to rewrite the game with some nice libraries and might take a look at Tango. Doing it all from scratch produced a lot of really ugly code that would need ages to clean up.

Anyway, enough talk, get shooting some asteroids… just not get crashed by one: Linux version, Windows version.

Please let me know what you think about the game (e.g. post a comment or drop me a mail). Much fun. :)

Abgelegt in: Programmieren, Projekte | Kommentare ansehen und hinterlassen (2)

Comfortable console SSH login with private keys

Vom 7. Dezember 2009

On the virtual machines of my university SSH public / private keys are used for authentication. I usually connect to other servers using the ssh program in the terminal which looks like this:

ssh host

Pretty easy and straight forward. This command tries to log in at host with your current user name and asks you for a password.

When using public / private keys things are different. Your public key is stored on the server and the private key is on your PC. Instead of a password these keys are then used to authenticate you on the server. The only annoying thing is, that the ssh program first tries to log in via the normal password method. It then needs some time (several seconds) to figure out that the server does not support this method. A nice way to avoid this waiting time is to tell ssh to directly use the publickey method:

ssh -o PreferredAuthentications=publickey host

This command (found here) tries directly and only the privatekey method. However for a lazy programmer like me it’s a bit to much to type. One way to satisfy you laziness on the command line are bash aliases, kind of named shortcuts for often used commands. You can drop this line into the .bash_aliases file in your home directory:

alias sshpk='ssh -o PreferredAuthentications=publickey'

Whenever you know open a terminal and type in sshpk bash replaces this shortcut with “ssh -o PreferredAuthentications=publickey”. So I’m now able to lazily log into a host which uses SSH public / private keys:

sshpk host

Nice and short.

I know that there are other tools to keep track of many SSH logins. SSHMenu is one of them and I used it several times. However it never survived the natural selection of occasional reinstallations of my machine…

Abgelegt in: Sonstiges | Kommentare ansehen und hinterlassen

Level 60 Word-User

Vom 28. November 2009

Bei dem Vortrag über Computerspiele hat Prof. Kriha erwähnt, dass viele Computerspiele den Benutzer mitsamt seiner Entwicklung einbeziehen. Rollenspiele z.B. behandeln den Benutzer mit fortschreitendem Level anders (schwerere Aufgaben, anspruchvollere Umgebungen, usw.). Viele normale Anwendungen jedoch behandeln den Benutzer nach 3 Jahren immer noch genauso dumm wie am ersten Tag… obwohl der Benutzer z.B. nach 3 Jahren Arbeit mit Word sich (wahrscheinlich) in seinen Fähigkeine im Umgang mit Word doch erheblich verändert hat. Dennoch gibt es keinen Level 60 Word-User.

Was eigentlich als Witz gemein war, hat mich dennoch etwas zum Nachdenken gebracht. Könnte man nicht das Level-System aus den Rollenspielen irgendwie sinnvoll in größere Programme einbinden? Könnte man nicht Aufgaben stellen mit denen dann das Level des Benutzers steigt? Eine Art Level-orientiertes HowTo, das der Benutzer je nach Lust und Laune weiter machen kann.

“Zeichnen sie einen Pfad mit min. 10 Knoten verschiedener Art”, “Erstellen sie ein Rechteck und schneiden sie einen Kreis heraus”, “Herzlichen Glückwunsch zu Level 5”. Inrgend etwas in diese Richtung sollte sich doch verwerten lassen, so dass zumindest das Lernen eines Umfangreicheren Programms Spaß macht. Mal sehen, ob man das nicht in ein Projekt mit rein packen kann…

Abgelegt in: Programmieren, Sonstiges | Kommentare ansehen und hinterlassen

Computerspiele, Lehrer und die Medienoffensive

Vom 28. November 2009

Beim 6. Gamesday vor einigen Wochen hat uns Herr Lenzinger vom Regierungspräsidium zu einem Vortrag über Computerspielen eingeladen. Dabei ging es darum, bei einer Konferenz (weiß nicht, was es genau war) ca. 70 Lehrern der Medienoffensive ein wenig in dieses Thema einzuführen. So eine Gelegenheit lässt man sich nicht entgehen, also sind wir am Donnerstag (28.11.09) zu 6. aufgebrochen um die Ehre der Gamer etwas zu verteidigen.

Während des Planungstreffens hatten wir uns eigentlich darauf eingestellt, dass es mehr oder weniger auf eine “Killerspiele”-Diskussion hinauslaufen würde. Jedoch war ich echt positiv überrascht, dass viele der Anwesenden sich wirklich ernsthaft über das Thema informieren wollten.

Den Anfang hat Prof. Kriha mit einem 45 Min. Vortrag über seine Erfahrungen mit Gamern gemacht (Verständnis von komplexen Systemen, denken immer an den Benutzer, usw.). Um die künstlerischen Aspekte zu betonen haben wir den Assassin’s Creed II Debut Trailer gezeigt, um die Technik etwas zu erläutern den CryENGINE 3 – Beauty, Speed, Interaction Trailer. Nach diesen ersten Teil hatten glaube ich die meisten Anwesenden in etwa verstanden, dass die Spieleentwicklung durchaus eine der Meisterdisziplinen der Informatik ist.

Um dann auch mal wirklich ein Spiel “live” zu sehen, hatte ich die Ehre, Crysis am Beamer zu zeigen. Um erst mal die Grafik etwas für sich sprechen zu lassen hab ich die Anfangsszenen mit fem Absprung gezeigt (ab dem Flugzeug, das die Insel anfliegt). Danach eine kurze Vorstellung der Funktionen des Nano-Suites und der Waffen wie z.B. dem “Tactical Attachment” und dann war da auch schon die erste Patrouille. Wir haben das Spiel kurz angehalten und in die Runde gefragt, was die Anwesenden in dieser Situation im Spiel tun würden. Ich bin einfach vorbeigeschlichen. Um die Anwesenden noch mehr zu verwirren sind wir im Spiel zum ersten Sonnenaufgang nach vorn gesprungen, haben uns den wunderschönen Sonnenaufgang angeschaut und den GPS-Störer auch gleich noch abgeschaltet ohne jemanden zu verletzen. Viele waren scheinbar erstaunt, dass man ein vermeindliches Killerspiel auf diese Art spielen kann und die Umgebung doch merkwürdig ästetisch wirkt.

Um eine richtige Diskussion anzuregen hab ich die GPS-Störer-Stelle allerdings auch mal “actiongeladen” Gespielt. Für das Bot den Raketenwerfer ausgepackt (per Cheat), mit Max. Strenght eine Hütte eingerissen und einen Soladten durch die Gegend geworfen… insgesamt etwas Chaos angerichtet (und dabei einige male fast drauf gegangen, unter einfach!). Diese Szenen wiederum hat doch einige beachtlich schockiert. Darauf hin hab ich die Frage in den Raum geworfen, was für Szenen die Anwensenden zeigen würden, wenn sie 10 bis 100 Millionen in die Entwicklung gesteckt hätten und es jetzt Verkaufen müssten. In Kinos laufen Action-Filme sehr gut… ich glaube da haben einige verstanden, warum selbst die Spielefirmen ehr solche Action-Trailer zeigen und eben nicht, wie jemand um Gegner herum schleicht (Splinter Cell sei hier eine positive Ausnahme). Das hat die Diskussion echt gut angestoßen. :)

Nach der etwas längeres Diskussion haben dann 3 Studenten Gild Wars gezeigt um die MMOGs(Massively Multiplayer Online Games) mal zu entmüstifizieren. Nach einer kleinen Einführung in der Stadt (wie bildet man Gruppen, wie handelt man, usw.) ging es raus in die Wildnes. Nach ein paar Minuten hat jemand aus dem Publikum gemeint, dass es ja eigentlich recht “langweilig” sei… Einige waren auch über diese Art der Spiele sichtlich erstaun. Darauf hin gab es dann noch eine interessante Diskussion über das Suchtverhalten diverser Dinge (halbes Jahr voll, danach verliert es seinen Reiz, usw.).

Alles in allem war es eine sehr interessante Sache. Mich hat vor allem die Offenheit und das Interesse der Anwesenden begeistert (wir haben sogar die Pause sausen lassen). Nach dem Vortrag kahmen einige zu uns und haben sich nach Spielen erkundigt (z.B. nach Assassin’s Creed II), weil sie sie interessant fanden. Andere haben uns gesagt, dass sie jetzt nicht mehr so viel Angst vor der ganzen Sache hätten, denn jemand der WoW oder Guild Wars spielt, wird wohl kaum zum Amoklauf motiviert. Alles in allem war das Feedback auch bei der Diskussion sehr positiv. Ich bin sehr froh, dass das Thema Computerspiele inzwischen durchaus ernst genommen wird. :)

Abgelegt in: Sonstiges | Kommentare ansehen und hinterlassen (2)

Projekte

Simple Localization
Ein einfaches, aber macht- volles Übersetzungsplugin für Ruby on Rails.
Table Navigation
Ein jQuery Plugin um per Tastatur schnell durch Tabellen zu navigieren.

Über was ich schreibe…

Newsfeeds

Kommentare