OpenGL sucks

In theory, it's interesting. But in detail you won't find any good parts in it. Seriously, I don't like it. I like the intention and the concept of just modifying a set of variables and sending it to the GPU. However, I guess it's not OpenGL that will suck this way for me, but also DirectX and all the other hardware-accelerated 3D engines. I don't like this and I'm barely able to enjoy OpenGL's API in practice. Seems like one these typical outputs you can expect from standard organisations or guys somewhere beyond your perception. Ya know what? This 3D sucks. I'll go to creating my own one with only the stuff I want/need. So this is what I can work towards. Something easy and less annoying to work with. A clean API and a nice, minimal system. It's not my intention to make it completely realtime or as fast as other software renderers. I just want something that works fine on low resolutions with a flexible systems for coloring/texturing polygons and/or shapes. With builtin functions for minimal rendering amount you'd normally need to calculate before sending it to the GPU. Also, there won't be any GPU, so hooray for direct rendering! Maybe I could even design it multithreaded, so you render multiple shapes at a time. The API should be just as simple as possible and very, very understandable. From functions to rendering polygons to calculating positions on screen to checking if a shape/model is on screen or not. I can imagine a lot easier and quicker methods than the OpenGL API. And no, please don't come with arguments about how well-thought it's design is - in detail I can't bare it, it' simply garbage inside. I don't know of any alternative to DirectX or OpenGl, so I'll stick with what I'm used to: 2D and Orthogonal stuff (atleast until the point I can create a nice little 3D engine). I'm just more interested in normal 2D components like images, movies and so. All this 3D visualization is a level above my own programming tolerance. I can think in terms of cameras with fov, rotation and objects with bounding boxes, etc... But OpenGL doesn't seem to care about this. You get matrices. I have matrices. It's so... mathematical. I don't like maths either. It's a completely differently interpreted world.

So ok, I'm fine with the world now. Just finish this mandatory assignment as quick and dirty as possible and never think about it anymore. There is more interesting stuff you worked for! Just give them what they want as long as you need to...


Wine saved my day

I never tried GraphicsGale with Wine on my not-so-fresh-anymore laptop in the past, I simply installed it on a seperate windows partition along with some steam games. But well - there was no reason to do so! I was, again, looking for a pixelation program for Linux but didn't think about simply trying GraphicsGale again. This combination once made half the system freeze after it also deleted some files that were opened in a terminal editor. This made me avoid it at all, so it took me some time to try it again. So what's new to say about it? Simple: it works! Yes, it just works. As fast as on Windows, with no slowdowns during the time I tested it. And I doubt there will be any further problems - runs fine means runs fine. Awesome! I can finally start making pixelart again. I missed that so much. It was an integral part of my life before I started using Linux. And it feels good to know that it's finally possible to use it with no annoying slowdowns. Pew! I always wanted to make my own icon set in small-scale pixel graphics to make my own vison of an everyday icon set come true. I don't plan any big and complex contents, just some pixelish and flat graphics I was always looking for. So yes, maybe I finally start again making nice pixel art, I'd enjoy that very much. Especially since I don't want to spend my time coding, playing games or browsing the internet for random entertainment. It's so much more healthy and inspiring to make your artistic visions come reality! And I'm looking forward to making to some nice low-res textures for one of my assignments. There will be lights, textures, animations and camera movements! So maybe I can get my hands on bumpmapping, too - if there's enough time for that. So yeah, even if it's just a nice distraction during lessons, I can use everything I can create with it. Hooray for recent Wine versions on modern hardware!

Epic Mickey

I almost lost the hope for playing any good game on the Wii except the good parts of known Nintendo series like Zelda or Mario (though Mario Galaxy wasn't as good as other parts, most cause I hate it's progression system and level builds). As I heard of a Goleneye remake, I though it'd finally some new cool thing for the Wii I could enjoy, but as I actually played it I realized how fucking much I hate FPS with directly motion-controlled camera control. I don't even enjoy shooting games anymore except they mix in RPG or adventure elements (like Stalker, Metroid, Bioshock etc.). So my sister told that there's a Disney game out. A game about mickey. And painting and jumping. And she it looked exactly like something I'd like to play. So I read a review, saw a video and think I want to play it. They used almost every old Disney character and made it an open game with no necessary decisions but big effects and, as I must say from watching videos, an interestingly untypical graphical style for a Disney game. But I'm optimistic, as everything in this game looks so good and welcoming - it looks like a platformer in the good old style of Banjoo Kazooie, Vex, Super Mario 64 etc. It they said there is a ton of stuff to collect. A must for every game on a console. I think it's better to never again try to appreciate some shooting games it's predecessor you knew long before you ever learned how lame they were. You spend over 40€ for a game you can't enjoy cause you're too bad in controlling a Wii mote for shooting and can't see anything on you old TV screen. I hope Epic Mickey isn't too small on screen and features big fonts for old television devices. I hate that so many modern games don't care about a smaller screen, it's a shame.

So I hope everything turns out well and I can play it tomorrow and see a good and classic gameplay that's just right and perfect for me to enjoy after everyday's trouble. I really need a good game these days, I became so down from not having one ready after I worked to much. So down that I totally stopped working on my student project. That's not good as I won't have the to do it later. I want to get all work I know as soon as possible out of schedule so that I can work on the game for my sister's art uni project and enjoy my Mindstorms set during christmas days. I need something I can look forward too. Me without something awesome in the future is a sad pile of human.


I want death and destruction.

Fuck it

I hate, utterly HATE writing code that doesn't check for the complete correct of given data. You know what? PArsing is the shittiest work EVER, cause proper format checking is too complex and simple "trying" to get some data is too easy. And fuck, I hate this circumstance. I wrote just 15 lines of barely nested which simply scans for important characters and takes the stuff inbetween. More than 5 years of C++ coding makes a coder thinking in terms of strictness, not of "automatically scanning" input code. I. HATE. PARSING.

Ok, that was necessary. I feel better now! I hate that there are ALWAYS cases in which it is faster to not following the strict rules but only scan for important places in the code. For me, it is no question to always for errors and wrong format. What I want is a perfect parser system, but this won't work so quick for a 14MB text file and I don't want to take forever for that. Writing a perfect parser requires experience in writing and designing them. So far I already wrote about 10 for different, not really simple formats, so I'm experienced to NO END. I simply say this. It is like that, shut up stupid voice in the background. And you know what? Regexps suck. Really. I need to write a parser to write a parser for them. WHAT IS THIS BULLSHIT. Nobody needs to varify the correctness of expressions if he can't get it's content in detail.



