Tuesday, August 15, 2006

Yesterday was quite an exciting day! April and I got the blood test for her pregnancy confirmation back and it was positive! I'm gonna be a daddy! Woo hoo!

Although it came a few months earlier than we expected, we're both very excited about the news. A lesson to all you youngins... keep your rocket in your pocket! Because it happens really fast. April was really concerned about her new job at Northeastern School District since know she's pregnant. She was afraid they would fire her at the end of the year and she put a lot of effort into getting this job. But she talked to the Superintendant, who said she'll be fine and they'll give her the leave she deserves and all should go well. It's going to be a stressful next couple of months, but I really think we are capable of handling this. I will be doing all that I can to support her and give her the love and attention she needs (which I'm sure will be a lot).

What this translates to for me is keeping my job at Westfalia. I guess I just have to be happy with my job and suck it up for a year now because we need the money and the benefits. I'm not sure if I'll ever be involved in professional game development at this point in my life, but right now I don't care too much. I don't really want to make someone else's game anyway. So instead, I have another idea.

I can really see game development moving in the direction of C# in the next couple of years. It has the power of faster development, managed code, garbage collection (haha...), and access to the entire .NET library. I've been toying with a bit of game design too, which I never really thought I had a knack for, and it seems like when I seriously document some of the things I am thinking about, I can come up with some seriously wicked designs! I'm working on a game design for an MMO I am calling "Wireframe". The premise is to be a fun for all people where players can change the world they interact with. I think the principle idea came from Will Wright and his design principles in Spore. He gave the player the power to control evolution with procedural content generation. While Wireframe does not have any procedural content, the players can all interact with the world. In previous MMOs that I've played, the world was static, full of creatures, and static gear. What I am aiming with in the design of Wireframe is to give players the ability to manipulate, create, destroy, and manage the world around them collaboratively. Previously you could do this in SimCity by yourself, but never before could players unite to build, configure, and change terrain the way that Wireframe exposes. In addition to the building system, a unique combat and experience system will be put in place for players that wish to indulge in a more combat-oriented world and don't care much for building. The basic unit of currency will also be the basic unit of trade skills; the pixel. Simple geometry is a key factor in the design of Wireframe because the focus is on game play, not graphics. Armor can be custom crafted with thousands of possibilities depending on play style and scenarios.

I relate the design to a combination of many games. The building aspect has roots in SimCity and other world builders, even level editors, giving players the ability to change the world they interract with. I envision the growth and destruction of terrain to be similar to the N64 game Wetrix (I think I was the only kid on the planet who liked that game...), where terrain can be built up and when it rains, water will collect in pits forming lakes or rivers which can be used as a source for various other things. This leads into Harvest Moon like behavior because as a builder, players will be able to create homes, manage "crops" (probably trees and things) and utilize a hefty toolset to maintain the visual aspects of cities (which are player built, minus a few key locations). Combat will be a unique blend of classical RPG and MMO RPG based strategies that utilize players of all types, including builders. The hybrid experience system is unique, but based on the classical idea of talents or skill trees with a hint of "practice" to master. No first person shooter concepts have been used yet considering that this IS an RPG after all. =)

Oh! And it will be cel-shaded! Cartoony models, solid colors, and bright highlights are key to the graphical style used. Take that EQ2!

Man... do I digress. This is all in my design doc (or at least in an e-mail thread I have with myself for now), so I will leave the rest to your imagination. Maybe I can start a web community to document this once I have a solid game design. As a project on the side, I can take as long as I would like to finish it, whether it goes to production or not, I don't care. This is my project, my design, my focus, and my way of enjoying development. And right now in my life, I think that is where game development belongs for me.

Thursday, August 10, 2006

Well, I haven't posted anything lately because I've been really busy and quite productive at work. I've been trying to work on some demos and study up on game development to get a position. Which leads me to the next topic. I had sent Firaxis my resume with references and a link to my portfolio. I have the portfolio hooked up to a StatCounter so I can track who is viewing it and see how many hits per day I get from jobs. A handy tool I might add. With no word back from Day1Studios, I decided to give Laura from Day1 a call. I pretty much blew it. My material didn't cut it and I'm pretty sure all I did was annoy her, so there's no chance for me there. A few days later I got an e-mail from Firaxis!

Like... no way... Firaxis is considering me for a Generalist position? I was psyched! Couldn't believe it really, since they were hiring for a Software Engineer 3 position with 3 - 7 years experience and 1 shipped title (which I had none of). Bart Muzzin, a graphics programmer from Firaxis e-mailed me to set up a phone interview to discuss my qualifications better. I took a late lunch break and worked from home the rest of the afternoon to make it fit and man was I ever nervous before he called. Once he called, we got the ball rolling with a series of interview topics:


Firaxis Phone Interview Topics

C++
Static functions and variables

Ok, his first question was to explain what a static function is. Well, I pretty much blew this question out of the water and rambled on for 5 minutes about static variables. I knew that there was something special about a static function that makes it run by itself or something but couldn't put that into correct terms.

Answer: A static function of a class is one that can be executed without creating an instance of the class! Duh! I knew that! (after I interviewed of course...stupid memory...).

Josh 0/1

Then he asked me what a static variable was. Well, I kinda had to backtrack and say that uh... what I just described was a static variable? kinda? Then he asked, when are static variables created? I said when the line of code is executed.

Answer: When the program starts, existing the entire lifetime of the application.

Josh 0/2

Difference between STL vector and list

Bart's next questions had to do with the STL. I said I understand and have used a lot of it before, and mentioned vectors and lists, etc. So he asked me what the difference between a vector and list were. I answered with a few "uhh..."s, a couple "hrm.."s, and finally said that vectors are singly linked and lists are doubly linked. Wow... what a stupid answer. Vectors aren't freakin linked... they're not lists at all!

Answer: Vectors are stored like arrays, allowing you to randomly access data from any element in the array at any given time, with the difference that you can easily add new elements ( a dynamicly sized array ). A List is doubly linked and does NOT allow random access, you must follow the data sequentially, which makes complete sense.

Josh 0/3
Inheritance memory concerns
Wasn't really sure about this one either... the question was something like, what are some memory concerns when using inheritance? I didn't really give a solid answer for this question... it was more of a rambling about inheritance and base classes and using a base "world object" class to define the functionality that all derived classes should have or need to implement.
Answer: I think the answer they were looking for is that when you derive a class from a base class, the base class must first be created for each derived class that you create an instance of. What this means is that as the base class grows, the memory consumed is increased linearly with how many objects you have created. If all of the derived classes need to use all of this information, the situation is ok, but if you are using a large base class and only using a small amount of its funcitonality, you're probably wasting memory.
Josh 0/4
Virtual Inheritance / Multiple Inheritance
Yep, never did much with virtual or multiple inheritance before. So well I bluntly shot myself in the foot on this one. "Nope, don't know about em". It was somewhat fortunate for me that Bart never uses it and didn't consider it too important either.
Josh 0/5
Virtual Destructors

I was then asked to define a Virtual Destructor. I went on for another 5 minutes about virtual methods and said that a virtual destructor allows you to define base functionality for the destructor and make it overridable. No quite...

Answer: You need to use virtual destructors when you are going to use "delete" on a derived class object that is referenced by a base class pointer. If you do not use a virtual destructor, only the base classes's destructor gets called which can result in a memory leak, leaving the derived class's destructor unexecuted. If you make the destructor in the base class virtual, the dervied class's destructor will be run first and then the base class, which is the correct way to delete the object.
Josh 0/6

Graphics
Diffuse Lighting Calculation
In the graphics section he started by asking me what the calculation for diffuse lighting is. Since I can't remember formulas, I had no idea what the answer to this one was... But either way I knew it had something to do with the normal of the surface and the angle that the light was entering from. Woo! Got one close enough that I consider it right!
Answer: D = MaterialColorDiffuse * LightColorDiffuse * max(L • N, 0)
Josh 1/7

Cross Product
Next he asked me what the result of a vector cross product is. Man did I nail this one. Response: The result of a vector cross product is a vector perpendicular to the plane formed by the two original vectors.
Josh 2/8
OpenGL basics
Given that I have a scene set up, the camera is set up, everything is prepared, what is the OpenGL code used to render the image? Well I wasn't too sure what he wanted me to say and I haven't touched OpenGL in a few months, so it was kinda fuzzy to me, but I finally spat out glVertex3f, then realized you have to set the color which is glColor3f. His response was, yea, that's what I was looking for, but what comes before that?

...

Oh! glBegin()! Silly me. And he said "... and after that?" Oh, glEnd(). Yeah, I got that, I think I was more confused on the question then anything else.

Josh 3/9
DirectX basics
He asked me what the same call for this in DirectX was. Considering I have DirextX on my resume and that I'm applying for a game development job, I should probably know the basics of Direct3D. Unfortunately I had to take a mulligan on this one and say that I haven't worked with DirectX since DX7 using DirectDraw.
Answer: Device->BeginScene(), Device->DrawPrimitive(), Device->EndScene()
Josh 3/10
Shader languages
Well, after I said that I haven't worked with DirectX since DX7, he pretty much said, well then you don't know much about Shaders do you? Uh... nope!
Josh 3/11
He proceeded to ask me a lot about the Duck Hunt project that I worked on for senior design. I think those questions went well, but I hope I didn't come across as arrogant by saying that I did most of the work for the project. He talked a lot about team management and how well I work with others, but maybe I made it seem like I can't work well with others... which isn't the case at all. He also asked me what games I am currently playing and I mentioned WoW, we had a small friendly chat about that, War3, Civ4, and that's really about it right now.
I then had the opportunity to ask him some questions. I asked a lot of corporate and company questions trying to figure out if the company is the one for me. After those questions, I was positive that Firaxis is where I wanted to work. No contract work, straight to full-time, a casual and laid back development environment, and stability for years to come I'm sure. As Bart said "Sid's name sells games."
The Aftermath
Well, after the interview, I just stayed at home and tried to do some work, but I was so distracted and pre-occupied that I couldn't. I called April and talked to her for a while, and told her that I felt positive about it, as I always do after interviews.. having high hopes. Just as I'm about to go make dinner in preperation for April's arrival I got an e-mail from Susan Meier, Sid's wife and head of HR at Firaxis with the words "We appreciate the effort..." in the preview.
Crap. I knew right then and there, that 2 hours after an interview if you get an e-mail that says that anywhere, you're out of luck. Sure enough, I was declined. The news was surely disheartening, but I'm trying to stay as positive as possible about it and move on. It was a long shot anyway and considering that I scored roughly 25% on the technical questions, I don't think I would hire myself for a job if I didn't know me.
I think my success in a lot of other interviews comes from the fact that they're not looking for someone who can write the best code in the world, but someone that can interface with the team really well, and grow into a position. In game development, you have exactly the opposite. Sure they need to be able to interface with teams, but more importantly, they need to write damn good code, from memory. Unfortunately, I don't think this is something that I will ever be able to do. I need resources, references, and people to interact with to solve problems.
Maybe I will become a teacher in the long run after all...

Friday, July 28, 2006

In lieu of doing work today, I found a lot of really good MMO articles that I want to post for memory.

In an interview with Mythic's co-founder Mark Jacobs, he says this about his standpoint on whether or not the game he is developing will be number one: "We’re going to make a great game, and we’re going to see how it shakes out.” And if we’re number one, we’ve earned it, and if we’re number two, we’ve earned it. And if we flop, we’ve earned it. It’s up to us." I think this is a really profound statement and I couldn't agree more. Game design, as much of a business as it has become, should not be about creating the number 1 seller. Becoming a fan-favorite just happens and the quality of the game design should be persued over how much the game will sell for.

Ok, so I only posted 1... I got tired and have to get back to work, hah.

Thursday, July 27, 2006

Today during one of my slacking off at work sessions, I discovered an article on Gamasutra entitled "The Power of Partial Telecommuting" (http://gamasutra.com/features/20060727/higgins_01.shtml). This article was quite inspiring and made me realize that I fit into the "Slacker" category, and the few times that I have Telecommuted, that's what I did. I really want to get into the mentality of get shit done at work, be flexible with my work and work around my family life, but still have time to push hard for completion.

And I'm completely serious... I need to shape up at work. If you haven't noticed, my last posts have been rather degrading toward my current job. But in talking with April, she made me realize that I need to work hard at what I'm doing right now, whether I like it or not. I'm surprised I didn't see this before, but talking through things like this with April just help me realize and see my own faults. If I take her for example, she's such a dedicated worker, she puts so much time into her work and paper writing and gets shit done. And I mean, gets it done well. She concentrates on the task at hand, devotes a lot of time to completing it and getting it done right and has time left over to spare!

Since I've always been a procrastinator, I never looked at the problems I need to solved until just before they are due to be completed. What this leaves me with is a lot of time screwing off, a little time doing work and actually improving my skills, and a shitty product at the end of it all that just barely scrapes by. This has got to stop.

So starting today, I am going to set some goals for myself. I'm going to close my stat counter windows [done.], my IGDA forum posts [done.], remove my IE shortcut from my taskbar [done.], open up my to do list for my current project (closing my IE shortcut made that harder, haha) [done.], drink some more coffee [done.], and start hammering away at this code. I want to improve my coding efficiency (even though I'm just writing reports) and get this out of the way so I can move on to documentation and feel good about the release on Tuesday.

Fingers crossed, here we go!

Wednesday, July 26, 2006

