Tuesday, April 28, 2009

Moving Along

I'm doing AI code, and now the animations almost work. Instead of just running at The Thief they now use one of the preselected animations. Further, I got the system to recognize the different states, so I can more easily see what's going on. Like the Doc says -> after an attack the default it to go back to En Guarde. Turns out it already does that, so it saves me some time.

I think I need a way for the player to attack if I'm going to build the rest of the defense, otherwise I won't be able to test it.

...and done. It turns out this created some serious issues made more irritating by my lack of comments in the code here. The animation line up function no longer works. I'll get the animator to make a longer attack sequence for The Thief to make up for it and help with combat timing. I had forgotten the joy of just rushing in and beating the enemies like invalids. Of course, moving on they will only get smarter and more capable of defending themselves, which is also good in a way. Mostly, I press Attack and attacks happen. It feels smoother already.

Fixed an odd bug. The back up rectangle function failed on the right side for some reason. It's better now. The issue seems to be that the middle of 150 isn't 75. If I make a, lets say for the sake of example, a collision rectangle, and place it 75 pixels off of the enemy's upper left corner, the opposite corner should not be 150 pixels away. You would get a rotten bug like the one described above if you did something silly like that. If you did that, you'd be forgetting the fact that the enemy has something described in some circles as an X dimension. So, 75 on a side plus 60 pixels across for the enemy's girthiness, gives you a needed space of 195, which is what it is now.

Ah, now they don't back into wall anymore. That's a bonus.

So Defensive

Yesterday I finally got the backing up thing to work right. Peviously they would just stop for no reason and, gods help me, it looked and worked like ass. Now it's better. I gave the enemies a distance (a modifiable one at that) to back up and a period of time. So, they will back up until they get to a certain distance outside of a range established by the player's location, or for a certain time, whatever comes first.
I also got cute with the Ledge Finding Function and spliced it into the Backing Up code, so the enemies will not fall off of ledges when they back up. I added that because they would back up off of stuff and hillarity would ensue. So that works now. Of note, the Ledge Finding Function works best as a part of a different function, like the walking around or backing up functions. I can skip it for things where I want stuff to fall off. When enemies are hurt for example, they should fall off of stuff, possibly to experience pain/suffering and the unique sensation of falling from a great height.
Moving forward, most of the rest of the AI functions are State Based, and do not have specific actions associated with them. They don't back up, move around or be difficult, they just are. Blocking is just that, Parrying is a stance and so on. The rest should be easy in part.

They are tricky in whole though, which brings me to an idea.

I'm going to have to write down the system so I can build from it. Everything else I've been able to test and tweak until it feels right, but the AI Action Chains are too complicated for that to work. So, I need to write it down.
To that end, I'm going to write that part of what is considered the Design Document (such that it is) and keep it updated as I go. For the sake of you, dear reader(s), I'm going to make the whole process public. So now, in some small way, you can see what actually happens to one of those things through the process of making it work. Generally speaking, the Design Document is the thing for game design and game development. It's like the CIA NOC list, sharing Top Secret clearance with the Source. It's made more important because of all the things in it that don't make it into the game, the secrets that may someday be in other games or projects. Consequently, you never see the Design Doc for a game in development and you rarely see them even after the game is all done.

So, I'm going against the grain here and doing something bordering on stupid. I'll get that up as soon as I write it, probably over there -->

...and there we go. For those of you that have never seen one of those before, you'll notice a few things. There are no pictures. There can be, and often are, but in a part like this, describing some underlying system in detail, pictures are useless. Also, there are no numbers. I use one once as an example to illustrate the concept, but no numbers, no stats. I describe how it should behave, not explicitly how it does it. Programmers (like me) work that out at a code level, Designers (also like me) then go in an tweak the numbers and make modifications to get it to work right and Balance it. Numbers will probably appear later, but at this stage, they are meaningless.
Finally, the language is straight forward and descriptive. You will never see, "And it's the bestest thing in the Universe! Then you press some buttons and you have an orgasm in your brain!" unless of total scrub "rote" it. Simple language carries the day. Use as many words as necessary to convey the idea as cleanly as possible, but try not be verbose. There is a real trick to writing a Design Document and making it so that anybody else on the damn planet can understand what you mean.