Oh god, I failed so hard with this parser. It's always like that: prototypes make you realize how good the new concepts are you realized while fighting with the old ones. So I failed making my initial concepts come true. I simply lost overview about the very specific cases in so many different facets. It even became more in the end and I'll start using regular expressions instead. I always wanted to implement it one day. However, I can still use fscanf or shit like that to get content line by line. Argh, I hate this. It's no good to make such special contructs - you'll also ways fail. But well, I thought I don't have the time to implement regexp's. No I seem to need them. Unfortunately, existing libraries don't seem to work the way I want... fuck it, totally. It's no fun to parse without them.



I ordered some of Brickarms' guns and swords a few days ago (via one their resellers) and sheesh, that they arrived just now a few minutes ago! Man, THAT was quick. Unfortunately, I realized that I totally forgot to some universal clips and a Bladerunner gun, but I think that should be the problem, looking at the stunning quality of these little plastic weapons. I must say that I didn't expect them beeing so detailed and fine. A bit too fine I think, I guess that's the reason why LEGO doesn't sell too thin parts: they don't break in a child's toy box. So I put them back in a save place to get use them later when I want to make some scenes with them. I already have an idea how to setup of system of resuable scene parts in case I don't want to put too much time into a new model. A set of premade, universal base structures with attachables surfaces and details will do it. Let's see how far I can get and what it'll take me to finish my system. But later. I simply don't have so much time to stop coding and play with LEGOs instead. No, first I'll implement the alghorithm design for my parser and then I can put together all the other list filtering things and so on. This should be enough to get a little CLI program done for loading, filtering and display chess data. Oh fuck I forget about the chess code itself! Damnit, I guess won't have ANY time til christmas for proper LEGOing. Shit, I really wish there'd be less work to do. And I don't even have the assignment specifications yet. These guys should really hurry with giving tasks before I run out of time.

So ok, simply finish the parser and next you'll see. Good thing is, when it's done I can simply leave all syntax checking to the parser and will only need to write to callback-controlled Interpreter. For some strange reason I always start to get bored when it comes to actual program finalization. Maybe it's because I fear that something bad will happen or that I forgot about the bugs. Well, this never really happened in such a scale, so I guess that I simply need to jump over this over psychological hurdle. Let's hop it'll work fine then!