I downloaded the Titan Quest demo yesterday at work and played it at home last night. (Our cable modem won't be installed until Thursday night, so I have to do all my browsing and downloading at work ^_^ ) It was actually pretty amusing. I was thinking about playing Diablo again for some time now and that demo gave me the Diablo style fix I needed. It's amazingly similar to Diablo which seems to follow the trend of video game design today. It is better to stick to designs that people love then to create some off the wall idea that no one will like. Innovation is challenging in this industry, but I did read somewhere that rather then 'inventing' new games, developers tend to 'innovate' and add new features to old concepts. Seems successful for TQ as I'm considering buying the full version. Maybe I could get into some modding with it and make some cool custom maps to further expose my talent. We'll see...

Still no word from Day1Studios... and I can't seem to figure out whether it's a good thing or a bad thing. I posted on a public forum where the HR rep had already responded several times, so you would think that if it was a deny, she would have posted something like "Sorry, we're looking for people with more experience." So technically, they haven't said no just yet, which is good! But I haven't heard anything so the 'no' could be implicit, which is bad. I've also got to get back to Firaxis sometime soon to follow-up, though I'm not sure they even looked at any of my materials yet.

Work at Westfalia is going ok... I'm burdened by a lot right now including a release, a formal spec, a design and code implementation and making several reports for a client. And this week, half the team is on vacation, so I'm in my psuedo-office alone, which is kinda lame. I like to be surrounded by motivated individuals that want to discuss and learn, but this week has been lacking in that area. Not to mention most of the discussions here are kinda boring because it's business or report logic.

The house project has gone extremely well so far. I can't believe we're already moved in and living in our new house! Yesterday April's parents bought us some straw, so April helped me spread it on the front yard over the grass seed. I also hung the final curtain since April picked up a new curtain rod from Lowes. I put a few holes in the wall though because I had no idea where the studs were and ended up drilling the dry-wall anchor holes into studs, which won't work at all, but I got them installed anyway. Oh! And we went to this Unclaimed Freight place and bought a sofa AND a loveseat for $675. What a deal, we probably saved like $1300 on that purchase and they match the living room colors perfectly. Apes spruced em up with a couple red pillows which was a nice touch. We're living well right now. I've got a good paying development job, April's teaching and learning (at the school district's expense), we got our dog, the house, and lots of left over cash to pay the taxes and buy the extra stuff we need. I feel spoiled, but I think we both deserve it, and we've worked hard to get where we are.

Now... if only I had that professional game development job... =)

Monday, July 24, 2006

Did they respond yet? Nope, Did the... nope...

Have you ever gotten so excited about posting something that all you feel like doing is refreshing the message board seeing if someone responded? That's been me for the past 6 hours...

In retrospect, I'm looking at this issue I have as really pointless and quite lame. It's like... nothing is going to be changing split second on a forum that I need to come back every 5 minutes and check. In fact, it's extremely counter productive.

A little background: I posted on a forum indicating to someone that I applied for a job at their company and wanted them to know I was still interested. So I've been spending all day looking to see if they read it and responded. In the past 6 hours I could have spent 10 minutes checking for responses and gotten 5 hours and 50 minutes worth of work done, but instead, I've spend 3 hours clicking refresh saying "ooo, did they say something yet?!" Most times, I'm disappointed and I sluggishly go back to work only to return in 5 minutes to check again. In the slight occurance that something changes (1 more person viewed the thread), I go on a tangent of checking my StatCounter page to see if they read my portfolio, and if they did, I investigate who they were, where they were coming from and which pages they visited, so I end up spending another 15 minutes doing this every time something small changes! I don't know whether it's my brain or personality or whether I'm truly just a lazy person and don't want to do this work so I use that as an excuse. My mind is easily distracted and if I have something on it, I can't seem to get much else done. The good thing about that is when I'm focused, I get things done. The bad side is when I'm not that focused, I get nothing done at all. I think this is why I tend to like team work. Being in a team and working with someone keeps me focused. When my mind is free to roam, it will, and it won't come back until someone conks me on the head. That's probably why I've been unproductive today...I came down from a productive weekend of being submersed in my new house projects by going to work where I sit alone, with no one around. Having no one around does not inspire me to get work I'm not interested in done.

Wow, what a weekend. It went so fast! Settlement went through so we got to move into our house! That was awesome... I spent all weekend with April moving stuff, building things, installing window curtains and blinds, and just spending a lot of time with her. She's such an incredible person. She makes me lunch, takes care of me, and puts up with me... hahah... and putting up with me is no simple task. Moving in felt good, although my body hasn't moved that much in a long time. Family issues are still creeping up, even after we've moved in. I want to say that they will subside, but while I believe some problems will go away, I fear that others will arise. We'll see, and we'll deal with them as they come.

