Tuesday, July 17, 2012

Resurrector

I believe that the title is a real word. If not, I'm just going to go with it anyway. Note the "or" ending which makes a verb a proper noun given the right context (see also, Author, Auditor, Editor and, I suppose, Auror). After that, maybe the title "So Happy Together" would have been a better choice. Anyway, where was I? Oh right...

Thank you thank you thank you, you are too kind.

I got Shiney (sic) back together again. Right now there is still an alarmingly large pile of little screws that go inside and will hold the little brute together, but I got it to boot. After 4 hours (and being up until 1:00 AM - haven't done that in a while {too long of a while actually}) I managed to put all the pieces back into their correct places, and enough screws to keep it held together.

As I was putting Shiney back together, I kept having moments of feeling like Tony Stark from the first Iron Man movie. Holding little screwdrivers and putting the little bits of wire into the right places. Hardware, unlike software, doesn't give a lot of instant feedback. In fact, I didn't really know until about 10 minutes ago if the thing would even start. Since the last time it caught goddamn fire, I had just a wee bit of trepidation about mashing that Go button. That button by the way, is a hells of a lot more worrisome that the Compile button ever was.

Then it started, and stuff popped up on screen. Familiar stuff even. Computer stuff that wasn't screaming like a blastered R2 unit. Followed by, dare I say, happy sounds. The new little fan spinning happily along, making a noise like a computer fan aught to, not like a 747 Jumbo Jet going supersonic into a mountain side like a drunken Superman. The Windows logo popped up and that little jingle played letting me know that the days of taking apart, putting together and hoping it would work were something. Letting me know that somehow, in spite of everything people told me about trying to fix a laptop, I had Ra's Al Ghuled that motherfucker.

So yeah, now we get the rest of those little ducky levels all lined up and we got ourselves a game.

-Speaking of which, I got some test playing in for Desperado. It's still, so sorry about the incoming pun, in desperate need of some tweaks. But thankfully, I can see the core gameplay underneath, and I can ken what it wants to be. Since it's a card game, it won't ever feel right. Instead I have to play it until it seems right. When the basics are in a reasonable state, I'll post up everything I have regarding the project, and maybe you fine folks can play. I think that would be quite fun indeed.

- Just came back from Comic-Con. Hence the abundance of comic references. I apologize for nothing.

I can take apart the remote control,
And I can almost put it back together.

Wednesday, June 20, 2012

The Six Million Dollar Cowboy

Alright alright. It's a new post. Isn't that exciting? Isn't it annoying when somebody just writes rhetorical questions? Anyhow, couple things out of the way, starting with the titles. My computer is in a million (metaphorical actually closer to around 30) pieces in a box. It's sort of sad actually. But I do have new parts now, so new fans to keep the CPU all nice and chilled to Paper Zeppelin runs like it's supposed to. Also, hopefully, avoid flames.
The extra stupid thing is that for all intents and the occasional purpose, Paper Zeppelin is done from a design and code perspective. There's still some bugs to iron out, but the core thing is done and just waiting for the last few levels. Which reminds me, no new art assets. I could probably start making them, but I have exactly dick-all idea whether the assets will work in the engine or not, or if they will look like proverbial ass. So to save myself the time I haven't gotten past the planning stages of what PZ will actually look like. I'll post stuff as soon as I know.
In the meantime, it's my plan this weekend to put Shiney (sic) back together, now with new and improved cooling fan action. Since taking it apart took multiple hours spread over a couple of days, I'm, thinking that putting it back together may take a bit of time. I'll have an update soon regarding that, followed shortly by Paper Zeppelin updates which are fewer and further between than I would like.


So, questions may arise like, "What have you been doing since the last time?" and "I didn't think of more than 1 question before I started this thought." Well, I focused on classes (4.0 natch) and on other non-computer based design issues. I've taught myself to use Access and write things in that code (which is very C-ish by the way). Mostly though, I've done the following.

Desperado or Gunslinger, I haven't decided on a name yet, is a trading card game that I've developed recently. I started with a top down design after watching Rango of all things where I wanted to make a card game based on old west concepts and spaghetti western stereotypes. I'm creating cards for it, and I'll pass out versions of the thing I build at ComiKhan in the coming weeks. I'll post up the rule set over there => when I'm happy with them and they aren't just full of half crazed notes.
If that goes well I'll either start selling the game, or release the rules under a Creative Commons license and see what the world does to it. If that turns out not so stupid, I'll release the rule sets for other things I've put together (like the SHADOW TCG I've developed in my free time).