Though I'm quite late this evening and should go to bed, I couldn't resist to read some more LEGO Mindstorms and it's NXT chip since I'll probably get one as a christmas present. I don't need a whole set, I rather want to know how much I need and especially how to get it running on Linux. I know that LEGO itself doesn't really do anything for it, but they released the source code and thats enough for potential projects out there. However, I consider myself open for this as I just want to know how to get anything non-childfriendly programming environment working. I know there are some platforms to compile and send programs to the NXT, but everything's so vague, I barely imaging any details. So if nothing's working right, I do atleast need a setup were I can code in C or C++ and upload it to the brick. I don't know anything about flashing firmware or if it requires you to open your NXT brick or if it's as simple as sending random bluetooth packages to it (I don't even know how to code bluetooth communication). But well, as long as there are possibilities to somehow upload code to the NXT, I'm fine with that. Ok, ok - I'd even use Windows for that. Or there are really, really, no ways to get atleast C working, I'd even try to get my hands on assembler (I regret saying that). I definitely need something that simply works. I'm sure there's a number of interesting tasks for the NXT I could code, but I need a working environment that simply works and doesn't require me to make hours long system setups.

Something's in there

I don't know why I love Nintendo's N64 music so much, but it seems be related to the fact that composers were rather limited to composition only and some wavetables for their sounds. I like this kind of musical limitation as it all brings a certain consistency among tracks. Listening to Mario Kart 64, most sound effects base on one-shots, but sound altered due to overlays with one-shots. Simple, but effective - lovely to see good samples doing wonders.

I hate online communities

I simply hate them. There's nothing against a small club-alike beeing like on deviantART, or a rather showcasing model like on mocpages. But what's labeled online community these days is horrible to no end and does simply vanish all good things on earth. And all the suckers you can't enjoy raise from their dark and muddy backstreets and don't even consider shooting themself in the head. And after all, everytime I need distractation and try to cover my boredom with posts from such communities, I end up in frustration and anger about the stupidity of the majority of people there. God, why am I even writing, stuff like that should be banned from my browser to keep me sane.

The "joys" of designing multifunctional parsers

Well, I made some major changes in my parser, most notably some more criterias for word characters and when and where to handle with EOF occurences. I don't like the current design. Mostly cause it's rather messy and can (due to it's non-regexpy quick'n dirty pattern rule mechanics) create some hopelessly endless loops you can fortunately end by calling a stop function - though it won't happen cause you can only call it in places where it doesn't really make any sense. However, I won't create a tool to detect the users faulty patterns, this is just too much work for a thing that has very well-defined syntactical contents. I don't quite know how to choose understandable names as it's structure is rather buildup on functionality than on fancy class design (I hate this lecturer so much for demanding a senselessy deep seperation) but I hope that in some days I get a better for it. I also got an interesting idea of how to combine several syntax rule sets into other rulesets, but in my first thoughts it would require very extensive dynamic type handling, which don't like in such time-consuming tasks like parsing. I'd basically split a single pattern into a marked, completely different rule set for a new parser fork. So the parser/interpreter one level above can take it's result as the desired data and interpret it as it where a random, regexp-shaped word. Quite useful approach, but I'll need to create a different system that doesn't build on dynamic type checking or heavy casting from void* to other types. Quite difficult! Well, that's something for the next term break along with a nice little multithreading toolkit. And I doubt I'll ever touch this parser I'm currently writing again since a regular expression with recursion and higher degree of abstraction is much more powerful than a "sloppy", rather specialized mufu parser for random words and repeating structures.



Micro parser

I finished the desgin work on a recursive, pattern tree-based parser for my student project. It'll be an integral part of ITK as it consists basically of three functions, one for parsing a single pattern, one for determining if the current character read is part of a word description (like a regular expression) and one for checking a pattern for ambiguous rules/logical errors (these may happen during pattern design). You can define a pattern via an ordered set of words and more patterns which can optionally repeat. It has some interesting options like source read control to create explicit patterns (two words to define start and ende which are only part of this pattern) and implicit (start/end characters of other patterns can be a part of their own pattern and thus create pattern not made of limiting/delimiting words or characters. It's quite a nice and rather subtle design and it should be possible to parse a lot of tree-based, sequenced structure like programming languages, PGN blocks, XML files, etc. . Using this, it won't be a problem to get define the PGN parse patterns like you would describe other other programming language with it. Well, there are limitations, like there's no way to define a fork of rule sets depending on what was written in the file. But what you can do instead is to make words and patterns inside a pattern optional and recursive, so you can nest a structure in itself if you want (LISP parser ahoi). The parser itself is OK, does only recognize words in format of a randomly mixed sequence of per-pattern/word defined characters. Next step could be implementing regular expressions checks, which will get a bit more difficult. I don't have so much experience with regular expressions since I mostly don't need them, but I can remember that they couldn't evaluate recursively nested expressions cause their format didn't allow it. That made me think: Can't I parse words with my micro parser, too? Yes I can, when using patterns in patterns in and so on. But that'd uncomfortable and rather limited, beeing only and concatenation of characters with heavy CPU usage. So I thought again and found regexp's method of dividing between concatenation and forks very similar to structured text files, if not identical and totally the same - with the exception of recursive nexting, which makes them rather useless for parsing programming languages and other more open structured files. So I made it clear to me that I don't need a pimped version of my micro parser, but a generalized system recursive regular expressions, giving you the possibility to next regexps of different abstractation layers into other regexps. Quite awesome stuff as it gives the possibilities to parse every kind of nested and sequenced repeats of characters/patterns. So this is my next goal for ITK after I did the thread implementation. I'm sure it's possible to use multithreading for parallel evaluation of regular expressions while stopping a thread while the opposite already evaluated it right. Though it'd be questionable due to the message checking (if the other threads already finished) and parallel access to the same string data. I doubt it'd be THAT much faster, but let's see if I'll ever go that far into it. However, I need to read some more about implementing regular expressions and how it's usually done, so I can decide if it's worth implementing a generalized version. All you'd need to do is define some operations between the given segments, possibly including other recursive regexp checks on a lower abstraction level.

But that future's music. For today, I'll simply enjoy my simple approach. If I ever need to have forks, I can still change the rules on-the-fly via Callbacks. The whole micro parser's interpretation is implemented using callbacks, so I can - no matter how the syntax looks in detail - simply look at the components flying in and leave syntactical errors to the parser. Of course do I have an error callback, too.

Neo-Medieval music

As I was looking for some interesting, stylistic inspiration for how a lofi Dark Messiah could sound, I found some interesting songs on Youtube you'd usually associate with medieval markets, partially oriental fantasy games and some other elements illustrating crusades, sad bards and dangerous fights for castles. And I always found such neo-medieval, newly created music very inspiring. Some are rather dumb and do not carry the spirit I like about historically correct medieval music, but most of the tracks I find inspiring do rather focus on the intruments character and a backgrounding sound. They give you this nice feeling on beeing exposed to the pure instrument and not some stupid intention the musicians had. As I read on the German Wikipedia, most neo-medieval music were developed out of personal entertainment and interest in supporting the medieval markets the muscians were doing. So it's rather the story of good background than forced elements to carry the usual musicial content shit. And yes, that's what I'd like to keep as an partial inspiration for the resulting sound. Not that I want to make the whole in a single concept, but listening to it reminds of what they stay close to and how actually simple the alternate their structure but stay close to their basic sound. Also, the instruments. I kind of like them, but for an actual soundtrack, it'd be boring to only work with samples or poorly synthesized DS-10 sounds. All in all, this is some kind of music that should deserve to be in game - executed with more power and less monophony.


Engine Overhaul

I felt so bad for always NOT working on my text game, I had to make a little redesign with my newly acquired multithreading knowledge. As I don't have one PC without a subdivision into multicores (via lowlever software or hardware), I think it's time to get rid of those massive CPU time poblems I would've had without redesigning it with multiple threads. As I do seem to have three cores in my desktop PC, I seperated the core parts of the engine - graphics, physisc and logic. I quickly designed a system of strong division between graphical, physical and logically object and map properties and a "task" stack for every thread it empties and locks before going into the next calculation loop. It's quite a nice approach without so many locks and almost without any waiting between. Basically, there are several threads with a task stack: it holds tasks which the thread has to perform before it enters it's own output/operation loop (in case of the graphics thread it's raytracing and displaying the current scene). These consist of changes to the thread's map and object data (the scene's graphical, physical and logical representation, for each thread one of them), which again changes what the the thread will send to another thread during it's output/operation loop. So we can have a logical thread to control which object does which move, which we put on the physic thread's task stack. At the moment the threads task completition time has come, he recognizes the "move event", does set the object's movement parameters and continues to calculate all position changes of all objects after applying all data changes found in it's stack. During this calculation it also sends changes to the graphics thread (object pointer on the graphical map data changes) and the logical thread (object pointer on the logical map data changes), which will again execute their data change tasks if before their main loop repeats again. So basically, I'd need to lock all task stacks to prevent endless refilling of the same stack when the sending threads fill it while the executing thread executes them, I use two stacks - it's similar to double buffering as I simply give a free, to-be-filled stack while executing the other, now not anymore visible stack. So I can execute a stack while the other is getting filled. Of course could one argue that even with such a communication the sending threads can still spam the executer's thread while increasing the time it requires to get to their main loop. Well, in a game, every thread has a maximum delay time between updates to prevent them from consuming more CPU time than they'd need or simply to get a constant frame or game update rate. And that's exactly the gap we can use to execute our task stacks. The tasks are quite simple (mostly overwriting array elements) and need less time to execute than the main loop. In order to preven threads from beeing to busy and task to be executed, we exploy the time we'd usually waste CPU time to empty out stacks and swap time after executing all tasks. So we then execute our main loop and can take the next full stack and so on. This might generate some differences and disadvantages compared to normal single-threaded games (some frames delay between the way from game logic to physics to graphics), but the resulting performance increase makes it up in the final result. I don't have much experiences with real multicore-based programming (I always hade hyperthreading processors), so I'm interested to find out how effective it will be when implemented in a game. I can't wait to realize it! The next weeks are coming and I think this is worth using, especially for the image processing assignment I still don't have any instructions for. See, as we process a number of images and maybe I need to make several branches of filtered images to join them later. It could effective reduce the required CPU time by the shortest of all parallelly processed branches. And you DO need a lot of CPU time in image processing. So it's cool to have a multithreading toolkit available. And ITK can archieve one more effective feature, generalized of course.


The composer for VVVVVV once released it's soundtrack as PPPPPP, which I literally enjoyed. Though I wasn't able to enjoy the later difficulty of VVVVVV (especially the levels where you had to manouver not only you but a companion), the soundtrack kept me playing and eventually dying. And, well, as I was in need for music floating in head (VVVVVV's soundtrack), I had to get it one way or another. Fortunately, the composer released PPPPPP as 320kbit MP3 in change for a four or ten € donation. I think it's worth paying 10€, as it's resembling authentic melodies for lofi heros of the jumpumping kind. Plus you get the full program of tracks for a game, which's very unlikely today (even for indies).


The more I learn about OpenGLs 3D implementation, the more I can see it as a simple but combinable set of useful rendering functionalities. It's cool to see how quick you can get something visible on your screen and how actually simple the use of textures is. And I can use my toolset to load, draw and create textures without any trouble. Though I see what can be done with a better set of 3D-specific tools, I still don't believe in it's aesthetical value without heavy modifications. In several cases, I prefer orthogonal graphics over perspecive graphics. It's visually to look at and technically less demanding. A cool way to put the good old 2D RPG game perspective into new glamour with new interesting features. Plus, you can implement more and quality effects without so heavy calculation, since stuff like raytracing does fit very well into 3D grids. I don't think displaying a text game in perspective mode doesn't benefit from it, it rather destroys the unique and abstract representation. So I'll stick with SDL and create text-only special effects. Of course will I continue thinking about how this game could work in 3D, but this has to be another tale, another project. I simply don't think I want to sacrifice more performance by leaving out orthogonal optimization. But maybe I'll implement something limited reflection, so the lights do more interesting things... No idea. And maybe I should think about outsourcing some components into another thread. So I can keep rendering with know data but calculating physics on another. It's a good training for later and I'll be able to benefit from multicore CPUs if the underlying OS is able to run it on the second CPU. Cool thing that I do learn all these things at the moment (well, mostly the theory, which is fine since I often interpret in my own way and implementation) and that I can use it later or now. And I learned about Phong shading and how it handles specular lights, etc. I think it's time to rethink my rendering pipeline on paper and start implementing it during the next term break. I don't have the time to implement it during studies (also, other assignments need my attention), but I can pull out final, theoretically functional concepts more effective than simply starting to code like a conceptually blind. I simply CAN'T code without concept, so it makes no sense to makes something I actually won't be able to archieve. And once I had a little discussion with a narcissistic dude with doubtable attitude towards systematic design and he simply start to pump mathematical formulas like a madman without thinking about efficiency. Well, if he doesn't care, it's fine, but as he's normally not developing any stuff like that, I see how he never will.. He even suggest me to develop his game with me, but I can't develop with somebody who just implements stuff he can find on Wikipedia. Where's the creativity, the own thought? Nothing I'd like to guarantee for. Only thing I can guarantee is to have no or very few errors in very small and minimal components. Build from grain to castle and you'll know what's going on - not only in your case, but in most others, too. That might me not the case if they doing it differently, but you can always break down every alghorithm from major to minor to atomic steps and then you can compare them with yours and tell him he's doing the same (if it works) or what he did wrong (if it doesn't work). Assuming your version does work, of course.


I even installed Fable 1 to calm me down.

Fable 3

I WANT this SO BADLY that I even considered to buy a 360. Seriously, this first was the best I ever played and I wanted the second game, even for a massive amount of money. But NO, some decided to stop the development and there was never a PC version. And now even Fable 3 is out and I atleast want to play the third part if I can't play the second. So pleeeease keep going with your PC version, Lionhead! I want this game more any other game in the world. I'd even pay the double amount of money you'd usually pay for a full price, even more! Oh god, I got so excited after watching the first 15 minutes. I need I need I need I need I need I need I need. I'd give my left toe for a copy for it.

Selfhosting, kinda

I decided to NOT choose any hosting services for my toolkit. Backdoors and license twists isn't my taste. I actually took a look at every project hoster I could find and decided to register at Sourceforge. I edited my settings, tried to create to create a project and wrote the most awesome description for my project. Well, it WAS a description. Sourceforge has such a short allowed login time, that it simply said I have to relogin to make a project. WHAT? Honestly, when I start editing a wiki entry, I don't want to retype all changes I temporarily did, just cause they don't to they logged for ten minutes. No, such flaws definitely turn me off.

So I decided to work the classic way: random host for download (dropbox in this case), doxygen documentation as zip or online, a single pdf and html document about the projects aim/structure/layout etc as well as howto's and tutorials. That's the way I like to read it elsewhere on the web. Download in all formats and archive types, documentation readable online or as pdf and a comfortable API documentation (doxygen is waayyyy nicer than a single-page html document...). It also gives me the freedom to present it 100% the way I want, though I won't get any traffic coming from other sites, only the ones I use to advertise my project. But well, such luxury is for the attention whores. We don't need it.

And as I'll possibly use all classes from my toolkits in my assigments, I can simply develop them for effective use and full documentation (as this is a major criteria to get good marks beside the function and required feature set) along with a specialization of it. A convenient way to a) test what you already designed and b) to create new design basing on a real problem. And -what a coincidence- I already did many, many prototypes and/or partial implementations of ALL the libraries parts I'll before and know what's good to generalize and what not. Simple example is my concept for linked lists - there are so many kinds of lists I used over time, the only really necessary, always occuring structure is the one for a list entry - with next, next/prev or multiple connections doesn't matter. All furter structures like a typical linked list is often so special in requirements that I'd be a shame to use an always-the-same class for it and sacrifice performance and simplicity. I rather prefer to make per-program specilizations and use only the most basic structure (until I find a system in my use of it and a reason to generalize it). So I can extend my base project by project and it get's more useful the more new challenges I tackle.

Great thing, hu? I'm proud of it, it's my baby. Almost my life beside some other hobbies. And it gives a generally better insight I can use to convince others to use my approaches, too.

Crawlin in my skin

So beside this massive amount of reddit links, it's also frightening how many stupid blog crawlers and ad-content searchers are on the web. And well, I don't want to see my blog everywhere on such stupid sites on the web. There are two things I can do about this: a) disable search engines/blogging portals from crawling my blog and b) link your blog on other pages to spread an indirect way to find it. That would require something I can showoff or atleast a group of people interested enough in my ramblings to visit my blog directly or via one of my links. I previously planned to release all my toolkits and sources in one complete open source toolkit package. I think releasing it on a portal like SourceForget or Savannah. I'm a friend of the Free Software licence stuff, but I find it kind of confusing how and why to to a specific portal for it and not just a random one. I want to make a right decision I'm happy with later. Thus, it's necessary to know in what kind of licenses software can be when hosted there and what it offers me as a single developer/what I want to use. Since this is a personal project, it'd be an exception if there are more to actively work on this project with me. However, getting your project free on such a page profits from some benefits, including SVN servers, a wiki and so on. I want to spread my code, usable for everyone who can see it as a a piece of word useful for what one wants to do. Back to the original problem, it would piss me off to force my code into guidelines like when publishing it on Savannah or so. I have my rules, and they have their. Though we both share the horrible habit of writing to much text about our philosophy, ideas and rules, we don't want to changes them for someone else (except if the situations changes and there are improvements everybody profits from). And it's C preferencen doesn't make me happy either (no templates, no classes, just sayin'). So let's take look at all of them. There are many choices.