Work today is another bland day. No one is in the office because they all flew out to Wisconson or something for a client introduction. But, I did however find an IGDA forum posting by Day1Studios indicating that they were hiring. Although it seems like my first two e-mail attempts have failed to generate any inkling of interest, I posted there with my contact info and a link to my portfolio in hopes that it soon will. I was talking with April again about my career choices, and I really feel like game development is where I want to be. While I don't want it to encompass my life, I want to enjoy my job and want to go to work every morning. Nothing sucks more than having to wake up at 7:30am and drag yourself to work knowning that you'll be a wasted lump of mass in a chair for 9 hours. I've also discovered that this job was pretty decieving. I was all excited about being a programmer, which was awesome! But there is no math, not much coding, and it's pretty much all business logic and database code. That is what I call IT. Information Technology... the major I was not in for a reason. The reason I didn't like IT was because of the tightly integrated business. I want to code math, procedural things, algorithms, physics, and graphics! Things that CS majors really want to do! But here, I can't. There is little opportunity for me to grow into what I want to do. And that is why I've been trying so hard to get into game development.

My entire life has been affected by hatred for this job, but I need to start looking at things more positively and get back to writing this functional spec and those reports that I've put off for so long.

Friday, July 21, 2006

Well... I decided to open a blogger blog today (that's kinda catchy). A big question will come to my wife's mind... "If you already have a Xanga, a MySpace, and Facebook that you don't post on or use, why in the world would you decide to start posting on a blogging site that I can't link to?" Well, considering that she manages my Myspace and Facebook because she opened those accounts for me, I really only ever used Xanga =). But to answer the question, I think I wanted a simple place to just post brain dumps for myself and those interested in reading. There is a certain aura about Xanga and MySpace that you just don't get with simple bloggers. It might be the fact that the age group of people using Xanga is expected to be much younger and it seems like a child's toy more so than a professional blog. I don't intend to use this blog as a profile either where I share my entire life story with the rest of the world: pictures, profiles, friends lists, blog rings, interests, etc... I simply wanted a place to put my thoughts, and I found something like this to be simple enough. It also doesn't have all of the previous 'pseudo-friend' connections that Xanga and MySpace have. So many people just want to have as many friends as possible and if they 'know' you in any way, shape, or form they will add you to their 'friend list'. I think blogging might actually help me to organize my thoughts and maybe get my life more on track.

That being said, onto my first post.

I decided to post today because I'm super excited about moving into our new house! In two hours, I leave work. April is coming to pick me up and we're going to start moving boxes down the street. It's an awesome single family home, 4 bedrooms, 4 rooms downstairs, a basement and an extended 1 car garage. The kitchen is amazingly large and combined with the open style of the family room, and the large opening that we had put in between the kitchen and the dining room, there is so much space and breathing room! I don't want to clutter it with a lot of junk either... just enough to make it functional, which I don't think will be a problem considering the way April and I seem to mesh on things like this well. Although, she was concerned that I would be a 'house nazi' (my words, not hers), and completely take control over where things will go in the house. This isn't the case at all, but I can't blame her for thinking it. On occasion I act like I know everything, and I've always been a rather self-sufficient person, so on instinct and history, I've always tended to do things myself. A lot has changed since I met April and she's taught me (and still teaching me) to be much more considerate. Without her in my life, I'm afraid I really would be a self-centered, lifeless, lame, and lazy guy, doing little with my life.

Speaking of doing little with my life, I've felt invigorated about the recent changes in my life. Since a few weeks before the wedding, I've stopped playing World of Warcraft, and let me tell you, what a change. I find more time to focus on doing things I really enjoy in life like spending a lot more time with April, playing with my dog, 3D modeling and programming research, and just loving life a lot more. It makes me sick every time I look back and realize how much of my life I wasted on that game, and other MMOs in the past. As much as I hate to say it, it's a relief to finally do so. Once I say something like that (or blog it), it feels permanent, like a commitment, and I have never wanted to commit to the fact that I've wasted my life playing MMOs. Don't get me wrong, I'm still a gamer and I think that I always will be, but dedicating that much time to a game is ridiculous.

I seem to have gotten myself into a lot of hypocritical situations lately. Like the situation with my bachelor party, which is still hard to think or talk about. I look at people that play games all the time as losers and for a while there I did it myself.

[Ok, newsflash interruption]

Just as I was writing this post and helping some guys out at work, April called me with the disappointing news that we might not be able to move into our house because of the mortgage company's appraiser. How ironic, that I'm making my first post about being excited to move in and wham, hit with a brick. Luckily it sounds like we'll be able to physically move in, just not settle until a later date, at least I hope that's the case...

Well, I should go, I've been blowing off this stuff at work for long enough now.