Wednesday, April 11, 2012

Senior Project is Over - Sort of

Today was the senior project fair. I'm having a bit of trouble looking at the screen right now, what with my eyes getting all squinty from exhaustion. But boy do I have a story, and it must be told. I warn you, it is as long as my day has been.

It seems that despite the fact that people have always seen me as an excellent programmer, so far neither of my game projects have been without an extremely bumpy submission day. Today's had the potential of turning out horribly, but we came out alright.

7:00PM, Last Night
I was in the lab, running some last minute testing. I was hoping to test our installer out on the lab PCs we were going to be using for the Senior Project Fair, but unfortunately the local admin account password the systems administrator left us was unreadable, and he had gone home. I still don't know what the second last character was. An h? Maybe an r. No matter. We ran some further tests between my laptop and a team member's, and then called it a night. Figured I'd spend that night at home fixing the bugs we did find (of which there were a handful), then come back bright and early the next morning.

Fixed the bugs on my PC at home (which is a significantly better environment for working than my tiny laptop), and fell asleep at 1:30AM.

6:00AM, Today
I woke up. Several nights this past week, I was going to bed around this time. Despite the natural urge to go back to sleep, I didn't feel too tired. I think I've broken my internal clock so badly that it doesn't even understand when I should be awake or asleep.

7:30AM
Everything's going as planned. My bug fixes seemed to stick. A few new issues may have popped up, but they were easily dealt with. I also implemented a dodging mechanic, along with an animation that would flip to match your direction of movement! It was a quick affair, and certainly got me motivated to move further. Technically, though I should have been done all of the coding a long time ago, but being the only programmer on a fairly sizable game project definitely saw my time stretched beyond its limits.

9:00AM
The systems administrator (who is a significantly kinder fellow than I realized over the past five years) logged us into the local administrator, and so we nervously went on to test our packaged installer. We'd heard stories across the hallway that despite the admin access, some people still couldn't install their games. Thankfully, we were in the clear. It installed fine. Then I tried to run the game - opened, and crashed.

But it's okay. I anticipated this, based on an absolutely random hunch from having worked on XNA many months ago in a similar environment. Preparing for this random chance, I brought with me 6 pairs of headphones (half of which were broken) - one for each PC. Plugged one in, and the game opened just fine. Turns out it was crashing because it could not find an audio device. Come on guys, not everyone has speakers.

Of course, it can never be that easy, right? Things were going too well. I moved on to logging myself in, and then checking the server list to see what the situation was there. Slight problem. The game was built expecting every network to have a single external IP address, allowing me to filter the server list and show only hosted games within the network. This was all being pulled from a MySQL database, mind you. A strange set up - local game, but all the accounts and data was hosted on the internet. Fixed the problem by removing the filtering and clearing the server list. Okay, we're still good. Maybe we won't be able to connect to a hosted game?

Nope, that worked too.

10:30AM
Here came the whopper that made up for all of our pleasant sailing: on the client computer, the server (and I assume, every other player) was naked and bald. Furthermore, none of their attacks were animating, though running and dying was working fine. I flipped my shit. Something I had changed the previous night had caused this ridiculous problem.

Finding what the problem itself was proved simple enough, but not so for what was causing it. There is a single struct that contains all of the information regarding my player's loadout - all of the armour they equipped and the abilities they chose before joining the server. That one struct was not being replicated for new players, as they joined.

It seemed to me like every five minutes, I would have a "OH I KNOW WHAT THE PROBLEM IS" moment, and every time for two and a half hours I would be horribly wrong. I haven't yet figured out what the cause was, though I do intend to go back and fix the damn thing - and perhaps another handful of bugs.

12:45PM
It is a truly horrible feeling. I was the only programmer in the whole group - all of this was resting on my shoulders, and if I could not fix this, it seemed like we would make complete fools of ourselves. Not only did I desperately not want to let my team down, but it kept ringing in my head. I didn't even want to do the programming for this project - I wanted to create and texture 3D assets. Characters, armour, weapons - that was the direction in which I wanted to expand my portfolio, and I wanted to build myself a reputation as a 3D artist. Or the beginnings of one.