You'll also note that there is a Glossary. This is not common for Design Docs, but I like them. I keep it updated with the rest of the paper. Especially if I use specific language in the doc, or frequently reference a common concept. Usually, the Glossary would be larger, but this is a small piece of one. I would also pepper the thing with quick links and so on if it was bigger, to make it easy to get around it and find useful stuff. That's the programmer side of the brain wanting to make stuff work better.

So, that's what it looks like now. I'm a little staggered the piece is so damn long. I wonder how long the TTT document would be if I wrote it out first. When I update it I'll use a different color or something. This also provides me the context to rant about these things. Something new to spew vitriol at is always welcome. This may be interesting.

Friday, April 24, 2009

Quoted

E-gads, rockstar moment.

I was quoted. As in, something that I wrote was used as a reference to prove a point. On Gamasutra. Holy crap.

http://www.gamasutra.com/php-bin/news_index.php?story=22569

Then the comments talk about it.

I wonder/doubt if this will drive traffic here.

Thursday, April 23, 2009

Moonwalker

The system works now, still without animations, but working nonetheless. I can see the numbers clicking along, and since I know what they mean, I can visualize what they are doing and what they will be doing soon. I'm happy with that.
Since I need animations to build the combat collision code I worked on one of the enemies behaviours, and it turned out to be a giant pain in the ass. All I wanted was for the enemy, if it was close, to back up. That doesn't seem too terribly hard, but in the context of a system that was designed for chains of attacks, it devolved quickly. Basically, since the "animation" had no presence in the "Attack Animation" table, it was assumed that the "animation" is always finished. That meant that I got 1 game frame of having the enemy back up before it got tired of that. I bashed on it for 30 minutes before finally breaking the Enemy Combat AI into two pieces - Attacking and Everything The Hell Else. Of course the real trick is figuring out what constitutes an Attack and what should be in the ETHE column.
So it works now, I just need to tweak it to allow greater backing up distances. Right now it leaves the "Up Close" zone and stops backing up. I would like it to get further into the "Further Away" combat zone before it wants to do something else, but the Moving Back action is considered a Close behaviour. I think I'll have the backing up happen no matter what, but only have a trigger for it when Up Close. I think that will work.
Oh, the title, New Move = No Animation yet, so the walking forward animation plays when the walking backwards is happening. If you were around in/remember/heard of the 80's, you'll know exactly what I'm talking about.

I'm finding that AI is damned hard. Rather, Dynamic AI with Dynamic Input is hard. For example, the Pathfinding Algorithms are Dynamic in that they considered and take action based on external factors. These factors however (the level geometry) are static. They do not change, so I can build a system that can easily take every possibility into account and deal with them consistently. Then, like a good little automoton, they just go.
Static AI with Dynamic Input is more of less easy too. The Character collision is an example. The Input can change a lot, but the outcomes are all known in advance. There are lots of ways to do something, but they fall into a variety of groups that can be categorized and dealt with. Again, consistent, observable and repeatable results are what you get.
What I'm into now, especially with having enemies have ways to be defensive, is needing them to respond in a dynamic way that is also natural looking. So I can't give straight up, "if this, do this, every time," instructions, since that is unnatural. The stuff needs to be contextual.
Take the new Moonwalking function as an example. Enemies "decide" to back up and move away, then "decide" since they are far away, to move back up again. If left to its own devices, it can do this lots of times, which is crap. Yet if I tell it, "if you back up, always lunge back in" it's unnatural. The option to act stupid should be allowed from time to time, if only to provide variety.
I'm thinking that judicious use of random number generation and statistical tweaking will get me okay results, but I fear that in the end, the AI will just be lots and lots of specific circumstances. A giant list of exceptions. That's a terrible way to design a system, any system really. Yet the more I dig into it, the more likely I'm finding that it's possibly the only way to do it.