Oh, right. When I take a break from game creation I design games. I thought I had a problem, but Game Designers all seem to do this. Creation from nothing via imagination and will is Fun!

The other thing I've been working on is a web comic. A friend of mine (an artist friend and the original Animator for The Thief's Tale by the by) and me have been in the process of creating a comic story based on an idea we've had for like, a million years. If it wasn't for the fact that Shiney (sic) exploded and is a zombie now, I probably wouldn't have started working on this. So that's good news I guess.
So we're doing that and going to stick it up on Comic Fury until it's successful and I want to sell advertising. (Yay! Capitalism) I'll stick links up here for every issue and you can see what I write when I'm not blogging this. Hint : It has a goofy sense of humor and the structure is all weird on purpose.

In the meantime, I've got screwdrivers and a laptop to bring back from the brink...

...Isn't it enough to know that I ruined a pony making a gift for you?

Tuesday, March 20, 2012

Witch Doctor

Almost typed Necromancer again, but this time is way different than the last time I had to worry about exchanging a hard drive. In this installment, it turns out that A) the hard drive inside Shiney (that's the old laptop for those of your keeping score at home) is just underneath a single panel. Unlike in Lazarus (that would be the one before Shiney - much like in Project Mayhem in death, a Star Frog Computer gets a name) where I basically had to reduce the system to pieces and literally pry the thing out. Also, B) Windows Vista and Windows 7 use the same file structures. Unlike, I figure, Vista and XP. I know this because my data just copied right over, uncorrupted, and without extra "Zombie" characters.
After some doing, I've even managed to get the whole thing dancing on my ultrabook.

Now, I know that the readers (HA!) prefer to hear about the things that go stupid, since this can sometimes come across as all congratulatory or "positve." In that case, here's the bad news. Turns out that XNA and Visual Studio 2010 don't really get along too well with each other. Worse, VS10 tried being all helpful and stuff, converting my code to VS10 format. Which is swell, but you know what can't read VS10 format? Visual Studio 8, that's what. I could copy the files from the Shiney Drive (which sounds like the engine on the USS Happypants) and I think I may end up doing that.
Also, would you believe that an ultrabook has a smaller screen than a full fledged laptop? That's because it does. Would you also believe that XNA does not support the resolution that my ultrabook runs at? That's also true. Instead, it shrinks the game window on my already smaller screen so it's like I'm playing on a Game Boy. I'm not sure if that's just something I'm going to have to deal with or not, assuming that it's Visual Studio 2010 trying to be helpful again. Bastard.
If that is the case, I very well may be learning the fine art of motherboard replacement in a laptop so I can Steve Rogers Shiney and its bigger screen. I'm sure that's gonna go just fuggin dandy. Although, this is the kind of thing that plagues / makes indie dev special. I mean, the dudes at BioWare are catching flak about the ending to Mass Effect 3, meanwhile me and my no budget get to worry about trading coding and development time to actually fix hardware. I keep having to remind myself periodically, that if it wasn't hard, it wouldn't be cool - and then try to get back to work.

Also, I was going to install the memory (all 4 high quality gigs!) into the Ultrabook, but they are the wrong shapes. So that fails.

Finally, something else did go wrong. You see, I tend to code in a series of tests. I'll start writing a bit of "Test" code to see if something works or is possible. If it does, I usually just keep whatever it was called and move on. So I occasionally have bits of code that have odd names. Sometimes these are tricky toc change after the fact, since other parts of the code may reference said function by name. This happened today with a little something called LearningGame. It's a class that handles certain drawing duties. The name is a leftover from when I started coding up Paper Zeppelin to see what I could do. Test ran into test and eventually I had an entire engine to show for it.
Problem is I also had a program I called LearningGame where that was the entire program. When I imported Paper Zeppelin into Visual Studio 2010 it could not find the bit called LearningGame that was supposed to be in the engine. Like a dumbass, I just inserted the wrong one. So, technically speaking, when I compile I run 2 different games at the same time!
I want to hate it harder, but it's difficult to hate something that appears so tiny on my screen.


Work it harder, make it better
Do it faster, makes us stronger...

Wednesday, March 14, 2012

Exchange Student

And we're back now. New computer and new resources to get some quality code done. First things, although it's not en vogue to give props to "evil" corporations, I have nothing but props to Microsoft and their awesome Dreamspark program. Once I figured out I can sign in with my verified Dreamspark ID on the main MS site and download .exe installer files (instead of rotten DVD images - my new ultrabook lacks a physical drive - grrr) I'm dandy. I've got C# Express (which I used previously) but also Visual Studio 2010 and 2011. Oh yeah, that's money.
Actually, it's not. Since I am technically speaking a college student, it didn't cost me a thing. From the business side I get it. I learn the software and then when I'm in a position to buy software I buy the stuff I know. It's like the first, sweet digital hit of the goods was free. Then you're hooked for life. Strangely, I'm okay being a junkie for what's I needs in this case. You know who else needs to do this? Every software package that I need to make stuff. Then they needs to talk to each other so those awesome assets import easily - since that sucks sometimes.

-Right, so we're currently in the middle of what I'd call the second Necromancer Saga, but since I've gone through this already, I don't have the same worry/hate as before. I need to surgically extract my old hard drive and copy the files to the new one. Hells, they're even in the same folder for ease. I have started looking at cloud storage solutions, and I wonder if I can automate an upload to Dropbox or something like that. One would think that having suicidal laptop would be the exception, but having this same bloody thing happen to me twice? On 2 separate projects? That makes me want to cry and possible punt a bunny (CID would like to expressly comment that it does not condone the punting of bunnies. Unless the teeth could be described as "sharp" and  also "pointy" at which case punting allowances are on a case by case basis)
Anyhow, I don't have any new code to write about or project updates, which as always, makes me a sad panda. I do have IDE and that's cool, now I just need to score the code that I lovingly crafted and I can be good to go. My code is doubly important, since I wrote so much of it to be explicitly portable. I'd say 80% or so of the code could be almost directly applied to The Star Frog EP, which is nice. Or will be once I get it out of the Shiney.

Speaking of new laptop, I've decided that Windows is just fuggin needy. "Hold on, let me update this." "You have to let me restart now. If you don't then I'll do it myself in 1 hour," like some kind of deadline. Honestly, if Microsoft would make Visual Studio usable in Linux (specifically JoliOS - love that crap) I could ditch Windows like a vestigal tail. Other than software installation (which for Linux is both baffling and archaic) I'm liking the easy to use layout which reminds me quite a bit of my phone.
However, to continue my previous point, my laptop is a dual boot, since I need that vestigal tail to swing through the code jungle that I've grown. Or will swing, once I can get the trees from their old home.

Sunday, February 5, 2012

Requiem

It's happened again. My computer, and one of the reasons that this blog hasn't been updated in a while, is that my old computer caught a bad case of the deads. This of course, was the new computer that I had. I sat down and had an entire afternoon to get some serious code and level building going. Instead it just fell down and ate shit. The motherboard burst like a blister, creating an actual smoky cloud and, when I gave it a second go, a small pop of what appeared to be bloody flames. Fuggin flames, actual inferno styled flames. Thankfully, the inferno happened about as far from the processor and hard drive as possible, so I'm certain that the Paper Zeppelin assets is nice and safe in there in it's tiny little life boat.
So that's the current status of Paper Zeppelin, which makes me want to scream. How am I supposed to showcase my game design abilities if the only playable build of the goddam software is locked inside a DOA computer? You know what? I can't, I fuggin can't, hence I want to scream.
In the meantime, I'm going to replace the motherboard from my currently sick laptop. Hopefully I'll be able to properly resurrect the old system, since first of all - I like that computer. It's fast but not too fast, so anything that I build on it will run on XBLIG. The Alienware that I'm looking to buy will actually be too fast, since it will have a faster archetecture than the 360. This isn't actually good as far as I am concerned. So I know that computer, I like that computer, and I'll post how the motherboard exchange works when I get to it. Failing that I'll use the similar technique I used during The Necromancer Saga (see above for those posts).
Anyway, like I've said before, in death and injury, a computer at Star Frog Games gets a name. The last one is named Shiney, all misspelled like that. It's the name that I'll use to refer to it, but I'm not willing to send it into that good night just yet.

Tuesday, January 3, 2012

Down Hill(s)

It's been a bit since I last posted a proper update. It turns out that certain things take much, much longer than you would expect them to. When I got to score some quality time to write code or build levels, I tended to throw all of my energy into that for whatever hours I had. Consequently, even though progress was clicking along just about as well as could be expected, I didn't really get around to writing anything about it, which is kind of the point here. Anyway, it's a new year and it's about time to actually write an update for Paper Zeppelin.
First things first, the Rolling Hills level is all finished, leaving just 4 levels left to do before I can move on to creating the art assets and setting the balance for single player. Mind I still have to add the secondary spawn triggers for multiplayer (since the enemies will be more numerous depending on the number of players), but with the heavy lifting of the geometry and single player at least giving the levels a sense of shape. So that's a positive as far as I'm concerned.
For kicks, I set up the game to start from the beginning and see how it works out. Turns out that the game is currently about 15 minutes depending on the paths taken, and assuming that the player is good enough to, um, not die. Considering that other shooters tend to run in the 30 minute range, and they don't branch, I'll take a 15 minute playthrough. Add to that the little bonus levels in between where the scores float on by (and medals for the best player from the last level) which will run about 20 seconds or so. Add the last few levels and we should be into a nice 25 minutes per playthrough, or about 65 minutes of total zeppelin destructive joy if you add all the levels together, which seems like a metric crapload of shooter joy. I'm happy with that. Especially since the game is difficult enough that I can think of few people that will be able to complete the game the first few times they play.
In more news, I fixed the mortars, so now they work correctly. They explode like they aught to and, provided that I don't put them above where a player may be, they work great. Otherwise the arcs that the mortars fire at is too low and then they just kill themselves, which is just about as stupid as it sounds.
Up next, the Easy Path Caves. I enjoy making the cave levels, and unlike the last set, I've got access to all those sweet destructible tiles.

Sunday, October 9, 2011

Rocket Science

So much good stuff. Some of it has to do with the engine and Paper Zeppelin others have to do with Star Frog Games. Let's start with the stuff that is applicable today.
Like I said last time, the Rockets that I had constructed played like crap. The issues were many and the problems were inherit to the design. It's the kind of thing that I should have caught before I ever coded the things, but was happy to build stuff once I got into creating the different classes that live in Paper Zeppelin. So the idea that I had instead (spoiler alert - it works awesome!) was to create mortars that would fire and arc gracefully through the air. What I quickly ran into though, was that I had exactly zero idea what equation to use and what variables to feed it. Just so you know, we're about to go deep into the safari part of Mathemagic Land, so hold on.
If you want to know how far something has gone, the equation looks something like this. The specific letters may vary based on who is writing it though:

Distance = Speed * Time

So say you had an object that is going 60 mph, and was doing this for 30 minutes...

Distance = 60mph * 1/2 h

Which would get you Distance = 30. For those of you playing at home, it's important for your answers to make sure that your units (that would be the hour) match. I could have also done this : Distance = 1mpm * 30m...and got the same result.

This, along with some Trigonometry, is how most objects in Paper Zeppelin calculate where they are supposed to be any given moment. It's easy for the most part, and it works. It fails on so many levels with the mortars though. The mortars have a variable speed, since they get slower and eventually fall back down afterwards. The equation I have is for constant speed objects. There is no modifier in play here. Mortars shells deal with the forces of gravity, or a simulation of it.

Clearly I needed an equation that would let me also figure that out. The thing that I realized was that the initial speed was important. So I started with something like this:

Distance = iS - GT

...or Distance = Initial Speed - (Gravity * Time)

If you plug the numbers in though, you get results that don't jive with how the world actually works. The force of gravity is way too weak. The difference also comes out kind of linear. The change in speed is constant. With actual gravity, that's not the case and is actually accelerating. If you don't believe me, consider this - if you jump from your couch you don't have enough time to speed up to lethal speeds, since the time is far too short. If you jumped out of a plane, you would be going considerably faster by the time the ground gave you a big hug goodbye. My mortars were basically jumping from windows and slowly coming back and landing at couch jumping speed. What I really needed, was to make the equation logarithmic, which meant that I had to square something.

When you square something, you start to develop curves, which is exactly what gravity does. Consider when a ball is thrown. It arcs. The issue was finding the right place to square the equation. I'll save the details (since they actually took up a couple of notebook pages and are mostly just incorrect, but I found that I really wanted to square the Time variable and my final equation looks a little like this (by the way actual code notes!) :

D = iST - Delta(T^2)

Delta being a way to say Change in Rate. Anyway, it works, creates a pleasant arc for the mortar to follow. The trick is to figure out that since the only real factor of change is the Time, the change moment to moment will be minor and based on that. The constant values just plug right in at that point. However, this doesn't help me all too much, at least not yet. The issue is that I still have 2 variables that need solving before I can make the mortar shoot an object to the right height.
So the insight that I had was to assume that one of the values was something specific. If you think about an arc for a moment, there is a spot right at the top that isn't moving at all. It's almost an artifact of the math, but you can feel it on a roller coaster, that slightly sickening feeling when you hit the top of a hill at speed. But, since the engine is more than capable of finding a distance between objects and I know where I would like the object to end up, if I use that as my value, I can then calculate the Time something like this:

100 (Distance) = 0 (the initial speed) * Time - (0.2(T squared))
100 = 0 - 0.2(T^2)
500 = T^2
T = Square Root of 500

Let's follow the math steps (I told you it was going to be one of those kind of posts). We have 0 as the initial speed and we know the distance (the difference between the mortar position and the player(s) position). We also know the value of the gravity (0.2 pixels per cycle, or 60 pixels per second) and we are trying to figure out how long the object will take to get back to the ground. We end up with Time being the square root of 500 (about 22.36 by the way). So at 22.36 seconds, the speed that the object is going is the speed that the object should be fired at (negative, of course) and after 22.36 seconds it will get back to the top of the arc, be zero, and do exactly what the original equation promised that it would.
Like I said, it works now. Also, plays great and I'm happy with it.


*********

Right then. I was doing some math recently and doing some thinking about Star Frog Games. Previously I had come to the conclusion that this particular enterprise wouldn't be able to support me financially. I'm still of that particular mind more or less...but then I read something on the Radiangames website. He too is a developer or XBox Live Indie Games, but he does it full time and is way more prolific than I am, with the insane rate of 1 per month. He's currently my Dev Hero. Anyway, he had graphs and things about revenues, which are uncommon to find really, although I'll post my own when I have that information. The basic thing was that all told he sold about 2000 copies on the first month for most games. That tends to taper and average to about 1/2 to 1/3 that for following months. Again, no idea how long those hold though.
However, and this is the cool bit, that continues to stack. If you only make the 1 game per year you will surely starve to death well before anything cool happens. If, on the other hand you can manage something like, 4 games per year, the math works like this instead:
$665 * 12 *4 = $31,920 per year...which isn't very good honestly. I would think that on the second year you get some long tail sales which may increase that ever so slightly. But, if you can somehow find the time to do 5 - $665 * 12 * 5 = $39,990 which puts you well into the range of not being destitute.
So what I can hear nobody saying. Paper Zeppelin is now almost 5 months old and still isn't done. To that, you would be correct. The project that I work on between normal work and school for about an hour per night if I'm lucky still isn't done yet. But it moving along at a pace I continue to be okay with. But with those givens, the math works out, being generous, to around 150 hours invested so far. That's just shy of 4 weeks if I was doing this 40 hours per week. Consider for a moment, that everything that I've put together for Paper Zeppelin, that giant assed list over yonder => has taken about 4 weeks of actual work so far. Suddenly, a 3 month development cycle doesn't seem so impossible anymore. Nor does doing all of this, well, all the time.