Unfortunately, I was the only one in my group with an aptitude for programming. Everyone else was in the art category, so I had to pick up the coding side of things. Or did I really? Maybe we would have managed just fine. Maybe it's all in my head. I don't know anymore.

So, 12:45- I was thinking there, thinking about the fact that not only would I not be noted for having skills as a 3D artist, but I'd instead be crowning my five years of university with a disaster. I wouldn't even be remembered as a good programmer. At best, I'd be "that kid who bit off way more than he could chew." And they'd be right.

At this point, I accepted the fact that I probably wouldn't be able to solve the problem - I packaged the game up and rushed my team members into installing it on all the machines. At least we'd have something multiplayer to show - it's better than nothing. But no, it seemed that nothing was, at least at the time, what we were destined to show.

We tried joining a hosted game with the lab PCs - something that had worked some two hours earlier. Nothing. No response whatsoever. I could feel my heart break. We had a mutliplayer game with no multiplayer. At best, we had a game with a simple character creator, a couple of trainer skill trees, a marketplace and an (admittedly pretty cool) loadout screen where users could drag and drop their equipment icons onto slots and see it update a 3D preview in realtime. Oh, and we could host a game and allow our visitors to run around alone in the arena. And yes, that's right. Visitors. They were coming in already, it was past 1:00PM.