Wednesday, April 22, 2009

It's Alive (sort of)

The AI code works. The tables all dance correctly and It even tells me what is each cell. It's good. I'm happy with it. It doesn't work all the way correctly, because I haven't put the new animations in yet. It doesn't know when to update the attack strings, so it does it in a constant stream. But it does find the strings and seems like it should work, in that the pieces that are there do exactly what they are supposed to do. I should be able to get the enemies attacking again tonight.

In different news, I'm slowly getting over boss fights, mostly the ones that require completely different skills than the regular game requires. It drives me crazy. I'll use an example with a game I'm playing now. In Ninja Gaiden II they felt you should have to fight a few giant boss type enemies. You can't combo them easily, you can't throw them and blocks well, let's hope you weren't planning to block, ever. The pain in the ass is that those are all skills you need for the rest of the game, and have at that point, become good at.
To wit, I fought a big assed ogre thing, and it killed me, lets say, a dozen times before I killed it because none of the tactics and concepts that I had mastered up to that point would work. I finally got through it using a blend of cheap tactics and intestinal fortitude. By "fortitude" I of course mean "loss" since my ninja guts were left splattered all over the map afterwards.
To contrast that, in the same level I fought a roughly human shaped and sized boss, who I could ply my craft against. My ninjitsu, it seems, is strong. I ripped through him like a chainsaw rips through Tony Montana's friends. I do not understand it. Is the point to change it up? If so, I dislike it. A boss enemy should be a test of the skills you have learned in the game up to that point. Zelda games are great at this, the Boomerang will be used to solve the puzzles and beat the boss.
Yet, I'm finding the most difficult parts of Ninja Gaiden II to be my favourite - the challenges. Scattered about the levels are places for you to fight Giant (with a Big G) groups of enemies. So there were 100 ninjas, and then 100 demon thingies and now 50 or so werewolf looking jobbers with 50 or so mini-dragon punks. These fights take everything you have and are the biggest test of your ability to play the game that you will encounter. Some guides (hey these groups are hard. I read up to see if I'm on the right track, not for solutions) tell you to skip these fights since they will probably take your lunch money. Further they advise you to come back with your fully upgraded New Game+ ninja. Screw that. If they weren't to be beaten at that point in the game then they wouldn't be at that point in the game. So what, I killed a Demon Boss. Before hand I was responsible for The Ninja Massacre of 2009, now they tell their ninja children scary stories about me. That's what I look for in a boss fight.

Tuesday, April 21, 2009

Working Two Jobs

I'm getting that trapped feeling again due to things I don't want to get into here. Not that it isn't the forum, but specific rants about specific things may directly affect opportunities currently floating. In any event these things depressed me. After going through the "Feeling Rotten" stage and the following "Screw It Despondency" I emerged into the happy Senatorial "You're good enough, smart enough and gosh darnit, people like you," at the end, but armed with new insights from the process. Basically, if Thief is really going to succeed, I need to focus.
During the Despondency Phase I thought that I was wasting my time and my professional life stuck in limbo. "What," I reasoned, "could I have accomplished if I worked 40 hours a week instead of just a handful?" Quite a lot I believe. I've been approaching this project the wrong way for too long because it worked. Treating the project as more of a hobby, a passing interest and less like the real life thing that it has become. I need to treat it as a second job.
So, starting yesterday, I worked for 2 hours when I got home. At 8:30, I stopped. I'm going to continue with this, and I think I'll see faster, and more consistent progress. Fewer fits and starts. More specific deadlines for little things. The discipline will keep me in line and really bring this about. We'll see how it goes.

For the AI, it's broken and I don't know why. The enemies close the distance in combat (although it does look a little artificial - maybe we can correct that in animation) and then the Action Timer acts more like it's archnemesis - the InAction Timer. It stops. No reason for it to stop really. Actually, it counts up. It may be getting confused somewhere along the line and getting constantly reset, but the why of it eludes me at the present. I'll kick it until it submits later today.
It's a little more irritating because the rest of the AI is installed and I can't test it yet because the trigger refuses to, um, trigger. So it may be working. Maybe. Hopefully I'll find out that it is working better than I hoped. The code somehow direct from the muses onto the screen. Or it'll crash. I wrote it, so that's always a very real possibility.

Finally, I did a quick check of the little advert in the lower right corner. Go ahead and find it. Click it a dozen times and come back, I'll wait...

Thanks. When I checked the information on it, it turns out that I'm up $1.19 because of that thing. It's been up for a year and a half and I'm up $1.19. I'm loathe to think of the per word cost. Either way, that's free production money and I'll take it. Well, metaphorically speaking, since I need at least $10.00 to get a check sent to me. But you know, I'm not waiting. The current budget is $133.81.

Monday, April 20, 2009

Tables and Chairs

I got the new AI tables all installed over the weekend. Now that it's actually there it's a lot smaller than I thought it would be. The system isn't done yet, but at least the referential nonsense is good to go. I also pestered my animator to give me some test animations, and I have those now and can get to building the rest.

I still need to build:

The Loading Functions that load the tables with data and images. I'm considering building another database. Basically a file tree for the pictures with the top file called "EnemyX" where "X" is the enemy type. In that file, more files that are numbered, but these numbers will correspond to the row in the Animation Table that they go to and then the images themselves numbered as the order in which they are played. Since I'd be dealing with all numbers, I can populate the table using loops, which is faster and less likely to totally suck.

The Display Functions that draw the pictures, but I kind of already have this but commented out. It looks like :

Draw EnemyX,EnemyY,AnimationTable(EnemyAttack, CurrentAttack)

Like I said previously, this bit is a little confusing do to with the naming conventions of the variables. In the Knight engine the same thing will happen, but on a loop for all the different enemies.

The Combat Functions. This is the biggest part, but I should be able to use some of my old combat code. Assuming the rest of the parts are working correctly then this should be pretty easy to implement. I'm not creating data, I'm just using what is already there. If everything goes okay in testing, this part should be good too. I'm trying really hard to avoid adding too many parts all at once. I find that doing so makes it practically impossible to test anything and isolate problems. So I'll get the first 2 things going and let the enemies beat The Thief like, well, a thief, you know, for science.

The rest of the AI routines. Once the combat part is all done, the hardest part of the AI is finished. It just needs the rest, like falling, getting hurt and so on. I have a commented list with the AI code. The rest of them don't interact so much, so I should be able to build them piecemeal without it being a big deal. So I want them to Fall off of things when.

After that's done I can get started on the next parts of the puzzle, mostly the new Thief moves, the Step Up, the Blue Dodge implementation and the Charge Attack. It seems that between now and the end, I'm going to be doing mostly programming work. Well, I'm the only one that can.

Friday, April 17, 2009

Vocabulary