What the foo

Gaaaahhh, I rediscovered the statistics button at Blogger and it's kinda frightening that I got almost 600 visits on the a single blog post linking to some Lisp sites. Most of them came from reddit (whatever this is) where it (for some reason) got accessible to a bunch of people. Everyday I get views from people linked reddit, or maybe it some other weird crawling service. I don't know. I basically don't care, but it annoys that it's actually a link people seem to click from day to day. Along with a "Wall-of-text'ed." comment at reddit, it seems that I look like a Neaderthal discovering the joys of toilet paper. I mean what's the point of such sites? "Social news network"? WTF? Up and down voting. I don't really care about such sites, but I care about how I can't really identify views not related to it. The tremendous amount of views by reddit user is simply littering my stats. 581 clicks on a Lisp post, next highest is a Mindstorms post 51. I fell in love with the idea that a max of only a handful users do even barely read a post here and there. I mean I almost feel bad for posting it for some reason. It's nicer to see a list site where you actually posted your link, counting every person taking a look at your "text walls" (that's called dedicated style, my dear). I could live with it if there'd be something publicly interesting like an open source library or so. But no, somebody likes to share links to small blogs to feed the insanity of news rating sites. *sigh*, I can't blame anybody for this, it's nothing against anything. But it's annoying me to just see people clicking on dead posts instead of fresh ones. That's simply not going in my head, must be something internet-related.

CLI word translation and micro parsers

There a cool little Linux CLI program, simply caled "translate", which can translate from one language to another. Simply call it, set word and direction, apply a grep command for filterung random occurences in phrases and you got your fine little, browser-less translation tool. It's quicker to find words using an already opened terminal than having to wait on a browser window to upload and load it's content. Simple delicious. Of course, it is rather senseless while browsing (you have this browser, why bother annoying copy/paste via terminal), but great when having your code editor open and terminal aside.

Also, my assignments evolve further and further. I got a little OpenGL animation system concept down for the smaller one and the PGN support begins to become reality. I'm quite happy that I was able to use my own list class efficiently. It's a nice little piece of work and you can say I'm very proud of it. To parse the PGN files with included SAN notation for the game process I designed a syntactically limited but otherwise fully multifunctional, callback-based parser class for easy access of nested pattern sets. I'm also quite proud on the small amount of code lines necessary to implement it. Something I can use for my toolkit later, too. Basically, you can reduce every syntax to sets of patterns which consist of specific words and other patterns. It is possible to nest pattern in themselfs to have a possibly endless recursion of pattern, ony limited to the actual text size you're parsing. A few modification and I'll be able to parse all kinds of syntaxes including self-defined languages and so on. Good stuff! Having a projects you'll from which not only profit ideologically is very healthy for productivity and code size reduction in general. It's good that I already practiced a lot of generalization, otherwise I wouldn't be able to pump up such comfortble and flexible to use classes. And yes, you can call me narcissistic if want - I know what I think is good.

Thinking about the rather low acceptance of a so called "boring" and "useless" programs like a 3D chess game viewer for PGN-encoded chess databases among some of my friends, I'd like to quote one of my own statements here: "In software development, there is no why, but rather a why not.". And that's true. I rather don't ask for the why, but rather the why not. I always get ideas for whynots, but not so often for a why. Asking for a why is like having a need to reducing the amount of work for a project without keeping the need for a specific task in mind. That can be said the other way, too, but it wouldn't sound like you initially planned but dropped it due to limitations.


Calm down, and back to the roots

I don't what to say about it. I take up to three looks at a library/class/program. First look gives the most true and usefull result. Though I can't describe in total, but I intuitively know if it could come in handy or not. Second look is a romantified version where I only see the plus points, blinded by avoiding obvious facts. Third look gives me the complete reality, having the drawbacks and the plus points and the original guess. And it ALWAYS reinforces my orignal guess, making the third and second look only useful if you need to explain it to someone.

The last days I lived the second look, today I got the third look at STL. I made one mistake, I didn't read the article I linked further. Today I did and choked by the fact that I let such a horrible creature into my garden of joy. I simply trusted it and left only hate and despair. Good thing is, I decided to use my own memory management classes instead, which are much more effective and comfortable. Oh I feel so bad for thinking it could be that useful. Walls of text with euphemism about stuff I forgot to read further and I didn't thought about reading the complete specification. But that's the nature of trial and error, only that I also insert pseudo love and initial observation (but not later).

Call me a moron, I hate my life. It's not how bad the STL in fact is (I haven't really programmed in a while, so this maybe the reason for why I forgot to think about it), but how I forgot that. It's often the same scheme: truth, lies, resign. This ever-repeating stereotypical behaviour is driving me nuts. Good thing I have this blog to outsource rant consumption, otherwise nobody would want to listen to my problems. And well, the internet is always listening. Mostly because it's big, cold and simply lunatic. There is no way to defy this.


OpenGl, Matrices and Models

Pew, I can't I actually did good use of matrices today! Two semesters long I didn't understand what's useful about them, but now I did! It always helps to find a good, self-found example of why a specific thing is great or why it works so well. I once mentioned that I learned to understand the usefulness of get and set in OOP very very late in my programming life. But once I found a personal reason to use them, I understood it's usefulness and started to use it. And as I started to develop the easiest assignment I have to do this semester, I realized how the usefulness of inverted matrices. Some stuff comes late, really late. But it's good that it always comes, even if it takes longer time than guessed or expected. A simple animation/object build system brought it to me. I didn't understand their use during the lectures, but after a half semester, I immediately understood how they can work together with animation systems. Overwhelming! 100 Points for Gryffindor!

From Dark Messiah to idialism psychology

Dark Messiah is a game I wanted from the very beginning I saw even one screenshot of it. And it's no coincidence that it is the most inspiring game for what should've been my very own ASCII game. And as I do now have the power to play the game in it's fullest beauty, I start to forget all the trouble I had with it in the past. I still think the game is half a fail, as it only gives you the freedom it appeared to be designed for in a few levels. I think this has to do with the fact that the developers needed the financial support from Ubisoft to make the game become buyable reality. It is easier for a developer to get money for ruther development if they do what a publisher wants - not so healty for the full vision of the game if the the publisher doesn't understand which potential the game has to offer. Or maybe I am wrong and the developers were the bad designers, correct with a little help of the publisher to make the game worthwhile. But I doubt that since they also made Arx Fatalis, a game praised by many people for it's quality. Hey, I should try to get this game somehow... I'd like to see what they did before Dark Messiah. There are some very inspiring videos on Youtube giving me a better intention how to play this game. As with Oblivion, I didn't quite understand how the game is played. Along with Stalker, Psychonauts and Fable, Dark Messiah was one the first games that made me think about think about a hardware upgrade - and that's something only a few games managed to archieve. But as I didn't have to right hardware, it took ages to load and disappointed me because I rather thought newbie-friendly terms than in situational improvisation. Also, nobody told me how useless it is to mix skills. And from the hardcore difficulty playthroughs I already watched, it seems that there is no way you can play this game interestingly without exactly knowing happens in level/scene. I'm an analyst if comes to grasping stuff and systems. So an overview from the distance and stressless testing is required for me to get a better understanding of the game mechanics behind. And as I was playing Dark Messiah for the first time, it didn't quite know that I work this way and did have several problems with effective knowledge aquirement in compley systems like Dark Messiah's interaction system. And what did it offer me? From my current viewpoint, rather something wasn't quite able to understand. So I was playing the game like a fool, simply assuming I could button smash my way through it and freeze an orc once in a while. I was sooo wrong. This isn't a button smasher and hardly a game giving you time to test stuff from a distance, necessary for me to get in close. In the end I died so often cause I was too weak for fighting orcs and too slow in thinking to profit from the spells' unique functionalities. And yes, I simply mixed all skill classes. Bit of a warrior here, a spell there and some sneaking if nothin else works. I mean you can't just hack enemies without any points spent into melee damage. Second, spells drain your non-mage mana too quick and sneaking seems like the only viable method without knowing how the other class trees are used to better effect. And I always fortgot which creatures are vulnerable to which attack. And THAT's the point where Ubisoft's hilarious Might and Magic brand comes in. Orcs resistant to fire? WTF? And well, I guess all these moments of despair made me feel the necessity of taking what Dark Messiah could be within a better game progression style. It almost screams for open worlds, non-linear, manifold quests and a better explanation of what which skills does. I never used the adrenaline bar and finishing moves, though they affect the spells you cast. These possiblities are simply too much for my taste. Why don't just drop the bar? nobody needs it and it confuses me. I always think I'm missing a feature or two. However, I think I still don't get the game at all. Maybe I'm just too Hack'n Slash-oriented, too simple and slow thinking to get fun out of levels you can't repeat. I don't like this style. But it's good to see the game's interaction model having to play it. I did a search on my own blog and found out that the very first descriptions of my ASCII game explained that will play like a lofi version of Dark Messiah. And fuck yes, that's what my game needs to be.

So many ideas crossed my head since development start (and after the freeze, too, of course), I need to limit it to my initial vision. How awesome a more open version of Dark Messiag would be compared to all these silly gun ideas I became later. What I need, is to concentrate on the very idea I had. Then, identify the technology required and implement them step by step. And don't be afraid of using other's code. Use what you learned is useful and concider to ease your work with proven ceoncepts. I was a fool to believe that all I don't understand is not better than the code I create by myself. I didn't knew of any generelization, I didn't benefit from OOP cause I never really used it before. Later, I got into it a bit more, but locked myself in an never-ending feature war with generalization and struggle between "correct" class interface design, ease-of-use and unintuitive design decisions. My problem is that I strife to generalize everything - not only data structures, classes and alghorithms, but also interfaces and naming conventions in general. My own fail was lead by elementary precepts I praised and still praise. I begin to doubt the usefulness of my own toolkit and the way I planned it to work. Of course, some things are great, like the only big set of generalized classes for array operations I will need to use a lot. But it's really the only class so far on which's design I'm proud of, and which's design makes sense. There is no point in making more than one class for multimendional vectors, as long as your language can provide it. But since it's C++ and not a macro language like Lisp, I won't find any better solution. I need to stop that micro-generalization. It's the reason I always loose interest, the reason why everything is so stupid about optimizing generalization without programmable macros. Isn'f the term itself ridiculous? Optimizing generalization. A generalization is more complex than optimization. Optimization is relatively easy, generalization requires analysation, multiple occurrences of systematically similar code and a language allowing your code generic language elements. Fully features generalization implementations allows you to now allow replace types and classes by an alias. n-dimensional points with static size during compiler time is one of the best examples for something you can't simply solve be inserting aliased types. Thus, I need to end generalization for data types or find the best approximation of programmable macros. I don't like to say it so often, but there no way I can generalize as required if I continue in conventional programming languages.

So ok, why do my thinkings about personal video game ideas always end in toolkit programming and need for generalization? It seems like a massive trauma to me - I don't like how it all turns out. And one can't even do anything about except using all freetime work on it. But I'm sick of that. I wan't projects where I'm not forced to in limiting languages. There's so much time required for other projects, where to take it? I'm also no person who work can code all day long and than during freetime, too. My strength is thinking, analysation. I'm a research and development guy, not a code money. I even begin to hate rewriting alghorithm I once implemented. I conside myself beeing someone who doesn't like to code, except when it's something interesting. It's so weird. Once I learn enough about a language to see that I can't get a specific feature, I loose interest and try to get a new one. Argh, I can remember explaining this exact problem. Software development with C++ is so boring. With proper generalization, everything would be so easy compared to typical walls of implementation with just too many things to be written again in later projects. I already begin to hate my lecturer when she talks about reusing core. Oh god, how I hate this stupid bitch. Her way to reuse code is also called copy pasta. I think she didn't even code one line of a template class. And no, no more euphemism about app-specific OOP. There is no reason for that.