2:00PM
This was around the time the judges were supposed to come and see our project, and we were supposed to present. The presentation itself would have been alright. Professor Arya or Professor Whitehead (I honestly can't remember who it was anymore, my memory is hazy) offered to bump us to the last group, giving us an hour at least to figure out what was going on and fix it. I told him flat out - I don't think extra time is going to help us. Thankfully, he didn't listen to my stupidity and bumped us to last. I may have plenty of sour things to say about my program's faculty in private, but today I really cannot swear to any of it. They weren't condescending or critical of my failures as a programmer at all - only encouraging and accommodating.

It wasn't too long after that Nick Zou (the team member who was helping me debug earlier) suggested that we try the game between our laptops. Just to get something going, if we could. I had virtually given up, but at this point I really had nothing to lose, so I gave it a shot, expecting to not even be able to join the game. I was wrong.

We were able to get into a game together, but the bug from earlier that morning that kept the client from seeing animations, weapons and armour was still happening. But the host could see everything perfectly... Then we had an idea. I can't remember if it was mine, or his, or if we came up with it together. But it resulted in Nick sitting in the far corner of the class, hidden by a sheet, and me setting my laptop out on the open table for people to see.

Nick played blind.

He couldn't see what anyone was doing. All he could see was people running around. Couldn't even see if his own attacks hit. But somehow, he managed to kick a lot of people's asses.

Interest in our project started to grow, and despite only having one functioning copy, people were crowding around to watch the fight. I'm sure other groups got much larger crowds, but considering the state of our game, we could do worse. What's more: people seemed to enjoy the game. It was difficult, it was unbalanced, and Nick was making mince meat of most contenders, but they were enjoying themselves. One guy kept coming back - although he was equally interested in the programming aspect of it, and had been trying to help me figure out what the problem was. I can't really remember his name now, but I wish I could thank him again.

Edit: His name was Harold Mintah

3:30PM
From here, the story's fairly linear. Presented to the judges, they seemed to like it well enough, but the game wasn't anything special. They did, however, like the art style, and I saw some employer-type fellow asking Marie (who did a lot of texturing) for a business card. I don't think anyone was particularly wowed by anything I did, though some of the judges did come to me afterward to make a few suggestions regarding the flow of animations and other such things. I guess they were mildly impressed by the fact that I coded it on my own, but really that just makes me look irresponsible, since the product itself was essentially broken. Another truth.

It definitely is disappointing that despite the countless hours I put into this project, I don't think I'll get much out of it. I do, however, intend to clean it up, and fix the bugs as well as I can, before putting it away. If anything, I will get some decent video footage for my portfolio.

My eyes are burning, I think I need sleep.

Friday, March 30, 2012

Neckbeard, the Third

Despite still not being wholly satisfied with the sack - or really satisfied at all with it - I blustered on forwards with colour, because I felt that was what my evening (late night, early morning, whatever) needed. Today's been a stressful day, but full of significant advances on my senior project. I've come to realize how weak my understanding of the basic structure of UDK networking truly is, but I'm squirming my way around it. I feel like most of my solutions have been messy at best, and really not following how the tools are intended to be used - that said, the documentation seems so convoluted, yet so sparse, on the matter that I cannot discern the designers' intent. No matter, with deadlines this close, all that matters is that it has to work.

I was set on this palette since last night. Raging purples and blues, accented by some reds on the joints and the belly. I really want to push the whole distended nature of the stomach, I think I may even try to make it seem somewhat translucent, but we'll see how effectively I can communicate that tomorrow.

Thursday, March 29, 2012

Neckbeard, the Second

I think Neckbeard is far more suitable at this point than silly Troll Claus, not that anyone's keeping score. I'm still iffy with the limbs falling out of the sack, but I'm liking the general vibe of revulsion from the rest of the character design. I'll probably move into colour with this tomorrow evening - thinking of some purples and blues, with reds to accent.

Wednesday, March 28, 2012

Troll Claus

I'm not really sure what I'm going for here, but for some reason I got a very krampusy vibe while I was working at this. I think I'll go back tomorrow night and repose that arm and the sack. But I kind of like the whole idea of it... We'll see.



Also, I decided to leave the 'Revisiting the Sprite' piece alone. It was becoming monotonous, overworking the same parts over and over, and I just couldn't find any satisfaction in it. So I moved on.

Wednesday, March 21, 2012

Self Portrait the Second

Self Portrait

I've made very few attempts at self portraits in the past, and that is something I've always meant to remedy. Doesn't help that I'm none too fond of my face, but you've ultimately got to work with what you've got. I'm glad I decided to work at it today, though, when my face was at least a bit stubbly. I look much younger than I am (even height aside, my face is particularly boyish), so I only shave once every few days. Doesn't do much, but that's okay. I kind of like how this one's coming along - I may continue it tomorrow night.

Tuesday, March 20, 2012

Artblock is the Worst

I feel like I'm sinking back into the rut I'd flopped around in for the past few years - where nothing would come from my fingertips, and all the lines I drew went down wrong. Then, this afternoon, I thought maybe I'd escaped from the clutches of my art block. Not long after, though, things went wrong again.

This is about the best I could manage, before I finally gave up for the night. Ugh.

Thursday, March 15, 2012

Vampire: The Masquerade - Bloodlines

Truly a classic - the gameplay is boring, it's riddled with bugs, and much of the cities get repetitive very quickly, but my god, I love this game. I played it first a few years ago - I can't remember when, but it must have been at least two and a half years. I found it painfully frustrating at times, but I adored it for the characters and the brilliant voice acting, both of which really brought the entire world to life.

Now, it was on steam a week or so ago, so I picked it up for something like five dollars. I was dying to play it, but unfortunately, the last week had me working like a dog on senior project, since approval for participation in the senior project fair was to be granted yesterday based on a demo to a couple of profs. Our demo was buggy as hell, didn't entirely work, but somehow we got in.

But back to my main point - I finally got to play it yesterday evening, after a four hour nap (prior to that, I'd been awake all night, working a total of 19 hours on senior project without a wink of sleep). Just as good as I remembered. There are a whole slew of things that I wish could be improved, but at the end of the day, this game is eight years old, and it is still fantastic. They really put such a wealth of effort and money into the story and characters, and all the tiny details that give the impression that you've entered a real universe. It almost makes me want to step back and work on a game with graphics that are considered sub-par today, and gameplay that is painfully simple.

Anyways, so I put the game down for a few hours and started sketching out a scene - needless to say, it was way more sexually charged than I've attempted in a long time. I only really explored a progression based on a single thumbnail, but I wasn't really sure what direction to take with it. I want to keep the characters clothed, but I'm afraid it might seem unnatural and out of place. Maaan, I donno.

Thursday, March 1, 2012

Paladin Skill Trainer

So I didn't post the WIPs as I was working on this one, largely because I never really liked it at any stage. I've been pretty burnt out from working in UDK and studying for midterms and I've spent my evenings on this. I'm still not particularly pleased, but it's good enough for what it's for.