Right now I've got my AI all set up in commented pseudo-code, and I ran head first into a confusion issue. The problem was trying to get the new code to work with the old code, I didn't see a place to install, a place to even start.
The problem is in my variables. Previously, enemies only had 1 action, to attack. That' all they did, so I called my variable "Attack" and gave it a number to note what kind of attack it is. Now, that doesn't work so well, since not everything is an attack. They can also block, move and generally be difficult. Again, not a huge issue since the system could handle it. The "Attack" variable can have lots of different values. But therein lay the problem, since there could be lots and lots of related attacks and there would be using the new attack string system. So having a single variable that would control the new system just fell down. There are too many different enemies with too many different kinds of attacks and too many differences in the numbers of attacks. I thought I needed something different, or I needed to re-code the whole other system to get it to work. Now I don't think so, and it's a problem with the words I'm using.
Instead of "Attack" what I really mean is "Behaviour." So I don't need a single variable to call every kind of attack in the game, I just need the engine to know that Close Range Combat is going on and the enemies are involved. Then I can run the AI functions and do all of the cross table references that I need to happen. After that, I need to reference the table with all of the animations in the DrawEnemies() function and keep a variable called Current Action or Current Attack to keep track of what attack or attack string the enemy is currently doing.
I'll work on this later tonight. The quicker I get this going the quicker I can test different attack configurations and allow The Animator to get going on them.

-In job news I'm once again doing something that I probably shouldn't be. I recently applied for a job that a previous professor of mine works for now. I think he mentioned to the class at one point to, "Not ask him for a job," yet he's my only contact there. Since I've not heard back I'm going to go ahead and contact him, maybe phrase the question along, "Who do I talk to? How can I prep? How do I set up an interview?" Wanting, and hinting, yet trying not to be a pain in the ass. We'll see how that goes.

-In a subtle irony, I found out that The Animator, The Artist and myself have all applied to the same studio for different positions. You learn interesting things at meetings sometimes.

- Speaking of meetings I have to add $35.00 to the production costs of Thief. After going to the meeting I had a parking ticket. Trying as I might, I could not argue my way out of it. I hate draconians serving the letter of the law instead of the spirit. Since I got the ticket as part of a project based activity I'm adding it to production costs. So now the total costs are $135.00.

-Finally, I've added the Blogs of some of the Team members to the information list at the right. Visit them, give them hits and send them love. Art stuff included. I'll add more if other members of the crew decide to write them.

;Def Commented Pseudo-Code - noun
;1) Code that won't work on a computer since it cannot be compiled.
;2) Code that looks almost like english sometimes
;3) In Blitz Basic is marked by ; at the front

Tuesday, April 14, 2009

Ninja Ninja

Still ankle deep in AI code, and I'm procrastinating a little bit. Once again I'm finding that once I have the solution, solved the puzzle, that I find myself dragging to implement sometimes. The AI code is no exception. It's also tinged by the fact that it is going to be big. I mean, it'll have 2 different tables that it references, dozens and dozens of assets, several (more) functions and a new image loading algorithm. So, I feel a little overwhelmed by it in some way. "Yep, got that bridge designed and we're ready to start work. Only 5 miles of bridge to go..."
So, in an effort to get over it and start getting to it, today I'm just going to set up the Attack Table without animations. I'll just have the system display what the numbers are and then we can work from there. The other thing is that the Lazarus Saga set me back at a month. I started the AI system in early March and now it's April. The whole system, while designed in my head, is a little more vague than it once was. I'll get back into my notes and look for clues that will get me back to where I am supposed to be.

