A journey through games, programming, music and interaction
development
Augmented Reality eine Reportage des ZDF
Augmented Reality: Ich sehe was, was du nicht siehst
Eine gute Erklärung in Deutsch mit bewegten Bildern.
Ein Bonus : Wer findet das N900 ?
Posts on AR (Augmented Reality)
As you probably saw from my Twitter posts I was on ARDevCamp on march 1 in Zürich hosted by IBM, organized by Christine Perey. I plan to publish a series of posts here about AR and my thoughts and ideas.
- What is AR, an introduction
- AR and location, the new age of mobiles
- AR and games
- Context and information
- Brainstorming on AR
Stay tuned for more …
Max/MSP Lisp
There is a Lisp Interpreter written in Java, which somebody incorporated in a Max external, cool !
Got my N900
The reason why I try to get PyQt to work.
Review and stuff on the Maemo SDK later.
PyQt problem solved
Ok for anybody trying to install PyQt4 for Python 3.1 on Windows Vista and gets
“Load failed: The specified procedure could not be found”
every time they try to get an example to work.
This is the FIX for everybody who installed the binary version :
- first you don’t need MinGW or Qt for the installation to work
- Copy the entire content of Python31\Lib\site-packages\PyQt4\bin\ up into Python31\Lib\site-packages\PyQt4 , because even if you set the path right it doesn’t work otherwise
Tip from here http://stackoverflow.com/questions/2140836/pyqt-4-7-importerror-after-installing-on-windows , so thanks Reshure whoever you are.
Happy pythoning to everyone !
OpenFrameworks, Prototyping in C++
I have found an other simple way to get graphic, sound and/or interaction application done. openFrameworks tries in C++, what Processing does in Java. Processing is easier, which has a lot to do with Java, which much easier to set up and since the virtual machine mechanism is already in place, the compiling is easier.
But openFrameworks does a good job. Just unpack and you can compile the examples. Easy, as anybody, who has ever lost days to set up libraries in C++ can confirm.
The programs start on a higher level, which is something to be expected since C++ doesn’t let you hide as much as Java does and there is no way around the h/cpp file duality. But still pretty simple.
If you look for an easy way to prototype/program your graphic/audio or game in C++ instead of Java go look at it.
If you have never yet programmed, have not looked at visual studio ever and are not forced to use C++, better try Processing first. After you know how to program with classes and files and put your projects into Eclipse, you are fortified enough to tackle the vicious beast that is C++ and Visual Studio.
Some small hints :
If you want to compile everything and don’t have VisualStudio in the default directory, change the directory path in front of the vcvarsall.bat command in the .bat file in the scripts directory to the right one.
If you make your own app, make sure that the working paths (projectname->right click -> properties debug) are set right :
- for openframeworksLib to : $(ConfigurationName)
- for your App to : $(TargetDir)
The description how to make your new Application is in the readme.txt in the top folder. Have fun !
Free Game / Graphics engines
game engines :
graphic engines :
Prototyping (easy to make graphic or games)
I want to program games, why do I need Mathematics or Physics ?
Most people are pretty easy to convince, that they need mathematics, but they mostly underestimate what kind of mathematics they need. At the moment there are some people around Leo Dorst, who develop a framework from geometric algebra, which could make things easier to program. But the mathematical core is something pretty new. It looks unfamiliar, because school mathematics doesn’t even go near this kind of mathematics.
The things you will need in any case are vectors, with a throughout knowledge of dot and cross product. Trigonometry, this is sinus and cosinus, because you need this stuff to find out for example, if your avatar is facing the right direction. And translation and rotation matrices. The later because, if your avatar is facing the wrong direction you will have to rotate him. Translation is needed, because you want your figures to move. If you want to do animation you need quaternions too, they are used to interpolate rotations.
Then there are splines, which are mathematically defined and even if DirectX has most of the common ones build in, you need to know the differences and how they work.
If you work with the camera you need to know projection, different kind of projections, what is field of view and what happens, if you set it on 90 degree (bad things mostly in DirectX).
And there is collision detection, which uses a lot of mathematics.
And you need a working knowledge of calculus, which will also help in physics.
And some statistics can come handy too.
The more you know the more you can control and knowledge opens new doors. In the games industry it is important to do new things and knowing a lot of mathematics can make new things possible.
I always though that the need of physics in games is self evident, but some questions I get, made me think that maybe it isn’t.
Because there are physics engines nowadays, people often assume that you need physics only if you use these. Or said differently you use these and you need no physics knowledge. Naturally using a physics engine is easier, if you have an idea what it does. But every simple game has a lot of physics, only people are so used to it in normal meat space, that they don’t recognize it as such. If your figures and objects are on the terrain or floor, you use your knowledge that on earth there is gravity. So even this simple assumption that things are on the floor, is actually already part of physics and obeys natural laws stated by Newton.
Things like how do projectiles work, how does a cannon work, how high can a human being jump, how fast can he run all this is part of almost every game I know and is actually by a large part determined by physics.
Then there is the visual part, how does material look like. How does it react to light is part of optics and this is a part of physics. Bump mapping or the playing around with surface normals only makes sense, if you know how light reacts on surfaces. If you want to write new shaders, with new effects, it pays to know how this works. Transparency and refraction for glass and water are important too. Shadows, which are used to to make games feel more realistic, are part of physics.
You can even program a real sunset, if you know how light works.
Every time you have water in your game, you need physics to make it look real, to find out when it is a mirror, when it is transparent and how waves look. If you have things in water ships or even your avatar you need to know how buoyancy (that’s the one with Archimedes in his bath tube) works.
Every time you have a vehicle or something flying around it helps to know physics to make it look and react in a way the player can understand and use.
And then physics is a great source of inspiration. Mario Galaxy for Wii or Crazy Machines uses it for game play. Especially in Mario Galaxy, the levels are very much inspired by crazy physics. There are cool things to find, if you make the effort and go looking.
By the way talent is not necessary. If you can program you can learn mathematics. It is just a question of training. And if you do sports or just move around, you know quite a lot about physics already. The only thing to do is to put it into a framework, formalize it and find the connections.
And yes, it is just this easy, no matter what your school experience may tell you.
Physics is the glass that falls every time there is nothing beneath it and the insight that this is the same thing that keeps the earth rotating around the sun. It is the connection, that the funny feeling you get in a fast elevator downwards, is the same that keeps people on the ISS weightless. This connection to things we instinctively know, only breaks down in quantum mechanic, relativity and beyond, where everyday experiences give no valid clue. Until then physics is the stuff that happens all around you all the time (time included).
Tools I used to use, part 2 : task management
I should not announce articles. It jinxes them. I fell of my task planner. The software is still cool, but I don’t use it anymore, maybe it will help you.
It is a single person, open source easy to use, easy to export, no frills task planner from Abstract Spoon. The nice thing is, that it doesn’t open a new window, if I just want to add a new task. Because I am a one-person operation I don’t need fancy, I need fast and easy. So try it out!
If you need collaboration it may not suit you and it doesn’t sync over the net (yet). If you need collaboration look at Project Engine it has a cool look-and-feel.
And if you need a web interface you can use PhProjekt (there is an English version, even if the origin of the project seems to be German). I tried it, but on our external QNAP server it is to slow to be workable.
The reason I fell off task management? It somehow doesn’t work for me in the way it should. I saw David Allen’s (yes the GTD one) googletalk on youtube.
And I finally gave in, into buying the book. The pink shirt instead of suit and tie helped. At least he can dress environment appropriate and he is funny. The book, by the way is too. If you have reservations about buying the book, because there is a suited guy on the cover, I can assure you, it is really funny (and helpful). He is good at telling anecdotes. That is the one thing nobody tells you about the book. The entertainment value is high, so even if you finally reject the system, you will have had a amusing time finding out why.
Yes ! I finally got to embed a You Tube video on my site. Lets see if it is as easy as it seems to be.
Tools I use part 1 : Wikis
I just wanted to share some cool tools I found.
First of all I installed a Wiki for myself the Dokuwiki. I need it for my notes, which I need to access from my desktop and my laptop. Since I don’t have a real server at home, only an external hard-drive with WiFi, which is enough at the moment, it needed to be PHP, simple and fast.
I am very pleased with the Wiki it looks great there are some great plug-ins like the tag plug-in by Esther (cool stuff you have there Esther, I use your template too). The Wiki is easy to install, as are the plug-ins. The only problem I had is, that it asks if one wants acl user management. Since I didn’t need it (it is for private use only at this point) and was speed conscious, I said no.
Mistake, since some plug-ins require an admin login. By just deleting the local.php and installing again and all was well. Even my previous test pages were still there. Thumbs up ! That stuff is stable.
Why a Wiki, what is this and why do you need one ?
Everybody knows Wikipedia by now. They didn’t invent Wikis by the way, they just did a excellent job of harnessing its power.
I think Wikis are especially useful in game development, where team work is essential and everybody needs to contribute. Design documents and technical specs change all the time. And Wikis are excellent tools to map this changes. Also documentation of internal tools will profit. Because the programmer and the user (mostly an artist or designer) can collaborate on a manual that makes it easy for new people to get up to date quickly.
pro :
- people can use their web browser to edit stuff
- everybody can edit the same documents
- it has a history, it not only can tell you what was changed since your last logon, but also who changed, what, when
- it is easy to use, easy to make new pages
contra :
- often structure gets lost, because Wikis are link based and not hierarchical based -> DokuWiki is great in that sense, there are namespaces and with the tags you can find everything, it has an index too
- one cannot control the content and layout of the pages, the management has to trust having adult people with responsibility working for them, because even if you put a template up, you cannot get people who are messy to write nice documents
I have used MoinMoin, TikiWiki and some others, mostly job related. And DokuWiki is the one I like best. There is a commercial one too, which looks quite good, but I don’t want to spend money for an overblown system I do not need.
One of the other great aspects of DokuWiki is the automatic creation of a table of content as soon as the page has headers. This makes things just easy.
Personal Wikis (no need of a server)
There are Wikis you can use on your desktop without a server. Just as a notes tool, outliner or text aggregator.
My favorite is WikiPad . It uses WikiNotation (one word, two uppercase letters, one at the beginning, one in the middle) to generate new pages. There is the typical outliner tree on the left. There are special tags to change icons, color of the tree branch. One can easily flag stuff as a todo list etc. It saves automatically. And one can paste automatically from clipboard (which sometimes does not work right). It is python (which I have a soft spot for) and just something small and useful.
And there is TiddlyWiki, which is a one-file Wiki and strangely fascinating, there is even a GTD template for it. I have discovered TiddlySnip, which is a Firefox plug-in to paste stuff from your browser into your TiddlyWiki, very neat. I use that often since nowadays all the manuals are naturally in html or on the net anyway, so I need to get text out of the browser into something resembling coherent notes.
I use scrapbook, another Firefox plug-in quite a lot. It allows you to scrap pages or selected text from a web page and saves it. You can later merge the notes or just read them and highlight important text.
Cooming soon : I finally found the right task manager for me.
Visual Studio Shortcuts
I found a cool blog for all Visual Studio users, sara ford’s blog , where she posts cool, useful keystrokes.
The ones I use most are :
Ctrl + E,F (former Alt + F8) : auto format
Ctrl + Alt + Space : auto completion
Ctrl + ^ next : to a parenthesis to go to the other one
You can also use Emacs control schemes
. There once was the entire list on one page in the help files. Now it seems to be split up. But it can be a real time saver to know one or two of them. Search on the net, there are some lists available.