Oblivion's music

Everytime I hear Oblivion's music, I feel warm and secure. It's a soundtrack I always listening when I feel lonely and cold, there is no better way to feel wholeheartedly supported. But well, after listening to it two or three times, you begin to seek for other music and stuff to do. And that's really, really good - it brings you back to beeing happy and energized, something that's really important to me when I feel cold and lonely.

It's a great soundtrack, like from all the other Bethesda games I have played so far. You can call me boring to like the shared concepts of Oblivion and Bethesda's Fallout games, but they work pretty well in their basic combination. I didn't like Oblivion as much as Fallout (it didn't have it's stats freedom), but I have my fun with it. It's interesting to see how I quick I decide which features are useful to me and with are not. I think Fallout 3 gave a better understanding of the system they use for their RPGs, so maybe I should simply play Oblivion again. I still haven't solved most main quests and so on. Also, I need a mod to disable the battle music. It's the only annoying soundtrack part. I mean yes, drama drama for epic massacres! Whatever, I rather like playing and fighting with not nervous making music in the background.

Oh, and it seems that I also don't really understand the difficulty system they used. I like if there are two or three set difficulties, but Oblivion makes it rather not a challenge by keeping the actual difficulty floaty and open. I don't this so much, but if it's like that, I shall live with it and get the best out of it. Good thing is, you can simply use whatever character combination comes to your mind and be happy with it. I see, I did NOT understand why Bethesda had chosen such a system. It makes Oblivion less a normal hardcore video game, but more casual than I prefer. Wtf, let's start kicking some zombie buts.


Mint's system synchronization ability is great. During week days I use my laptop and put new stuff and code on it. On weekend I my desktop PC as a primary computing machine and I can simply copy all settings and new files to my backup media. Hey, I can write a little shell script for that. So I can simply execute it from the media I want to copy to and it backups all data. Then I wait for it to be done (which shouldn't take long since it only updates the new/changed files), plug it into my desktop PC and call on single command copying and gnome restart. Yep, this sounds like a nice shell script to write. Time to move on, boy!


I never thought that 3D graphics programming would be so CPU-heavy. I always thought most stuff was done in the GPU, but as I learned today, it isn't like that. Well, that gives me new hope to use what I already learned via my own clipping experiences/experiments. All those methods to clip what's visible seem to have depending degrees of effectivity, so it's time to plan some of my own variants. Yes, maybe I can profit from all this stuff and combine all newly learned things into an own project. Let's see.



I was never able to find a real revolver shotgun on the web, but a post via The Firearm Blog brought me this phenomenal piece of shotgun. It's a massive shotgun plus a revolver design while looking like a hunting rifle but featuring the absolute coolness of a cowboyish sidearm. Simply great, this one gun I'd like to see in a video game. Man, this is so cool. And it even has a swing-out cylinder! Lovely, just lovely.
Do you remember the guy from last post? Well, we discussed it a bit and he fortunately decided to set the interface contracts after the specifications. So I can work on other stuff, too. First I'll code the easiest of all assignments. I have to correct my previous count, there are four assignments of which one is very easy (a three-component rotary roboter arm with light on the first element, colors and a teapot). It's really simple, something you can do between lectures or on a lonely friday evening (like today) while watching your favourite movie oder video game run.

And before we discussed the time problems, I did a bit too much work and forced my self to speed-engineer the basic layout of all classes and structures (there are 6 or 7 in my component). So I'll only need to create two more class dummies and everything will fine and free to code behind. Pew! I rather like a longer period between steps. But now we have a bit more time for planning, so it shouldn't be so stressful anymore. Looking at the work I have to do and what the others complain, I don't see why there is too much work for them. But well - everybody's learning, so the amount of work they have to do is appropriate I think. I already devided other rather large feature list into optional and mandatory features.

I don't know why, but the only things I rant about are communication errors, (from my side) wrong technical decision and philosophy in general. I'm an optimal candidate for techno-political law discussions! No, not really. What stuff comes to my mind... Well, let's end this topic here. I just can't stop posting while I have to endure boring talks from my lecturers...


Holy Fuck

APTonCD is simply awesome. Backup your apps (though some just don't get copied, like httrack or umlet), put it on the destination machine, copy your home folder there, too, and everything is done. Awesome! I can start working right from where I stopped and with exactly the same tools! Man, that's worth it's nuts I say. Excellent shit.

APTonCD and some other stuff

There a seemingly neat tool on Linux Mint called APTonCD, which  detects the packages you've installed using apt which were not part of the standard installation. It seems quite useful since I want to have exactly the same desktop on my gaming PC as I have on my laptop. I hope it works, because I don't have the nerves to reinstall all packages and once in a while, thus waiting for stuff I should have installed before.

It's not a conincidence that I'm kinda stressed. I have 3 assignments to do and 1 talk to prepare. I don't know all requirements for the assignments, but if the project I'm working on with other students is going to be as stressful as our team leader makes me feel, I'll need a fully synchronized desktop absolutely equal on both machines with exactly the same project progress. Problem is that he wants us to define all interfaces AND the specification within a week, which is quite hard since I'll have to create a final structure in the beginning. I don't think that he understood what's the useful point in having a flexible project management system. I mean it would've been much easier to make a single milestone for the interface design right after the specifications. I don't like that he's thinking that it's useful to define all the interface BEFORE you planned the technology you will need to use and how to get the final result etc. Also weird is that he's doing it otherwise in practise. Especially something sensitive like performance-heavy, custom database functions/classes shouldn't be defined before we know how the internals need to work. I can give him a minimal but effective interface with just a few functions. But if he wants now and never-changing, he's definitely wrong. We are no experts, and he isn't, too. And as he's still working on assigment from a previous semester, he should know how many errors are possible and how they can rely on messy interfaces when programmers try to fit their new structure with the old interface. I think it's always better to analyse stuff first, then try initial prototypes or component prototypes to define an overhauled interface later. Problem is that there won't be any prototypes if everybody does have to do other work and equally important projects. *sigh* This isn't going to end I say you. He'll whine about every that isn't final. And how can anything be final in the very beginning of a project with yet to define technology and feature set? I will only give a raw way how the interface will look like. I could make him a dummy class for testing purposes, but he should smart enough to code it without if he knows what actions will be possible.

However, my basic plan is there and everything can be solved later. Christmas will be full of 24h work and component testing. Oh how I love to fit stuff into a stricted structure... Later in my life, I want to be some kind of research and development guy, creating solutions for know problems or new stuff to discover. Unfortunately, I'm sure I won't get any job in this area without doing a lot of normal coding work and such strict limitations...

I could rage ages about it, but as much as I rant, my rage flies by and I cool down later after I listed all the points annoying me too much.


Creativity and programming

Most people just don't believe me if I say programming is a creative work. Even fellow students see programming as a simply logical process without any creative though in it. Interestingly do these students say that they hate to do something creative. They always think making art assets is creative or stuff like that. They can't really see what a creative process is and maybe that's the reason why they just don't want to associate creativity with programming. I haven't yet met any big programmer who believes that programming is no creative task, and I maybe I'll never do. I believe that people denying creativity as an essential part of programming just don't do stuff so well as it is possible. See, good programs and good interfaces do always evolve better with organic development processes, which you'll never get if you design your program as a minimal and always logical task. You won't get any profit from stamping it there and never reworking it cause it worked as logically thought it should work this way. This specific person I'm working with is clearly someone who won't get any real and complex problem down. I'm glad that I'm doing the rather complex database work for massive amounts of PGN-formatted data in this project (and no, it's no shitty SQL fuck). I know we wouldn't even be able to parse it. From the beginning he wanted to do the graphical part in this project, the admittedly easiest one... Well, I also don't think he'll ever program any data-heavy later. I have so much experience with handling realtime access to a shitload of linked and indexed data, I can image a lot of instantly working concepts from begin to end. Don't know what he wants to do later, but I'm it'll be something rather not complicated. Something simply NOT creative. And solving a difficult and overwhelming problem does definitely require technical creativity.