In totally non-Thief news I'm finding that the next game I'm wanting to do will be Knight, the oft mentioned next project. The engine is taking shape in my brain and I'm getting very excited by the concepts coming forth, mostly because it's so unlike Thief. In TTT the platforming is the focus, with occasional combat. In Knight the combat is the focus and the platforming a way to break that up. So, different joy. Instead of solving a platforming puzzle and feeling smart, you're going to rip through 2 dozen enemies both large and small and feel like a badass.
Once again, when given a puzzle (in this case the new engine) I find myself doing it. So the next engine will feature scrolling, multiple (scores? legions?) enemies (using the Thief AI algorithms - on steroids) and now, destructible environments.
Where Thief is about making a platforming game in the style of a mid-90's game, Knight is going to be very modern in it's concepts while being quite retro in it's presentation. I'm wanting to create a term to describe it and its ridiculous combat and number of onscreen enemies (I'm shooting for 20+) and I'm thinking "Brawler Bullet Hell." Something far less cerebral and a lot more visceral. Ninja Gaiden II is influencing my design on that one. I'm okay with it since none of the Knight design is anything like it. The way it plays though, slick, brutal, reflexive, where everything you do just looks cool. Give the player the tools and enough things to use them on and they can make (or un-make in this case) great things and feel awesome doing it.
Oh, and hard. Make it wicked, wicked hard.

Monday, April 13, 2009

Unsteady Ground

So I got to talking with the new Level Designer about The Cliffs. So far the best idea to come floating from the collaboration is the idea that the cliffs are unstable. Still don't have a solution to the level though, but this would enhance it a little I think. Basically, I can add scripted events that change the layout of individual screens, usually to the detriment/ challenge of the player. I'm also thinking of adding breakable floors and scripted handholds and walls that can break (but not to make the level unpassable - that would be bad). In effect, add more to the concept that the level is trying to kill you.

- Speaking on nepotism, I worry that the rest of the team may get a little, um, peeved that I've brought another "designer" type member onto the team, considering the way I defended my positions during the previous coup. A feeling of having ones opinion not heard may come across. This of course, isn't the point. The point of the project is to do what you want to do for a living, be it art, programming or design. So, adding somebody that would like to build levels on route to design (a job that I find myself with less time to do that it really needs) is an asset. In the end though, it is important for everybody on the team to communicate ideas, whether they are used or not. Sometimes unused ideas bloom into fantastic ones.

- Finally for today, CID now comes up first in the world of Google for "Indie Confessions." Clearly my confessions and/or indie-ness are more confessional and/or indie than everybody else's "Indie Confessions." So, to wit, that's two things I own in Google Land - "Star Frog" and "Indie Confessions." The next target for acquisition: "CID." Of course, nobody cares but me.

Friday, April 10, 2009

Zombie

Hmm, corruption is everywhere. It's like I let loose Ahriman into my lands. The code has sections missing, other parts filled with random junk, very little of it compiles. I've finally gotten my engine to load again, but I don't know if the Object Code is still functioning, since it isn't working in ThiefEd.
Evoking the Dark Arts seems to have given me what I wanted, but at a price. At least my Engine is working, but now I have to get the rest to jive, and maybe, dance again.

-Got it. It was crashing because I am stupid. Yes, the code is as it was (more or less) but the assets aren't where they are supposed to be. So yeah, duh. Thankfully I managed to rescue the assets from the Lazarus Drive, so they are in place and now they work again. Sort of. Now when I place an object, Zombie Engine gets a little confused and thinks I just put down a portal rectangle. That of course, is wrong.

-Odd, it works now.

-Hmm, enemies are gone. Their little boxes appear for the AI system and then, nothing. The problem seems to be that it thinks my variables EnemyFace - which controls which way an enemy is looking and eState - the one that controls what they are doing, are duplicates. This, of course, is bullshit. When I remove them it enemies don't work and when I leave them in, no compiling cookie for me. I'll look anyway.

-Dammit, more Zombie meat. There was some random crap that just happened to say "EnemyFace = eState, but without any kind of modifier or anything like that, it was just there, which meant the system thought it was a declaration of a variable. It's fixed now, which means the engine is finally back to being in its unfinished state. So, yeah, that's good news I guess. Now time for the cleanup.

-The new way to select the level is all done. It's ugly, but it'll make it possible to build levels without getting elbow deep into the Source, so I'm happy with that. I even added a function to it so you can place the Thief Character anywhere you would like the level. It did seem to have a bug since it never had a CheckPoint Set. So if you died, it would crash, but that seems to be better now.

- Wee, ThiefEd has the correct icons now for enemy placement. So Zero and Akuma are gone and now The Thief and a Knight are there instead. Odd to see them go. I'd gotten so used to them over time. Ah, at least Zero lives on in the code, in a function called "DrawZero."

- Hmm, I haven't had a post like this is a while. A literal minute to minute update of my coding progress. I shall endeavour to do more of this.

Thursday, April 9, 2009

Necromancer

Well I'm out $69.95. That sucks, but I should have my stuff soon. The computer is doing another seance. It seems this one is just Mostly Dead which means that it's still Slightly Alive. Although were I to push after blowing air into it, I'm pretty sure it wouldn't say anything, let alone, "True Love." Although at this point ,"To Blave" would be something. More news of Sorcelation incoming.

- Ha, it's only $69.00, I've saved myself $0.95. In your face capitalism. Ah, wait, I'm still out $69.00, for my own data. Wow, my joy is suddenly less.
Right, then, the software is crunching along, finding new stuff as it goes. It doesn't seem to want to find specific files though, just large, root based ones. So I can't tell it to find just my Thief Source file, but I can tell it to find the Desktop files. The problem being right now that my file is among hundreds of other files. Not to mention the giant Level Data, which I already have a new copy of. Getting all of those files will take hours, lots and lots of hours. 900 minutes appeared when it did it the first time, before I aborted. Then it crashed, now it's scanning again.
It has managed to find my Documents file, which is nice. So I still have the script and all of my other writing stuff now. This lets me know that it is working, which is incredibly encouraging.

- Necromancer indeed. I've gotten it. The ends of my files have lots of random, corrupted stuff in them, but that's the ends. The data, the sweet code, nectar of the digital gods is still good. I have failed to raise the dead, yet they speak. In times of sadness or anger I usually find myself with the words to express the feeling. Now, it's just joy and I find that four letter words don't quite have the correct effect. (rhyme!) Also, since you probably didn't see the Happy Dance I did when it worked, I feel a digital expression of emotion, an emoticon, is in order.

=D

Now with my stuff back, I need to do a bit of housekeeping. Mostly for the Level Editor, such that it is. You see, the best way to work with ThiefEd is to have the Engine running concurrently with it. I then go in and tweak the code to do what I want while building, mostly so I can pinpoint specific places where to start. I mean, as much fun as the first level is, there is really no need for me to run the entire level to test a new puzzle at the end. So I would usually go into the code and make a change to the starting level.
Since I'd rather not have people poking around my Source without knowing what stuff does, I'd rather not have my Level Designer doing that. So I need to build a quicky function that allows you to select a level when you start the game. I'm thinking doing something with the mouse and co-opting the ThiefEd Map code with some modifications. Click once to select a level, load it, click again to select the start location. It shouldn't take long. Hopefully.
I also need to tweak TheifEd to add an Artist Friendly No GUI mode so that they can see how the level will look in game with the cute animated bits.
So I have my day planned.

Monday, April 6, 2009

PAX Pass

I received word back about PAX. It is expensive. There is no indie area. I'll pester the dudes that run the place at Comic-Con. They seem approachable in a way. So, with no indie area, I'd need a booth like a real grown-up, and those run me $2100 a pop. It'd be 10 X 20, and $2100. To put that in perspective, the total budget for the entire game has been about $40.00. Add to that the cost of software to get my data back and we're looking at just over $100.00 ($109.95 to be exact). So to show at PAX, it's 21 times the cost of development.
So, I'm thinking of ways to try and fix that. The thought I'm having is splitting it with other devs. You get 5 Exhibitor passes with the booth, so if I could get 4 other indie devs then we get in on a time share-esque sharing program. How that would work, I have no idea though. I'll look around and see what I can see.

In other news, Yahoo has finally found this site. We actually come up higher than we do in Google, 2nd for "Indie Confessions." Yet, Yahoo is still dead to me.

Sent another resume. We'll see how that goes. I'm hopeful since the company has a record of doing platform games and I have a record of doing platform games. Hmm, hopeful.

-Yes, $109.95. Take that Braid and your $180,000.

Thursday, April 2, 2009

The Showcase Showdown

Data's still out, but I can get it back, so I'm not as stressed as I was previously. The bit of info I don't have is how much it will cost. Either Free (I like free) or $69.95 worth of over a barrel unpleasantries. In any event, it is there, so I can continue with project stuff. I'll have more as it develops.

Right then, the real news. I've taken the first, tentative steps into getting a booth at PAX in that emails were sent and hopes fostered. Having seen the site I'm seeing a whole lot of giant booths. I can't afford a giant booth. Hell, I get nervous at spending $69.95 to retrieve my own work. Don't believe what people say, there is no money in Video Games. Billion dollar industry? Nonsense.
Either way, I'm hoping that they have some kind of Indie Showcase option available. Comic-Con ( a place I go every year, which shouldn't surprise you given the plethora of nerd-a-riffic references peppered everywhere) has a whole section devoted to Indie Comics. Generally small affairs with a single table and a back drop with some merch spread around and a big sign trying desperately to catch your eye long enough to strike up a conversation. That's really what I want, something modest to get people to see us and maybe remember The Thief's Tale when they see it on XBLCG and maybe Impulse. Recognition, somebody told me once, is half of sales. Besides, as per the point of the project, then we can tell people that we showed at PAX, which is, of course, freakin' sweet.

