Now i am an official employee of Bongfish, the only game developer in Graz, Austria. This is great, because my flat is only 10 mins from the company by feet and the path goes pretty much through the city center, so the whole walk feels like a little shopping stroll each morning. Plus i work on a super secret game for a major console. Lets see how much other work i might get done next to that...
18 / 6 = 3...
There will be 18 games at the Kinect launch. But wait! Some games cover the same topic. Actually pretty much all games cover the same 3 topics:
- Snowboard (Konami, Sega)
- Various sport mix (MS, Ubi, Konami)
- Fitness (Ubi, EA and two other nonames)
- "Party" (2 titles by MS, one by Warner)
- Dance (Harmonix, Mindscape, Konami)
Beside of those, unique titles are Kinectimals, Harry Potter and Fighters Uncaged. I guess i pass on Kinect for now...
Excel, quo vadis?
Excel in Deutsch ist eine Zumutung. Und nachdem sich alle Office-Pakete daran orientieren, sind auch diese eine Zumutung. Natürlich komme ich mit dieser Erkenntnis gefühlte 20 Jahre zu spät, egal. Ich erledige meine Finanz damit, habe ich mich deshalb mit dem Formelgenerator rumgeschlagen und bin komplett sprachlos ob des Wahnsinns, der da herrscht. Hier ein paar Beispiele:
Sämtliche Bestandteile der Scriptsprache zum Erstellen von Formeln sind übersetzt. Das macht mir als zumindest Scripting-Erfahrenen das Leben ordentlich schwer, wenn ich mal den Syntax einer Funktion suche... "WENN()" statt "IF()"? WTF?!
Es gibt eine Funktion, die einen Text in eine Währung umwandelt. Diese Funktion heisst "DM('text')", also von Deutsche Mark... WTF?! Man nimmt einfach die Abkürzung EINER Währung, um eine ganze Funktion zu benennen?! Wir Österreicher sollen gefälligst in D-Mark arbeiten? Und dass die Währung mal geändert werden könnte war bei der Entwicklung der Programme komplett plunzn, oder?! Dementsprechend dämlich liefert die DM-Funktion auch EURO...
Es gibt zwei Funktionen, um einen String (also Text) zu durchsuchen. Die eine heisst "SUCHEN()", die andere "FINDEN()". Aus dem entlehnten deutschen Wort der jeweiligen Funktion lässt sich zumindest dessen Wirkungsweise einigermaßen erahnen. Was den Unterschied zwischen den beiden ausmacht, liefert gottseidank die Hilfe zu "SUCHEN()": Die Groß-/Kleinschreibung spielt hier keine Rolle. Soweit zu deskriptiven Funktionsnamen. Natürlich benimmt sich keine der beiden Funktionen gut, beide liefern zwar brav die Position des gefundenen Textblocks bei einem positiven Suchlauf, ansonsten eine Fehlermeldung. Insofern muss man beide Funktionen in eine zusätzliche "ISTFEHLER()"-Funktion einfassen, um sie zu einer klaglosen Mitarbeit zu bewegen.
Dieses Programm steckt so voller Relikte, dass es einem die Fussnägel aufrollt!!!
3D Studio Max hates me. And i hate it!
Alta... Nicht meine Woche! Gestern Vormittag hab ich das Problem gelöst, warum Unity meine Lightmaps nicht anzeigt. Problem? 3D Studio MAX fucked it up! Egal, Problem gelöst, weitergearbeitet. Plötzlich ist meine Arbeit ein Morph. ARG. Wurscht, neu angefangen. Heut arbeit ich weiter, plötzlich besteht mein Objekt aus lauter einzelnen Faces! Ich merge die Faces und mein UV-Layout is im Arsch...!!! WAAAAAAAAAAH.... Was?!? Was hab ich dem großen Gott der 3D Programme getan, dass er mich so straft?!?
Applying UV's is surprisingly well solved, working with them is another thing. You can have different selections in the 3D view aswell as in the UV-editor. Sounds great at first, but it brings along problems. The UV-editor for example is only showing faces i selected in the 3D-view, unselected ones are invisible. I see the principle behind it, but i'm not all too sure about how practical that is. It leads to other problems, like the next one.
- I didn't find a quick way to determine how the selection from the UV-editor correlates to the ones in the 3D-view. I have one face selected in the UV editor, which one is it on the model? This is especially annoying when you haven't finished the UV-seams-setup for the unwrap. Beside several well unwrapped bodyparts I ended up with one big blob of uvs that i didn't know what it belonged to. So selecting that piece alone didn't give me a hint. The only option was to select various parts of the model in the 3D view and check back wether it would include the blob-UVs. I hope it's just me who does something wrong...
Edit: I have the solution. It's of course trivial, i just didn't find the correct button. It's surprisingly called "Keep UV and edit mode mesh selection in sync"!
The only format that i found to export the UVs for texturing was to EPS or SVG. I didn't find any bitmap-format and if i want to use phtoshop for texturing, i guess i have to go through another program to convert that, as my PS version isn't up for SVG. Maybe i find me a plugin somehwere...
The texture placement of the 3D view doesn't really represent the actual texture placement you'll get when rendering. For my little skin-man i used several options of the file-texture. For the skin i changed the size of the mapping, as i have a small skin texture applied to a human-sized figure. The 3D view is not updating any of that. For the eyes i used a simple texture of a pupil. I turned off the texture repeating and again the 3D view didn't acknowledge for that. Bugger!
The blend modes in the textures seem to work differently than layer blend modes in Photoshop. I tried "overlay", in which a perfect 50% gray isn't making any difference to a picture in Photoshop. In Blender it seems to darken the material. If it is only layed over the diffuse texture, then it's calculated differently than in Photoshop. This way i am not really trustful in the other blend modes. I'm not saying that Blender is doing them wrong, i am just used to the Photoshop ones.
Blender, the first.
I finished the tutorial, thats what it looks like. I know this looks a little ... scary actually, but thats just me. I like bizarre things ;-)
The link to the tutorial for whom it might concern: How to animate a character in blender.
Trying to blend in...
I was on a local Blender workshop recently. It was okay, alltough not really aimed at my level of experience. I had a little trouble keeping my concentration up because the tutor explained even the most basic 3D concepts.
Nevertheless the whole thing fired up my interest in this 3D suite, so i've been playing around since in this program and my first impression is ... well, mixed. When i spoke to the tutor, i explained that certain shortcuts just didn't make any sense to me. He answered that one should be open for new workflows and such, which is of course right. So I have now about 1 1/2 days of intense tutorial following and certain concepts are still new to me.
First one: There was a certain sense of "Maya is unintuitive and menu items are deeply hidden in menues". This is sure right if you don't know the shortcuts and quick menues behind several shortcuts. Sure, this isn't especially intuitive, but then again, Blender hides a lot of functionality behind shortcuts and quick menues, so this critic doesn't sound very valid to me.
On the other hand i found a solution for my annoyance with the sub-object-selection. In blender ctrl-tab is opening a menu to select vertice-, edge- or face-mode. In 3D Studio Max and Maya i simply press 1 for vertices and 2 for edges. As 3DSMax offers the additional sub-object "border", which selects open edges, in poly-mode (highly useful!), face-mode is selected with 3 in Maya and 4 in 3D Studio Max. In blender you activate layers with the number keys, f. e. 1 for layer 1, 2 for layer 2 and so forth. I can understand why layer selection was valued over sub-object-selection, after all Blender's funcionality is far beyond simple modelling and layers are a globally used functionality. Still pressing three keys for something that i use very often in modelling strikes me kinda odd when other (less used) functionality is far closer (like extrude hidden behind the E-key). Anyway, the solution that i found useful is activating all sub-objects at once by shift-clicking all sub-object-mode-buttons. This way you don't have to change subobject mode at all! Now i just have to get used to pressing A all the time for erasing the current selection...
Another thing that bugs me is that on my blender version (2.5 alpha 2), the "edge loop"-shortcut with alt-select edges doesn't seem to work. The only alternative possibility to select a loop is by selecting an edge and then pressing ctrl-e to pop up the edge-submenu. There you find another "select loop" menu point. That's not that intuitive eighter. And not especially quick considering you have to press three keys and possible navigate to the right menu entry if you used something else from that list before. I hope i'm just doing something wrong and there is a faster way, otherwise this would be a major annoyance.
Finally i also found how to deactivate the home grid. This hides now in the properties panel, which you get with N.
At least what i can say so far is that i feel much more comfortable in Blender now. The 2.5-version is a huge improvement, it adds a lot professionel feeling to it. Especially the fact that you can customize the panels so much is a huge plus. It's definately much more appealing than the rigid UI of 3D Studio Max. I am still suspicious wether i would archive a similar modelling speed as in Max, but for every other workflow i guess i'd prefer blender by now. And this is a huge compliment!
Panda is great! But...
...there are some details that sorta spoil the fun.
One thing i dislike is for once the fact that the libraries are quite big. That's not really a problem, if your game is big, but an unoptimized "hello world" program took about 60 megabyte. Nodody would download a small game with such a size! That's an issue it owes to it's huge functionality...
Another thing i am sorta unhappy with is the matrix/vector functionality. I compared it to the implementation of the (supposedly discontinued) "Python Computer Graphics Kit" and i prefer the cgkit's version much more. For example you can multiply a vector (Vec3) directly with a transformation matrix (Mat4) via the normal multiply operator (*), which isn't really crucial, but a nice touch:
myVector=Vec3(2.0,2.0,2.0) myMatrix=Mat4() myMatrix.scaleMat(Vec3(2.0,2.0,2.0)) Mat4(2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1) myMatrix.xformPoint(myVector) VBase3(2, 2, 2) myVector Vec3(2, 2, 2)
(which isn't the correct result anyways... wtf?!)
myMatrix=mat4(1.0) myMatrix.scale(vec3(2.0,2.0,2.0)) [2, 0, 0, 0] [0, 2, 0, 0] [0, 0, 2, 0] [0, 0, 0, 1] myVector=vec3(2.0) myMatrix*myVector (4, 4, 4)
Another one is the fact that when Panda3D is scaling a transformation matrix, it overwrites the matrix with a comletely new scale matrix:
myMatrix=Mat4() myMatrix Mat4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1) myMatrix.setTranslateMat(Vec3(2.0,3.0,4.0)) myMatrix Mat4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2, 3, 4, 1) myMatrix.setScaleMat(Vec3(2.0,2.0,2.0)) myMatrix Mat4(2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1)
...does pretty much the same as...
myMatrix=Mat4() myMatrix Mat4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1) myMatrix.translateMat(Vec3(2.0,3.0,4.0)) Mat4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2, 3, 4, 1) myMatrix.scaleMat(Vec3(2.0,2.0,2.0)) Mat4(2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1)
...whereas CGKit is doing this:
myMatrix=mat4(1.0) myMatrix.translate(vec3(2.0,3.0,4.0)) [1, 0, 0, 2] [0, 1, 0, 3] [0, 0, 1, 4] [0, 0, 0, 1] myMatrix.scale(vec3(2.0,2.0,2.0)) [2, 0, 0, 2] [0, 2, 0, 3] [0, 0, 2, 4] [0, 0, 0, 1]
I have no clue why, but i am not too experienced with that stuff so far, so maybe i'm just thinking wrong. Nevertheless most of the time you don't need that kind of stuff anyways, Panda3D does a great job keeping these issues away from the user. I just had to use these vector calculations for my tree project.
Today i want to talk about "serious games". I personally hate the word "serious", mostly because of its inflationary overuse nowadays. I worked in several companies that threw around with it like some nasty people (not me!) popcorn in theatres... Err, where was i?
I mean games, that adress a more mature player with maybe a splash of intellect and yet still manage to make a good game. My favourite example of that is the Total War Series. I played Rome and Mediveal 2 so far and i love both of them. On the one hand they are great strategy and management games. But what i really, really love about them is the mature way of dealing with the matter. The written text is so well crafted, i really read most of what i was presented through... Something i barely do in say a Mario game or for that matter actually 90% of the games out there.
The developers have no problem with giving the characters all kinds of character features, good as bad. It especially adresses a topic most game make a huge bow around or treat it in the most superficial way possible: Sexuality, even homosexuality is just another part of the game. In the sorta 200 years my campagne is lasting now i came across a gay general, a lesbian princess and a spy, who's complice seems to be a male stripper kinda guy. And it is nothing all too special.
Thats exactly what i would like to see more: Sexuality treated in a mature kinda way. No japanese schoolgirls panties, no huge titty warrior mamas, no "oh, she's an archeologist, so it's okay to look like porn actor barbie". Pure and realistic depiction is quite a nice break once in a while and i can't imagine i'm the only one that feels that way.
In a way i'm not surprised that games are still treated a little like the younger immature brother of cinema, it seems games feels pretty happy and safe in this role. Which is another reason why i buy less and less fullprice games. They just don't seem to adress me any more.
To end that rant with a positive note: It's not like the total war series is only serious. The developers built in a very nice and subtle humor that contrasts beautifully with the general over-the-top-presentations of the mainstream:
I actually laughed...
Long time no post. I am still trying to find a job, one in Vienna looked promising, but i haven't heard from them since... Lets keep fingers crossed.
Nevermind, in that way i have time to work on a little project of mine again: Cloneroids. This is my first shot at flash/actionscript and it was quite fun so far, even though i had to find my own approach to AS...
Anyways, i am still proud that i managed to get this far. There is a massive amount of work ahead of me, but at least the whole thing is now identifyable as a sorta game. If i get finished with that, i at least have a stable base to create internet games. Most internet games are quite horrible (with some pearls underneath), lets see if i can make this situation a little better...