Fallout: New Vega's ending

So I bought it a week ago or so and finished the main quest today. Holy cows, this game is simply great and captivating. I thought Fallout 3 was great, but lousy as a first person shooting game. New Vegas did so many awesome improvements, I wouldn't be able to list them all. I'm just stunned by how good the story is and how you can create a varied mixture like/dislike along all the factions in the game. And I want to play it again, this time with only speech/science/barter/repair and so on. Kinda a pacifist's play without killing any person. I know I can get a great FPS game by simply choosing guns skill only. But that limits me to never all these cool ways to wind up all people and playing them against each other. As in the previous game, I build a character around science, repair, explosives and unarmed combat. But I saw how I wasn't able to play like in the previous game (I always had two followers, so placing mines and lure enemies into them wasn't an option) and started skilling language and lockpicking later. You know, fighting does always become annoying if you can kill everybody mindless without much effort. I needed a challenge, but didn't get anything except more money and too much loot to use without the proper skills. In Fallout 3, I always preferred to kill all the fuckers I didn't like and blew up everything around to service my inner demolition lover. But in New Vegas you can do so many different and equally demolishing things simply without using any weapon. It's great, a well-done game. Before I play it again, I want to explore some more areas. I got level 30 a short time before I entered to final showdown (using Mr. House's way). So I can safely travel around and do some more cool quests. I need to try some different concepts here and there, I'm sure a missed a bazillion of cool quest!


Rants and other stuff

So far, I've a dozen of games to see how far I can get with my new laptop and it's quite amazing how compatible it is with some games. Games like Bioshock and Fallout won't even start, no matter how hard I try. Instead they freeze or simply crash, no idea. On the other hand there Half-Life 2, Bioschock, Borderlands, Psychonauts etc - I'm able to run them, but some features just don't work. And the Source's sound stuttering is kinda extreme this time. Torchlight ran awesome, as well as HL2: Lost Coast (compared to the original game... probably limited enough to work fine). Maybe it has just something to do with specific graphics features and how they really on this and that. I'm sure shadows kill my card instantly. I wasn't yet able to get a good overview about it's OpenGL performance under Linux. Yes, I can download and start for example Sauerbraten, but it freezes after some seconds of execution with no way to get back to your desktop or another terminal. So it seems like a real incompatibility or so, I don't know.

Also, I met a rather dump Linux user yesterday. Man, how can anybody be so unhumorous and uncreative. Talking stuff like Gnome sucks cause GTK didn't worked with his program (which also didn't work with QT and so on...). Gosh, how can anybody in the world think this kind of denouncing thinking is interesting to anybody. Sometimes I'd like to simple punch people in the face for their stupid and persistant attitude towards interlinked software structures. Whatever.


Mint 2

Again, Mint proves to be an extremely friendly system to use for me. I tested the LiveCD on my desktop PC and got my system on full resolution with no loss. It informed me that I can also install the proprietary drivers and during installation it asked me if I want to export settings from which the Windows installation (even with user selection!). Good stuff I say. Simply copy your settings from laptop, install some additional software and there we go again. Also, I'm surprised to see my laptop actually running Borderlands on more than low-end settings. We have a massive fiber optics network where I study and I was able to download it'S 8,5 GB within a few hours. That's seriously impressive to see, downloading a game with up 2 Mbit per second. I won't play it on this machine (Borderlands only works with highly detailed graphics due to it's pretty flat gameplay), but some other games work, too. Most notably Torchlight, which is just great for playing during pauses. And it looks just fabulous with a widescreen. Simply awesome, I begin to like any kind of widescreen screen.



There are games I learn to know much later after they were released. One of these games is Bully, or Canis Canem Edit, as is was named in some countries. I initially thought why the fuck would anybody be so stupid to put GTA in a school format and simply ignored, but with some kind of fascination. I didn't why, but nobody I knew was really talking about it, so I wasn't sure if my deny was correct. Later, (let's say some days ago) I saw a partial and unfinished speedrun of it and was amazed by how well this game seems. Damn fine music, good graphics and a great level design, completely without any things I heard/knew about GTA, so I started to found it interesting what I saw. I haven't yet played the game, but I want. There are numerous factors and terms I like to explore, you're even able to start relationships toward boys! Isn't it awesome to see game developers looking out of the usual hetero box? If that's enough for a good game. Some research in who did this game, did surpringly result in a studio which was never involved in any GTA project. So I completely linked the name of the mother studio Rockstar with GTA, independent what kind of game is in the package. However, I'd like to play this game, whatever it is and however it is debatable. And again, good music and different freedoms form a game I'm interested in. I see where this is going.

Check out the soundtrack as soon as you can, it's simply the best funky music I ever heard in a video game.