What? XBLCG? Weren't we over that? Yes, and no. I said that there was no money in XBLCG, so finding somebody to fund our little venture is a bit of a fool's errand. However, the magical "point" I keep talking about, is to show people that we can do it. Even the demos of XBLC Games that people didn't buy were downloaded 7,000+ times. That's quite a thing isn't it? Add to that The Thief's Tale already being, in its unfinished state, better than most of the games on the service and we can probably be one of the best games on the thing. Is there money in that? Nope. Certainly not anything to make a living at. However, building the game at the top of the XBOX indie pile would provide, as Marcus Fenix once said, "Ten Shitloads" of opportunities for my team professionally.

Wednesday, April 1, 2009

Arcane Sorcery

Right now the computer is doing, um, something. It's scanning the Lazarus Drive and looking for my sweet delicious data. I feel like I'm involved in some kind of Digital Seance, using a Ouija Board marked with only a 1 and a 0. Messages from the dead may be coming through, but I'm not in a position to understand their deeper meanings. Maybe it'll find me a ghost. Maybe it'll just be echoes long gone.

Failing that, I'm getting more sure that I gave my Artist the Source file when I gave them the most recent edition of ThiefEd. At least, I think I did. I remember answering questions and I think I remember plugging his portable drive into Lazarus and giving the Source to him. But the memory, like the ghost I'm trying to find answers from, is hazy and indistinct at best. A fabrication of a wanting mind at worse.

EDIT : It worked. The Seance worked, cryptic messages from the Beyond came on through. Joy erupted from the very fabric of my being. The program allowed me to select the files I wanted, no, Needed. Then I clicked the Save Files button and...

"THIS FEATURE IS NOT SUPPORTED BY THE TRIAL VERSION."

I hate it. I hate it so much. I want one thing, one bloody thing and I need to pay for it. I need to pay to get my own damned files. There's a word for that - extortion. $69.95 worth of extortion. I'll put it another way.

"This is 911, please state your emergency."
"Yeah, oh my god, my legs! My legs have fallen off!"
"What's that sir?"
"I woke up, and my legs fell off!"
"Have they done that before sir?"
"What do you think?"
"Is that a yes or a no?"
"NO! Please send help! I'm bleeding from where my legs are supposed to be."
"We'll send somebody out, but first, we need you to send us $69.95. Do you have a credit card sir?"
"What?"
"A credit card."
"What do you mean $69.95? My legs have fallen off!"
"Yes, and if you want your legs back on it's going to cost you $69.95."
*click*
"Sir? Are you there sir?

- I'll see if the Artist has my file before I consult the Ephors again.