Thursday, January 7, 2010

Paper Zeppelin

I've been making some really excellent process on the finer points of C# and Object Oriented Programming in general. My previous work in Blitz Basic, while admittedly different is very similar on a basic level. Game Loops work the same, code logic works the same and input has almost the same code but with brackets. So the Trial by Combat that the development of The Thief's Tale was has left me in a position where I am way ahead of the game from a large scale structure standpoint. Oh, and basic AI is just that after making little dudes that can duel.
What I have needed, especially for C# to make a whole lot of sense, is a couple of paradigm shifts. The first of which is the idea that I can tell the code to make me something, but I don't have to give it an explicit name. It's part of that sweet "instancing" that I referred to in a previous post, but whereas before it was all theory, now it's been applied on a code level. So I can say, "make me a bullet and put it here, going in this direction," and the computer just will.
But that's not the thing that has me excited. The really exciting thing, are Lists. Re-reading that last sentence it makes exactly no sense. Basically, a List is a kind of Structure. I'll back up further. A Structure is almost like a kind of advanced variable. Instead of keeping a single value (like we learned in school : x = 1) a Structure can hold any number of things.
The Vector2 command is a Structure, it holds the values for 2 different Vectors, an X and a Y. The Vector3 command is also a Structure that holds X, Y and Z for some 3D gaming goodness.
So a List is another kind, but it holds data about instances. So when I make a new object, it goes like this, more or less:


Update Goodie.List ( add new Thingy(with these delicious values);


This would, if the code worked, go to the Goodie List and add a new Thingy to it. That Thingy would then have the values that I tell it that it should have, probably position and speed and things like that, but really anything can be dumped in there in a non-gaming situation.

The reason that this kept me up all night with sleepless, almost pre-Xmas Joy was that it also allows me to keep track of what I want. Previously, I was thinking that I could sort the objects that I've made. Resigning myself to not having explicit names to call instances I made, I thought that I could add code to each kind of object so that it would sort itself. So see where on the screen it was, and what it was doing. Basically, it would add a Standard Metric Shitload (which is different than an Imperial Shitload - which is used in the UK) of code and logic to everything. Everything.
However, with a List, I can do all the logic for all the instances that I want to via Loop. I can say, "Hey you, with the List. Find the first thing on it and run the Update Function/Method it has. When you're done, do all the rest of them too. Then draw stuff."

With this, it's the last piece of the Object Oriented Puzzle that I was missing. This basic thing, this simple thing has crystallized everything about the language for me and has shown me what I can do with it. More specifically, it's shown me how I can make pretty much everything on the EP in what should border on a recklessly short time. Now my armies can be Legion and march to the far flung ends of the screen, and I don't even have to know their names.


Which brings me to the title. With The Thief's Tale I started by making it as a way to learn and it grew. I started out as a way to apply newly gained knowledge, which explains the crazy feature creep. But, it started off with no real direction or purpose, it grew organically from the humblest of beginnings to what it is now - a way to showcase the raw talent of the people involved so they can all get paying jobs in the future.
The next thing, as per my last post, is going to be different. It's designed from the get go to be on XBLI, and be able to buy me Hot Pockets and contribute to rent. Further, it's going to be something where I will be responsible for everything. I don't want payments and monies involved in my little endeavor at this point, too fragile is the thing. Yet, I still need a testbed for the application of new stuff. So I need a staggeringly limited scope that's fun on a basic level. So nothing on the EP can be on the docket, since all of them utilize some kind of Time Manipulation for gameplay. Instead, I needs a heavily instanced thing. So a platformer is right out. I can't do that sheer amount of art myself. Shooter is the way to go. It'll also allow me to build Classes that I should be able to re-use later with minimal effort. A Bullet AI is pretty much the same everywhere. Oh, and I wants multiplayer. Probably just 2 player though, since the addition of more adds exponentially to the complexity of AI routines.

A basic(ish) design then. I was doing some reading and I'm currently enamoured with Blimps and Zeppelins, mostly because they are awesome. Also, I had a dream. It was one of those odd dreams where you're half remembering something. In it, I was playing a game from my time in Japan when I was 8 or 9 or so. In it, you flew a Bi-Plane and avoided enemies, picked up a bomb and dropped it on an enemy base for points. I remember the most basic of elements and how it looked. Which is pretty much what I started Thief with, the basic idea of The Prince of Persia. Of course now, it's nothing like it. But it's a good place to start.
So I need to build classes for player Zeppelins and controls, bullets, enemy planes, enemy turrets, enemy cannons, enemy shells, enemy bases and the bombs themselves. Comparatively, the Big List for this game is downright tiny sitting next to the one for TTT. Also, more importantly, extremely do-able. Hopefully fast too.

Speaking of fast, the "Paper" part. I'm finding myself being a big, huge whore for new visually exciting things. TTT is inside a bloody book with turning pages for example. Yet, I also need to create visual assets without the aid of a dedicated artist (see the the tenth paragraph). My other projects are going to use ASCII, minimalist crystal look and Vector art (the tentative art styles of EP tracks 1,2 and 3) all of which are either code based or PhotoShop doable. For this, I want something different to the point of being almost silly. So, I'm going to use photographs and paper cutouts. Give the whole thing a mixed media look, like a diorama. Construction paper enemies, cotton ball smoke, drawn with markers details. All things that I can do since, as a shooter, Paper Zeppelin will have about zero traditionally animated things in it. Further, I can photograph and PhotoShop all of those elements together to create my assets.
Of course, I may change my mind between now, and the end of this sentence.

No comments: