tag:blogger.com,1999:blog-15312567798475860242024-03-13T09:53:25.585-04:00resolve as wontfixA blog about the game programming and development adventures of Aaron.Anonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.comBlogger29125tag:blogger.com,1999:blog-1531256779847586024.post-55476470898406610122013-10-08T10:29:00.002-04:002013-10-08T10:29:24.581-04:00<div style="text-align: left;">
My good friend Chad Stewart is doing something really cool, Indie Van Game Jam. Yeah sorry I am too busy to post regularly. Had a kid, still do lots of things, will post about them one day. But yeah, check this thing out and empty your pockets plz kthxbi:</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<iframe frameborder="0" height="360" src="http://www.kickstarter.com/projects/binarysolo/indie-van-game-jam/widget/video.html" width="480"> </iframe></div>
Anonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.com0tag:blogger.com,1999:blog-1531256779847586024.post-1711867772209160862012-09-17T09:04:00.004-04:002012-09-17T09:04:50.880-04:00In Case you Missed itI am now on the board of directors for the Boston IGDA Chapter (Boston Post Mortem). Thanks to everyone who voted. Stay tuned for more developments!Anonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.com0tag:blogger.com,1999:blog-1531256779847586024.post-59800736719376744332012-08-29T21:24:00.003-04:002012-08-29T21:33:43.114-04:00Vote Melcher for BPM BoardHello there,<br />
<br />
I am running for a spot on the Boston Post Mortem(BPM)/IGDA Boston Chapter Board of Directors. Vote for me kthxbi. Seriously though folks, if you are interested in having an engineer providing input towards BPM monthly meeting content then please consider me. For my complete statement follow the link:<br />
<a href="http://www.bostonpostmortem.org/2012/08/29/igda-boston-board-of-director-elections-2012-candidates/">http://www.bostonpostmortem.org/2012/08/29/igda-boston-board-of-director-elections-2012-candidates/</a><br />
<br />
One of the main reasons I threw my hat into the ring is because of the absence of a game programmer's perspective on the board. So take a look around and make your own decision.<br />
<br />
So you want to vote? Follow these steps:<br />
<br />
If already an IGDA Member with your chapter set to Boston:<br />
1. Check email<br />
2. Vote via email<br />
<br />
If not an IGDA Member with chapter set to Boston (didn't get a vote email already):<br />
1. Be a IGDA Member - <a href="http://www.igda.org/">http://www.igda.org/</a><br />
2. Set your chapter to Boston -You can designate your chapter by going to <a href="https://members.igda.org/login/">https://members.igda.org/login/</a> and signing in with your member login. Then navigate to Profile -> Update Profile -> Choose IGDA Chapter drop down and select Boston.<br />
3. Shoot dan@bostonpostmortem.org an email asking for a voting form<br />
4. VOTE! ...phew.<br />
<br />
That is it, happy voting!Anonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.com0tag:blogger.com,1999:blog-1531256779847586024.post-54924270688936906022012-01-15T17:33:00.001-05:002012-01-15T17:39:18.517-05:00College Chronicles Part 5: VeiriThis post is about the fifth game I made while in college. To see the other posts just check out the section on the side titled "College Game Archive". I'm going to keep these final chronicles much more brief so that I actually complete them (and lets be honest, what do you care :-P).<br />
<br />
We've now reached essentially the middle of my time at Full Sail University. I believe the class was Structures of Game Production (SGP) and at the time it was taught by <a href="http://www.dustinclingman.com/">Dustin Clingman</a> who was backed up by Keyvan Acosta. In this class we were taught how to organize, schedule and execute a game project with a team of around four programmers. We could also make asset requests to a team of paid artists, but most of us just stole classic game sprite sheets because we were stupid/anti-social. Everyone on the team assumed some sort of role and worked on a game for two months.<br />
<a name='more'></a><br />
I was the "Project Officer" which means I scheduled everyone's tasks and made sure we stayed on target. I also at this point had a lot of "decent" code that we used for the basis of the engine used to make the game. I improved my particle engine from past games and created an editor that we could use to make effects. The remaining of my tasks were odds and ends and anything we forgot to schedule (lots of things).<br />
<br />
These two months were the hardest for me mentally out of the whole program. How the hell do I estimate how long it takes to make a particle editor? I've never made one before...I've only been coding a few months!!! AHHHH!!! /headexplosion. After some loud screaming in my car and conversations with my then lady friend (now wife :-D) I started winging it. Particle editor? Five days, sure why not, NEXT!<br />
<br />
Looking back it was pretty damn impressive what we slapped together in two months. All I can recall is working every waking moment and consuming a lot of Little Debbie and Monster Energy Drinks. I also remember staying up for the longest time in my life. Before beta turn in I stayed up five days in a row working, only taking short naps (about an hour or so).<br />
<br />
I'm going to wrap it up here. Below you will find a game play video (and my "awesome" video editing skills). You'll also find a link to a zip file with the game, editors, documentation and complete source code. Oh yeah the code sucks, I had to spend a decent amount of time getting things running again...so yeah don't use it.<br />
<br />
Love,<br />
Aaron<br />
<br />
Game Package(Windows):<br />
<a href="http://resolveaswontfix.com/projects/rawf_veiri.zip">Veiri - Game, Editors, Source, Documentation</a><br />
<br />
Game Video:<br />
<iframe allowfullscreen="" frameborder="0" height="360" src="http://www.youtube.com/embed/--fRj4-wOi4?rel=0" width="480"></iframe>Anonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.com4tag:blogger.com,1999:blog-1531256779847586024.post-50449565958372081682011-12-05T13:05:00.001-05:002011-12-05T13:14:46.754-05:00Life ContinuesI'm programming at Turbine Inc. now. I failed my new year's resolution, get over it. I started playing games again somewhere around SW:TOR Beta (It is good) and when I started at Turbine. One day I will post to this thing again. Oh yeah I worked most of the year on <a href="http://redwagongames.com/Oregon-Trail/">OregonTrail </a>for 3DS/Wii . The rest of the time was spent working on other things less notable and/or secretive.<br />
<br />
Best,<br />
AaronAnonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.com1tag:blogger.com,1999:blog-1531256779847586024.post-37733339142016834852011-01-08T12:24:00.002-05:002011-12-28T19:43:09.448-05:00New Years Resolution - Stop Playing, Start MakingLast year was all about learning lots of skills that my new job required. Lets check out a brief bulleted list of what went down:<br />
<ul><li>Learned a bunch of misc. XBOX360, Wii and PS3 platform tech</li>
<li>Worked on a game with an external publisher pulling the strings</li>
<li>Developed some applications/games utilizing AS3, PHP, Java EE, and other web buzz words</li>
<li>Did some Facebook app development (still doing some of this at work)</li>
<li>Worked on an iDevice game that got released</li>
<li>Participated in my first Global Game Jam</li>
<li>Started working on a secret project for a cool platform</li>
</ul><div>From reviewing what I've done over the past year it is easy to come to the conclusion that everything really was driven by what needed to get done at my day job. I put all my creative energy into my day job. When I had free time I would use it on spending time with friends and family and/or playing video games... and researching tech for my day job :-D.</div><div><br />
</div><div>It was still very rewarded and I feel I've grown in my craft from it, but something has been missing. I still plan on putting as much energy into my day job as last year, but something needs to change. I really miss working on my own projects. I haven't really created something that wasn't driven by a publisher, customer, or a boss in three years (since college). I've started hobbyist projects, but they never make it past the early stages. That's kind of sad and I'd like this year to be different.</div><div><br />
</div><div>I've been thinking about it for a long time and I'm going to try something that I still think is kind of crazy...</div><div><br />
</div><div><span class="Apple-style-span" style="font-size: large;">I will not play video games for a year.</span></div><div><br />
<a name='more'></a><br />
<br />
</div><div>It starts with games, but I would also like to cut out other things like idling in front of the TV and other non productive vices. These are the things that I have used way to much to "wind down" and I'd like to replace them with other activities. Reading tech blogs, designing a game concept for a hobby project, and actually following through with it. These are the sorts of things I'd like to incorporate into this year.</div><div><br />
</div><div>Why would I do that? I program video games, isn't it important to stay in touch with current video games? These are both good questions. I used to always say to my wife, "Hey get of my back, this is research!", jokingly of course. That statement is not a complete lie, but I would say about 80-90% of my game playing is purely recreational. I still plan to keep up with what is happening in the game space, but I'm going to put a stop to the multi-hour gameplay sessions.</div><div><br />
</div><div>Now on my commute to work I write game designs/plans down in my iPhone and read my blog subscriptions instead of melting my brain with angry birds. When I would usually unwind on the couch at the end of the day I now bring my laptop and develop ideas further and maybe even write some code (oh my god!). On days off instead of doing a 4-8 hour gaming session I'll get a decent amount of actual hobbyist work done.<br />
<br />
With little changes like these I'll be able to turn my personal ideas I want to develop into reality. The reward of making games is higher for me then playing them at this point in my life so this is a change that I've been thinking about for a long time. Now is the time to make the change and I feel it is for the better. Over one week clean I think I can kill my game playing addiction and turn it into a game making addiction instead. Here is to a year of productivity.</div>Anonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.com3tag:blogger.com,1999:blog-1531256779847586024.post-41245295408299264332010-11-29T21:07:00.002-05:002011-01-09T11:36:32.739-05:00Sea of ChaosIts been a long time (almost 9 months!) and life has been pretty crazy. Since March I have been working At DoubleTap Games on a game that just came out today. It was a wild ride and I grew so much from it. The game may not be my cup of tea, but I am proud of what we were able to accomplish with the small amount of time and resources we had. That game was <a href="http://www.cravegames.com/deadliestcatch/">"Deadliest Catch: Sea of Chaos"</a>.<br />
<br />
The game released today for PS3, XBOX 360 and Wii. Our studio developed the game for all three consoles at the same time. We also did most of the tech for the platforms ourself, so I got to play with all three at a low level. Since this was a three console release with a small team (less than ten people on average) and an 8 month development cycle you can imagine that it was kinda crazy. Nine months of radio silence should tell you something :-D. <br />
<br />
Towards the end I was bouncing from issue to issue across three different platforms so my station started to look like <a href="http://www.youtube.com/watch?v=0jJlrLU5fzI">Megadesk</a>.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/_57N9Hx1Y6PI/TPRXs2vpW6I/AAAAAAAAAJ0/F-UIaUaAVEE/s1600/iphone+050.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="298" src="http://1.bp.blogspot.com/_57N9Hx1Y6PI/TPRXs2vpW6I/AAAAAAAAAJ0/F-UIaUaAVEE/s400/iphone+050.JPG" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">MEGADESK!</td></tr>
</tbody></table><a name='more'></a><br />
This was the first console game I worked on. There is so many different things I implemented for this game I don't even know where to start. The most time was probably spent on implementing all the platform specific features and requirements. Trophies, achievements, player presence, video playback, disc eject, device removal, corrupt data and etc. The list really goes on and on.<br />
<br />
Another big thing I worked on was the advanced rendering for the PS3 and XBOX 360 platforms. By "advanced" I mean more then what we did for the Wii. Things like a basic shader pipeline for lighting, multi-texturing (bump, specular, etc.) and full screen pixel shading (blur and etc.). I also made improvements to the water rendering code that was started by another developer. This was really the first time I did rendering development outside of fixed function (yes I know, its about time). Last time I really worked on rendering code was at a company that only really did 2D titles on hardware that didn't have a shader model.<br />
<br />
On top of all the engine work I also did my fair share of game programming. I did the patch and set mini-games along with a bunch of misc. gameplay improvements throughout. If there is one area I wish I had more time to work on it would be the gameplay and user interface part of the game. Working on engine and tools is very rewarding to me, but nothing is more rewarding then working on something that directly affects the player's satisfaction with the game.<br />
<br />
I haven't touched the game's code in about a month now and it has been nice to get back to a normal work week. I wish I could write more about what I'm doing now, but of course that isn't possible :-(. Here is to maybe seeing more text around here. Stay Tuned!Anonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.com3tag:blogger.com,1999:blog-1531256779847586024.post-43137785015902439662010-03-17T23:03:00.001-04:002010-03-18T12:56:05.672-04:00New Job! Barely any time to post!Oh man. So I finally landed a full time gig in the Boston area. You are looking at the newest programmer for <a href="http://www.doubletapgames.biz/">DoubleTap Games</a>. Today was my third day and I love it. Looks likes I'll have the opportunity to work on some pretty cool things.<br />
<br />
For the past nine months I have been trying to get a job in the Boston area. Me and the wife took a chance and decided to move here and tough it out. It wasn't too tough though. I was lucky enough to have steady income from doing off-site work for a couple companies I had connections with. After forty two applications one finally landed me a solid interview.<br />
<br />
So if you are looking for a job somewhere you want to be for awhile, don't give up. It may take awhile, but persistence is key. If you don't put yourself out there then you are not allowing yourself to get lucky. <br />
<br />
It has been quiet around the ol' blog lately due to work picking up and trying to find a job. Assume that it will be the same for a bit. There are a bunch of drafts I want to flesh out, but they will have to wait. I'll be back.Anonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.com6tag:blogger.com,1999:blog-1531256779847586024.post-86732364045148494482010-02-04T15:35:00.006-05:002010-11-29T19:29:01.850-05:00Global Game Jam 2010 : PigmalionIn case you didn't know a cool thing happened over the weekend. A bunch of people from around the world made a bunch of games. I missed the first time this happened last year, but this year I vowed to not miss out. In roughly twenty eight hours me and five other hansom fellas (who I've never met) made a game. For my first "game jam" I'd say it went pretty well.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/_57N9Hx1Y6PI/S2suQPFDAJI/AAAAAAAAAJE/QaUMCNs2OW8/s1600-h/pigmalion.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="301" src="http://1.bp.blogspot.com/_57N9Hx1Y6PI/S2suQPFDAJI/AAAAAAAAAJE/QaUMCNs2OW8/s400/pigmalion.JPG" width="400" /></a></div><br />
<a name='more'></a>The game at its core is a stealth game (think original metal gear). You play a pig that is trying to get into the Barn Ball (like the things that fancy English people go to). To do so you need to sneak past farmers. You can pick up cloths to look less like a pig (and be less detectable). The trend of these kinds of posts seems to be to just list the good and bad things that happened. Thats the easiest way to break it down so I will be no different.<br />
<div><br />
</div><div><span class="Apple-style-span" style="font-size: x-large;"><b>What Went Well</b></span></div><div><b>The people were great/talented</b></div><div>It was really a treat to work with some great talent. To be honest I was scared I was going to be in a team that I would have to spend most of my time keeping together. This was not the case. I was able to fully code the entire time. This was due to some great project management done by Abe and others. The other coder on the project, Alec, was also very easy to work with. I was surprised to hear that he was only a sophomore at MIT, I guess those guys are smart ;-). The artist, sound guys and designer created some great stuff (check it out for yourself below).</div><div><b><br />
The game's core gameplay was simple</b></div><div>There was so many things that got designed for the game, but we were able to focus on the core. The core being: move around a scrolling world, farmers see you and try to turn you into bacon. I learned from this game jam that core gameplay is about all you should plan to get done.</div><div><b><br />
We had fun with it</b></div><div>The theme, style and premise of this game is obviously silly. This made it really fun to work on and kept motivation high throughout. I would not have had as good of a time if the game had a serious tone to it.</div><div><b><br />
Source control</b></div><div>From the start we used perforce (which I some how never ended up using before). Everyone knew how to use it besides me so it really worked out great. This kept us from having to worry about integration too much, as well as losing work.</div><div><b><br />
Flash</b></div><div>Developing a game quickly in Flash is very easy. This was the first game I made (hacked together) completely with Flash. Not only can everyone enjoy the game with relative ease via browser, but I know that we wouldn't have been able to integrate assets so quickly (within the final hour) without it.</div><div><b><br />
Nothing catastrophic happened</b></div><div>I was very paranoid that something crazy would happen. Art would not get delivered, sounds would be lost, or even complete gameplay functionality would be lost. We luckily didn't have anything like this happen.</div><div><b><br />
</b><br />
<div><span class="Apple-style-span" style="font-size: x-large;"><b>What Wasn't so Hot</b></span></div><div><b>Game scope</b></div><div>The game's scope when we began development on Friday was huge. This wasn't a terrible thing because we only really focused on the core stuff. However I can't help but wonder if the game would have been different if we would have tried to make a game that was more focused. It may have been better if the core gameplay was all that we wanted to do. That way any extra time could be spent actually polishing that core (as opposed to just adding more "stuff").</div><div><b><br />
Flex</b></div><div>Flex is a great way to program AS3, unfortunately I had little experience with it when starting the project. Why did I program in Flex? The other programmer was used to it, so that helped get more done. I am used to programming AS3 in the Flash IDE with the timeline etc. With Flex, the code is a bit less integrated with the assets. So I spent a little too much time trying to do things that I thought should work, but didn't work the way I expected in Flex. I would say I wasted a good 4 or so hours on learning how to use the tech the right way (or rather the way that worked :-D). That could have been used actually making the game better. I may go into the details in a future post, because I figured out some important things post-GGJ2010 which make me actually like Flex better.</div><div><b><br />
Getting down to the wire</b></div><div>We did a lot of things last minute. These things made the game a lot more presentable, but also caused some major bugs (as they should have). Thankfully we were able to get through the presentation by being careful, but I definitely fixed up some things afterwards so that I would be comfortable linking it to friends (or writing a post about it).</div><div><b><br />
Early playable available</b></div><div>The game was playable pretty much the second day. Unfortunately we did not set up a system for others on the team (besides programmers) to play the game and provide feedback. This feedback would have no doubt helped define the game a bit better before completion. Although a part of me actually thinks this might have been a good thing, because we (programmers) didn't have to deal with getting feedback (only the small, evil part though I promise ;-) ). </div><div><br />
</div><div><b>Didn't utilize enough known tech</b></div><div>This wasn't really the worst thing, but I would have liked to utilize <a href="http://pushbuttonengine.com/">PushButtonEngine</a> a bit more. I did integrate it a bit, but only for its sound manager, input manager and interface to <a href="http://www.box2d.org/">Box2D</a>. Those helped me out a bit, but it would have been nice to ONLY have to worry about gameplay. In the end I do believe we did the right thing and went with what was known at the time. There isn't too much time for learning how to use tools at a game jam. There is barely enough time to actually make a game.</div><div><br />
</div><div>As a whole I had an awesome time at the Global Game Jam. I participated at the MIT site which had lots of great people working at it. And of course when good people and game development collide there are always sweet results. Check it out for yourself!</div><div><br />
<div style="text-align: center;"><a href="http://michaelrapa.com/games/pigmalion.php">THE GAME</a></div><div style="text-align: center;"><br />
</div></div><div style="text-align: center;"><a href="http://www.globalgamejam.org/sites/singapore-mit-gambit-game-lab/games">My GGJ2010 Site's Games</a> </div><div style="text-align: center;">(My personal favorite is "RunRunRunJump")</div><div style="text-align: center;"><br />
</div><div style="text-align: center;"><a href="http://www.globalgamejam.org/2010/pigmalion">My GGJ2010 Game Page</a></div></div>Anonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.com1tag:blogger.com,1999:blog-1531256779847586024.post-39969773070306858292010-01-14T18:01:00.013-05:002011-06-12T13:42:12.001-04:00College Chronicles Part 4: Asteroids EvolutionImmediately after finishing <a href="http://resolveaswontfix.blogspot.com/2010/01/college-chronicles-katamari-arkanoids.html"><span style="font-family: inherit;">Katamari Arkanoids</span></a> I started work on the next assigned project in my class. This game was made in the same class as <a href="http://resolveaswontfix.blogspot.com/2010/01/college-chronicles-katamari-arkanoids.html"><span style="font-family: inherit;">Katamari Arkanoids</span></a>, Structures of Game Design (SGD), while attending Full Sail University. Everyone was assigned to make an Asteroids inspired game. This meant you could make any game that had something player-controlled that shot bullets.<br />
<br />
Making a traditional Asteroids game was something I always wanted to do. The big reason why was because it was my Dad's favorite game. I figured since my Mom and Dad were paying for all of this school that I should make something for them (sorry Mom). Because of all of this I chose to make a traditional asteroids game...with a few twists. Check it!<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/_57N9Hx1Y6PI/S04W_hGrRBI/AAAAAAAAAIA/nChs7WfeszM/s1600-h/ae_menu.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/_57N9Hx1Y6PI/S04W_hGrRBI/AAAAAAAAAIA/nChs7WfeszM/s320/ae_menu.JPG" /></a><a name='more'></a><a href="http://1.bp.blogspot.com/_57N9Hx1Y6PI/S04XAFR49vI/AAAAAAAAAII/mDUX0bn72LI/s1600-h/ae_play.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/_57N9Hx1Y6PI/S04XAFR49vI/AAAAAAAAAII/mDUX0bn72LI/s320/ae_play.JPG" /></a><a href="http://4.bp.blogspot.com/_57N9Hx1Y6PI/S04XBIv3PKI/AAAAAAAAAIQ/R1DpMxcqor0/s1600-h/ae_play2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/_57N9Hx1Y6PI/S04XBIv3PKI/AAAAAAAAAIQ/R1DpMxcqor0/s320/ae_play2.JPG" /></a></div><br />
This game was finished in June of 2006 and was worked on for about 4 weeks. It was the most feature rich game I made at the time. The game has all of the mechanics and features of the original Asteroids. The twist I mentioned earlier came in the form of weapon upgrades and bosses. The level was also completely scripted and has an end.<br />
<br />
Speaking of scripting, I created a simple Command-Based Scripting Language and interpreter to allow the game to be tweaked easily. Prior to starting this game I read a lot of the book <a href="http://www.amazon.com/Scripting-Mastery-Premier-Press-Development/dp/1931841578">Game Scripting Mastery</a> (which I highly recommend) and thought that it would be cool/helpful to implement Command-Based Scripting for this game. I had a lot of fun making it and the work I did in this game helped me better utilize scripting solutions in future projects.<br />
<br />
Some other underlying tech that I made on this was a message system and memory manager. They were actually hard requirements for the project. From looking at the code it is clear I didn't understand the meaning of a message system. The message system was completely coupled with the main game class and hardly used. The memory manager was useful. I remember actually tracking down issues by using it to report how much memory was being used. Template functions to allocate and deallocate memory isn't how I would do it now. Overloading new/delete would have been a more elegant approach in my opinion. I also did not do anything cool with the memory manager like allocate a huge chunk up front, or keep memory from being fragmented, or really anything extra besides allocating/deallocating.<br />
<br />
Most of the code was from my <a href="http://resolveaswontfix.blogspot.com/2010/01/college-chronicles-katamari-arkanoids.html">previous game</a> and was unchanged. It is clear I focused mostly on adding new tech and game features. This makes sense due to time constraints, but had the adverse effect of transferring the same flaws over to this project. Which means there are singletons a plenty and coupling galore. However, I will admit that there is something special about hacking something together and having a game come out the other end.<br />
<br />
I almost forgot about my favorite thing I did for this game. This was the first game I implemented a particle engine for. A <a href="http://robwalkerdme.blogspot.com/">friend</a> of mine had made a particle engine for his pong game (same time as <a href="http://resolveaswontfix.blogspot.com/2009/12/college-chronicles-extreme-pong-2.html">Extreme Pong 2</a>) and it made me very jealous. Earlier in the year I had read a book called <a href="http://www.amazon.com/OpenGL-Programming-Prima-Techs-Development/dp/0761533303/ref=sr_1_17?ie=UTF8&s=books&qid=1263411626&sr=1-17">OpenGL Game Programming</a>, which had a section on how to make a simple particle engine. Definitely not an ideal implementation, but it was a way for me to wrap my head around the idea.<br />
<br />
The particle engine was just a particle object and a class that manages the particles. With my implementation you could create a new particle effect by extending the manager class and making your own update logic. This is not how it should be done as you have to hand code the effects, but you gotta walk before you can run. It was quick and easy to do and time was something I didn't have much of. Stay tuned to later Chronicles as particle engines is something I have a bit of a fetish with for the rest of my stay at Full Sail University (and to this day).<br />
<br />
I did do some code maintenance before I posted and it wastn't too bad. As usual there are many comical and silly codez to be seen. I STILL hadn't made or utilized a math library at that point so there are lots of sweet inline algorithms that made the code hairy. It is not just lack of a math library either. There is code duplication everywhere. One feature I added before posting was the ability to give the ship reverse thrust. The input code for the ship had this same block that had to be called for each case and I had missed one line of it when I copied it for the Nth time. It took me couple of minutes to figure it out.<br />
<br />
These snippets made me laugh:<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/_57N9Hx1Y6PI/S04tntuOBLI/AAAAAAAAAIY/k5y_RTiKd8w/s1600-h/ae_code1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/_57N9Hx1Y6PI/S04tntuOBLI/AAAAAAAAAIY/k5y_RTiKd8w/s640/ae_code1.JPG" /></a><br />
</div><br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/_57N9Hx1Y6PI/S04tntuOBLI/AAAAAAAAAIY/k5y_RTiKd8w/s1600-h/ae_code1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a><a href="http://2.bp.blogspot.com/_57N9Hx1Y6PI/S04toc-4_uI/AAAAAAAAAIg/EXnowacFJww/s1600-h/ae_code2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/_57N9Hx1Y6PI/S04toc-4_uI/AAAAAAAAAIg/EXnowacFJww/s640/ae_code2.JPG" /></a><br />
</div><br />
Overall the code isn't too bad. Don't get me wrong, its terrible by my current standards, but I can always say that I've seen worse (more on that in a future post).<br />
<br />
I learned a lot with this game. Going back and analyzing it today I have also learned something. Now that I think about it, this was the last game I made from start to finish 100% on my own. There is something very special about making a game with only your means. Some parts are pretty bad like sounds or graphics or design or code (unless you're <a href="http://www.quelsolaar.com/">crazy</a>), but dammit they were made with my own hands. He didn't help me, She didn't help me, not even YOU helped me. I did it on my own!<br />
<br />
P.S. Sorry no "how to" instructions in-game, check out the "ReadMe.txt" in the "bin" folder for the controls.<br />
<br />
Game Download(Windows):<br />
<span style="color: #333333;"><span style="line-height: 16px;"><a href="http://www.resolveaswontfix.com/projects/rawf_asteroids_evolution.zip">Asteroids Evolution - Game and Source</a></span></span><br />
<br />
Game Video:<br />
<div class="separator" style="clear: both; text-align: center;"><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/XqTy6MqLjj8&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/XqTy6MqLjj8&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
</div>Anonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.com3tag:blogger.com,1999:blog-1531256779847586024.post-48010735776074371142010-01-08T21:22:00.062-05:002013-04-17T07:02:16.723-04:00College Chronicles Part 3: Katamari ArkanoidsOnly two months after <a href="http://resolveaswontfix.blogspot.com/2009/12/college-chronicles-extreme-pong-2.html">Extreme Pong 2</a> I got to a class called Structures of Game Design (SGD). In this two month class we got a crash course in designing games from the ground up. We learned about breaking things down into easily maintainable features that we could use to mark progress. We also learned a bit about taking all the things we had learned so far in the program and applying it to a game. This included using DirectX (previous class), vector math, using data to drive your game, and many other techniques and technologies.<br />
<br />
Everyone in the class was tasked with a project for the first month. This was to make an Arkanoids/Breakout type game using the material that was taught in class. At the time I could tell that Toni (my girlfriend at the time, now wife) was getting a bit frustrated with my amount of free time (which was zero). I knew it was only going to get worse so I wanted to get her involved so I could spend more time with her. I am no game designer by any means, but I can roll with ideas.<br />
<br />
I explained the project and asked her how I could make something she would like to play. She simply said, "Just make Katamari", which I think was a joke (we had been playing it a bit at the time). That peaked my interest, and this is what came out of it:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/_57N9Hx1Y6PI/S0fsaI42boI/AAAAAAAAAHo/XNZ7Cw4zGKs/s1600-h/ka_main_menu.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/_57N9Hx1Y6PI/S0fsaI42boI/AAAAAAAAAHo/XNZ7Cw4zGKs/s320/ka_main_menu.JPG" /></a></div>
<a name='more'></a><a href="http://2.bp.blogspot.com/_57N9Hx1Y6PI/S0fsbNjIhMI/AAAAAAAAAHw/dxulykc9I2Y/s1600-h/ka_play.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/_57N9Hx1Y6PI/S0fsbNjIhMI/AAAAAAAAAHw/dxulykc9I2Y/s320/ka_play.JPG" /></a><a href="http://1.bp.blogspot.com/_57N9Hx1Y6PI/S0fsc9ogR3I/AAAAAAAAAH4/Y1u9syORhwM/s1600-h/ka_game_over.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/_57N9Hx1Y6PI/S0fsc9ogR3I/AAAAAAAAAH4/Y1u9syORhwM/s320/ka_game_over.JPG" /></a><br />
<br />
This game was the result of about three weeks of development. Making it is one of my fondest memories from Full Sail University. I really had a lot of fun making it. The design was simple. The Katamari guy's head is the paddle and the ball is the ball he rolls around. Instead of breaking the bricks you collect them up and your ball gets bigger. You can only pick up bigger objects once your ball gets big enough. The goal was to steal all the gameplay from the Katamari and make it an Arkanoids game. I believe I succeeded.<br />
<br />
There was some cool (at the time) tech I got to make for this game. I came up with a level file format which consisted of ascii art (OMG file IOz). The level editor was literally whatever raw text editor I had. I created a readme that tells you everything you need to know to make your own levels. You can check out the scripts folder for more info. It was also a lot of fun figuring out all the math needed for the collisions and how to have the ball collect objects and get bigger over time. This was also my first DirectX game, but I only utilized the Sprite interface of DirectX.<br />
<br />
Once again I did all the art/sound stealing/modifying/creating. The goal was to be more professional in the asset part of the game this time around (ignore previous sentence). All the art is authentic Katamari art, which I tweaked with my photoshop skills. I did create some objects myself, but they are the simple ones. The sound is also straight from the source. I remember running the game and recording the sounds with windows recorder and my awesome 20$ desk mic straight from the Television's speakers. Surprisingly it worked out. I did use my voice for one effect in the game. Lets just say I couldn't find a good vacuum-like sound.<br />
<br />
The code this time got a lot better. the code was also documented much better. I actually fixed some issues before this post and didn't have a hard time navigating the code (thought I'm probably biased because I coded it). Unfortunately it is apparent I was still learning. There is still no math library being utilized! I knew the math, but for some reason I didn't understand how terrible it was to have all the details just written inline (yet anyway).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/_57N9Hx1Y6PI/S0elMgJFWLI/AAAAAAAAAHA/8ben5ZhjGRY/s1600-h/ka_codesnippet1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/_57N9Hx1Y6PI/S0elMgJFWLI/AAAAAAAAAHA/8ben5ZhjGRY/s640/ka_codesnippet1.JPG" /></a></div>
<br />
I utilized inheritance a bit more and had all the game objects derive from a common base to simplify rendering etc. Although it seems I made child classes just to discern the objects from each other. I am even using Run-Time Type Information(RTTI) to test the type of object an entity is for collision etc. I probably only used it because it was something taught to us during that month, I don't believe I've used it since.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/_57N9Hx1Y6PI/S0elOXlE81I/AAAAAAAAAHI/wHKxPjfls88/s1600-h/ka_codesnippet2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/_57N9Hx1Y6PI/S0elOXlE81I/AAAAAAAAAHI/wHKxPjfls88/s640/ka_codesnippet2.JPG" /></a></div>
<br />
It also seems that I was taught the singleton pattern during the creation of this game. From doing a search I find a total of six singleton classes. It seems that whenever I needed to do something new I made a "Manager" and created it as a singleton, for the sole purpose of globally accessing it. Thankfully that was just a phase.<br />
<br />
As is was noted earlier this game holds a lot of my fondest memories of school. When I finished this game I knew this was something I could see myself doing for a lifetime. It was the first game I made that people actually wanted a copy of on their computer. Whenever it got real tough at school (which you will find out in later posts) and I felt like maybe this kind of work wasn't for me, I would remember this game and it would push me forward. Not bad for approximately seven months of programming experience in my opinion. What do you think?<br />
<br />
P.S. Sorry no "how to" instructions in-game, check out the "ReadMe.txt" in the "bin" folder for the controls. Oh yeah, Hey NAMCO BANDAI Games ! I can totally make a bad ass version for you guys if you like this one :-D.<br />
<br />
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
Game Download(Windows):</div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<a href="http://www.resolveaswontfix.com/projects/rawf_katamari_arkanoids.zip">Katamari Arkanoids - Game and Source</a></div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<br /></div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
Game Video:</div>
<div class="separator" style="clear: both; text-align: center;">
<object height="344" width="425"><param name="movie" value="http://www.youtube.com/v/UmsAwvAEEoE&hl=en_US&fs=1&"></param>
<param name="allowFullScreen" value="true"></param>
<param name="allowscriptaccess" value="always"></param>
<embed src="http://www.youtube.com/v/UmsAwvAEEoE&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></div>
Anonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.com0tag:blogger.com,1999:blog-1531256779847586024.post-38088356956646636912009-12-15T15:39:00.011-05:002010-01-11T16:50:24.736-05:00College Chronicles Part 2: Extreme Pong 2Two months after I made the first <a href="http://resolveaswontfix.blogspot.com/2009/12/my-first-game-extreme-pong.html">Extreme Pong</a> I got to Windows Programming at Full Sail University. In this two month class I learned my way around the Windows API. GDI, string tables, resource files, icons, windows and the list goes on. During the first month of the class we were tasked with taking the knowledge we learned and applying it to a simple pong game outside of class. Since I already made a pong game at the point I decided a sequel was in order. Extreme Pong II was it.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/_57N9Hx1Y6PI/Syfl8mFT5UI/AAAAAAAAAG4/oRXJ5tn6ci4/s1600-h/ep2_title_screen.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/_57N9Hx1Y6PI/Syfl8mFT5UI/AAAAAAAAAG4/oRXJ5tn6ci4/s320/ep2_title_screen.JPG" /></a><a name='more'></a><a href="http://2.bp.blogspot.com/_57N9Hx1Y6PI/Syfl8PxED2I/AAAAAAAAAGw/lI3tyTbcmIQ/s1600-h/ep2_play.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/_57N9Hx1Y6PI/Syfl8PxED2I/AAAAAAAAAGw/lI3tyTbcmIQ/s320/ep2_play.JPG" /></a><a href="http://1.bp.blogspot.com/_57N9Hx1Y6PI/Syfl674MaPI/AAAAAAAAAGo/HettFDfMPiA/s1600-h/ep2_game_over.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/_57N9Hx1Y6PI/Syfl674MaPI/AAAAAAAAAGo/HettFDfMPiA/s320/ep2_game_over.JPG" /></a></div><br />
The date on this sucker is around March of 2006. You'll notice the graphics have improved a bit from the <a href="http://resolveaswontfix.blogspot.com/2009/12/my-first-game-extreme-pong.html">first game</a>. That is thanks to the <i>"awesome"</i> GDI rendering and bitmap graphics. All art in this game is actually created by me (as if I could find an artist that could create such atrocities). The sound is taken care of by fmod, myself and Coheed and Cambria. There are also some obscure features such as toolbar and options to save and load the score for the game. This is due to the game being used as a way to learn the Windows API.<br />
<br />
The game features the standard <i>Volley Ball</i>, but I added in other balls to spice it up. I called these balls: Death Balls. The paddles also have armor. When you get hit by a <i>Death Ball</i> your armor becomes damaged. If damaged too much the paddle's <i>Private Areas</i> are revealed. If the <i>Private Areas</i> are hit by a <i>Death Ball</i> it is game over. You can also win by getting ten points.<br />
<br />
The biggest aspect of gameplay I'm disappointed by is the AI for the opposing paddle. It simply tracks the ball so the only way to win by score is by hoping the <i>Death Balls </i>hit the ball into the goal before the paddle can get to it. Again my focus was more on learning the tech then making a fun game :-(.<br />
<br />
Looking back at the code I unfortunately reused a lot of the game physics/collision (or rather lack there of) from the <a href="http://resolveaswontfix.blogspot.com/2009/12/my-first-game-extreme-pong.html">first game</a>. I imagine this was done so I could focus on the rendering and new tech I was working with (Windows API). It is humorous to look at regardless, here is a snippet:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/_57N9Hx1Y6PI/Syfc0M5jGBI/AAAAAAAAAGY/C1dfeHangPA/s1600-h/ep2_codesnippet.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/_57N9Hx1Y6PI/Syfc0M5jGBI/AAAAAAAAAGY/C1dfeHangPA/s640/ep2_codesnippet.JPG" /></a><br />
</div><br />
It also seems that I attempted to used class inheritance, but to very little effect. Refer to the different ball types that derive from the base ball class. All they do is set a bool that discerns the two for damage/point checking.<br />
<br />
This time around I tried to improve my commenting standard. Pretty much all function's input and output are commented in detail. I didn't do very well with managing my TODO comments however. A lot of them are still in the code even though things are implemented, or changed. There was also some comments that were more interesting then informative.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/_57N9Hx1Y6PI/Syfdpzpo7sI/AAAAAAAAAGg/1Z7dmkMv2s4/s1600-h/ep2_codesnippet2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/_57N9Hx1Y6PI/Syfdpzpo7sI/AAAAAAAAAGg/1Z7dmkMv2s4/s640/ep2_codesnippet2.JPG" /></a><br />
</div><br />
I was once again surprised at the code, but in a bad way. I thought I would have improved more upon what I did in the <a href="http://resolveaswontfix.blogspot.com/2009/12/my-first-game-extreme-pong.html">first pong game</a>. Time-line wise, this is only two months after my <a href="http://resolveaswontfix.blogspot.com/2009/12/my-first-game-extreme-pong.html">Extreme Pong</a>. I also had to worry about learning the course material to get the grade I wanted. This comes across in the code pretty clearly. I can tell there are some areas where I am experimenting, which makes sense. At the time I had only been coding C/C++ for about five months. When that is taken into account I am pretty impressed with what I was able to accomplish.<br />
<br />
Game Download(Windows):<br />
<a href="http://www.resolveaswontfix.com/projects/rawf_extreme_pong_ii.zip">Extreme Pong 2 - Game and Source</a><br />
<br />
Game Video:<br />
<div class="separator" style="clear: both; text-align: center;"><object height="344" width="425"><param name="movie" value="http://www.youtube.com/v/Px5R3vfXRRE&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Px5R3vfXRRE&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></div>Anonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.com2tag:blogger.com,1999:blog-1531256779847586024.post-15187938455496002432009-12-12T13:46:00.002-05:002010-01-09T08:50:00.246-05:00YouTube Channel is LiveI finally took the time to create a YouTube Channel. I will be using it to host video of the projects I've done in the past. Since most of the games I've made in the past are either on Windows or Linux I don't want your system to keep you from at least being able to witness them. I also want to be able to show more then screen shots of the games I may not be allowed to release source or even an executable form of. Not to mention people that don't like downloading things can now enjoy my games. All that is up right now is Extreme Pong, but expect a video to go up along side all future project posts. I have also provided a few links to it along the side bar. Check it!<br />
<br />
<a href="http://www.youtube.com/user/amelcher1188">YouTube Channel</a>Anonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.com0tag:blogger.com,1999:blog-1531256779847586024.post-24963641260558499552009-12-07T13:20:00.023-05:002010-01-11T16:51:18.224-05:00College Chronicles Part 1: Extreme PongOkay I've been doing this little shindig for awhile and its time to switch it up a bit. I recently read a <a href="http://robwalkerdme.blogspot.com/">friend's blog</a> which had a number of posts of the things he did in college. That got me thinking that it is about time I take you through the programming history of Aaron (me). <br />
<br />
The time stamp for one of the files in this game is January 15th, 2006. WOW, has it really been that long? I do recall working on it through Christmas. Four years ago I was attending Full Sail University and was in my third month of C++ programming. This was the last month of nose-to-the-books C++ learning before we moved on to other areas of C++ (like using it with OpenGL, DirectX, Lua, etc.).<br />
<br />
Durring the last month of the course there was an optional assignment to use your current knowledge (2 months of C++ basics) to create a game to show off to the class (aka rub in their faces). Since it was my goal to squeeze as much learning out of the 80k school cost as I could, I couldn't pass up the opportunity (plus I got to rub it in people's faces).<br />
<div style="text-align: center;">So here it is in all its glory:<br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/_57N9Hx1Y6PI/Sxu5jbUTWaI/AAAAAAAAAF8/aOB17SINz30/s1600-h/extreme_pong_s1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/_57N9Hx1Y6PI/Sxu5jbUTWaI/AAAAAAAAAF8/aOB17SINz30/s320/extreme_pong_s1.jpg" /></a><a name='more'></a><a href="http://3.bp.blogspot.com/_57N9Hx1Y6PI/Sxu5kazcxTI/AAAAAAAAAGE/2jtfu-l0bp0/s1600-h/extreme_pong_s2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/_57N9Hx1Y6PI/Sxu5kazcxTI/AAAAAAAAAGE/2jtfu-l0bp0/s320/extreme_pong_s2.jpg" /></a><a href="http://4.bp.blogspot.com/_57N9Hx1Y6PI/Sxu5lMoGytI/AAAAAAAAAGM/nz0mx2_wJBY/s1600-h/extreme_pong_s3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/_57N9Hx1Y6PI/Sxu5lMoGytI/AAAAAAAAAGM/nz0mx2_wJBY/s320/extreme_pong_s3.jpg" /></a></div><br />
<div style="text-align: center;">That is right ladies and gentlemen, sweet console lovin'.<br />
</div><br />
The instructor of the class, Arthur Johnson, made a cool C++ console module that made it really easy to render ascii art to the screen and mask it with colors. Besides that it was all made by me.<br />
<br />
Lets talk about the code for a bit. The code in short, is the worst. I learned how to do classes during the production of it so the game has a "Pong" class, that is it. At this point I had no understanding of design patters or any inkling about how to properly use classes to make code sane.<br />
<br />
Another thing I remember is that I didn't use linear algebra for the ball or paddle movements. This means that the directions were hard coded +/- pixels. This also means that the way I figured out how to move the ball was based of a bunch of if-checks and bools that I would toggle in specific cases. I remember coming up with all this crazy logic just to change the state of the ball's angle movement.<br />
<br />
//used to tell which way the ball is going(left, right, up, down).<br />
bool rightBl, leftBl, upBl, downBl;<br />
<br />
//bools used to tell if the ball is doing a steep angle or inclined.<br />
bool steep, inclined;<screen bools="" crazy="" movement="" of=""><span style="font-family: inherit;"><span style="font-family: inherit;"> </span></span></screen><br />
<br />
<screen bools="" crazy="" movement="" of=""><span style="font-family: inherit;"><span style="font-family: inherit;">Check out the source (more info below) if you are curious of how I used them (its pretty rediculous).</span></span></screen><br />
<br />
You'll notice there is fancy intro and credit effects (yeah, moving is an effect). Those were all done with for-loops and sleeps. I feel pretty embarrassed sharing this with the world, but I believe in the circumstances I did a stand up job :-). I remember at the time thinking everything I was doing was completely incorrect. I didn't care though, I wanted to MAKE A GAME!!! I had spent enough time painting the fence and waxing the floor, I wanted to kick some ass.<br />
<br />
//opening sequence.<br />
for (int i = -60, j = 15; i != 15; i+=1)<br />
{<br />
Sleep(30);<br />
con.show(logo,i,j);<br />
}<br />
<br />
PlaySound("flick",0,SND_ASYNC);<br />
Sleep(1000); <br />
<br />
I also abused the hell out of the windows function PlaySound(). The craziest thing I did was the credits. Instead of playing some music and scrolling credits I thought it would be funny to announce them with my voice while music played in the background. The code basically laid out as follows: PlaySound(), for loop effect, repeat. Since I was just playing a single wave I recorded my voice with music playing in the background. Because it was play->scroll->play I had to split the credits up into multiple files. This also meant that I recorded the thing in one take.<br />
<br />
I did this by pressing play on the music and recording. I would say my bit about the section, then pause and stop recording. Then repeat the process until I was done. It kinda worked, but it also made what I said ridiculous, because I was basically free styling (which you don't want me doing). Unfortunately I think I may have lost those files (embarrassment--). This is probably due to removing them from the folder I would give to friends and family (20+ megs of waves).<br />
<br />
That is about all I can remember. If you want to play it for yourself all you need is Windows XP or better (I don't mean mac :-P ). I will be keeping a project link list on the sidebar from now on. Looking back at the code today I was actually surprised at its quality. I thought it would be completely unreadable and obscure (it mostly is). Originally I was going to just post the game, but for you're amusement you can also check out the source (in the same download).<br />
<br />
Game Download(Windows):<br />
<a href="http://www.resolveaswontfix.com/projects/rawf_extreme_pong.zip">Extreme Pong - Game and Source</a><br />
<br />
Game Video:<br />
<div class="separator" style="clear: both; text-align: center;"><object height="344" width="425"><param name="movie" value="http://www.youtube.com/v/mgZWe4_H6hg&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/mgZWe4_H6hg&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></div>Anonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.com0tag:blogger.com,1999:blog-1531256779847586024.post-73716648238109663772009-11-28T18:00:00.004-05:002009-11-28T18:46:32.709-05:00New Job! Two Week Notice ReflectionMy first week at my new game dev gig is coming to an end and I just wanted to reflect a bit. For those who do not know I have moved on to newer and more interesting work (in my opinion). This means I have been busy resolving loose ends at the old job and prepping for the new (reason why little to no content is being posted). The new job is great, really can't talk too much about what I'm doing specifically (at least I am not sure I should), If you really care just ask me in real life or something.<br />
<br />
This was my first game dev job change so I wanted to take a bit to reflect on the transition. The last three weeks have been rather interesting. When you give your two weeks at a job it is kind of a big deal and I didn't want to screw it up. Burning bridges was part of it, but it was mostly because I honestly loved the job and didn't want to be <i>that guy</i>. I don't think anyone really wants to be <i>that guy</i>.<br />
<br />
<a name='more'></a>Who is <i>that guy</i>? Well to me <i>that guy</i> is the guy who leaves with a bunch of loose ends you have to clean up. It is usually nothing fun and results in you cursing the person (especially if you didn't know him well). From recently trying to avoid being <i>that guy</i>, I found out that it is pretty tough. Though I did my best to prevent it, I fear that in a few months I will become <i>that guy</i> to some of my previous co-workers.<br />
<br />
I am pretty confident I was a great employee the past two and a half years. I busted my ass trying to become <i>the man </i>(as opposed to <i>that guy)</i>, which I believe I became for AMI towards the end. When people were stuck on something or didn't know why <i>this </i>or<i> that </i>happened, I always had an answer. Unfortunately I believe this may be a huge factor we me becoming <i>that guy</i> in a few months.<br />
<br />
You see when you are the go-to-guy (<i>the man)</i>, some can become a bit dependent on that. Towards the end I realized this and challenged people to figure out things on their own, but I fear it may have been too little too late. It is much easier to remember information if you had to deal with some shit to figure it out (for most I believe). By providing answers too easily for a good while I fear I may have contributed to becoming <i>that guy</i>.<br />
<br />
It goes back to that old saying "give them a fish and you will feed them for a day, teach them to fish and you will feed them forever." I was the guy with the fish and I would give it out way too often. So with my final two weeks I made it my mission to at least soften the blow of being <i>that guy</i> to those still at AMI.<br />
<br />
This is the mantra I followed:<br />
<ul><li>Do not write new code</li>
<ul><li>If you must then thoroughly review it with your lead and co-workers</li>
</ul>
<li>Dump any analog notes digitally for all to have access</li>
<li>Dump important information you are in charge of (account information etc.) <br />
</li>
<li>Hold various meetings to present important work you contributed that will need to be maintained</li>
<li>Hold various meetings to review documentation you have created in your time at the company</li>
<li>Followup on feedback from your peers</li>
</ul>The first bullet is pretty important. If you are leaving, any new code you you write will need to be picked up by your co-workers. Last thing I wanted to do was increase the amount of code that needed to be maintained by others. I kept a lot of notes on paper, this helped me remember things better. It was also much easier for me to scan my wall for the things I need to know or do then search through wikis and the like. A lot of useful information was on those papers that I others could utilize.<br />
<br />
You can't simply leave bread crumbs for your peers to find. This is why I held a number of meetings presenting the important information. I would review the wikis I wrote up and give them a chance to voice their concerns or ask about something unclear. This helped improve the documentation as well as give my co-workers some advance knowledge which will be useful if/when they deal with what I've left behind.<br />
<br />
Some may say if you're doing your job right you should be able to quit any day. This is of course because you are always sharing knowledge and not hording information. It is something I strive for, but I think it is very far from reality. Pair programming helps with this as does simply working with others in general. There are always going to be information that is picked up by some and not by others due to certain situations.<br />
<br />
Ultimately I think two weeks isn't enough time to keep yourself from becoming <i>that guy</i>. You have to actively think: If I were to quit right now, would I be <i>that guy</i>? If it is yes, then you need to think about what you can do now to prevent that. Keep more digital documentation, show people weird quirks and crazy issues you come across. Instead of silently fixing something crazy or adding something useful, gloat about it and rub it in the faces of those around you (nicely). They will thank you later or at the very least forget about you, which is the next best thing.<br />
<br />
Thanks AMI for all the good times. No thanks for the times that were not so hot. Good luck to those I left behind.Anonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.com0tag:blogger.com,1999:blog-1531256779847586024.post-89005279375795768352009-11-19T23:10:00.003-05:002009-12-10T11:25:09.339-05:00Excuse for Tardiness: Call of Duty Modern Warfare 2It has been awhile since I've made a post so I must do my <i>duty</i> (HAH) of excusing myself. This game was the main reason why I haven't posted in awhile, but I have also been busy with other things I will highlight in a future post (soon). It seems as though I am certainly not the only one who has this excuse. Just check out <a href="http://www.gamespot.com/news/6240625.html">this</a>, or <a href="http://news.vgchartz.com/news.php?id=5826">that</a>.<br />
<a name='more'></a><br />
Numbers and records aside, is this game any good? Well I sure hope so if I have already played 2 days worth of multi-player hours (damn I could have cured cancer). Seriously though, if you are looking for a really polished improvement over the original Modern Warfare then this game overdelivers.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/_57N9Hx1Y6PI/SwYWAW2d7kI/AAAAAAAAAF0/2e-Bj4ipe4s/s1600/CODMW2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/_57N9Hx1Y6PI/SwYWAW2d7kI/AAAAAAAAAF0/2e-Bj4ipe4s/s400/CODMW2.jpg" /></a><br />
</div><br />
This is the first game in a long time that I have seen hyped this much and actually deliver. I didn't go to sleep the night it came out and enjoyed every second of play. Speaking of midnight release, if you were at one it may have looked something like this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/_57N9Hx1Y6PI/SwYTEa-zHwI/AAAAAAAAAFM/Nr3pdubVxlw/s1600/IMG_0033.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/_57N9Hx1Y6PI/SwYTEa-zHwI/AAAAAAAAAFM/Nr3pdubVxlw/s320/IMG_0033.JPG" /></a> <a href="http://4.bp.blogspot.com/_57N9Hx1Y6PI/SwYTIZR27yI/AAAAAAAAAFU/qDn3gMfLfZ4/s1600/IMG_0034.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/_57N9Hx1Y6PI/SwYTIZR27yI/AAAAAAAAAFU/qDn3gMfLfZ4/s320/IMG_0034.jpg" /></a><br />
</div><div class="separator" style="clear: both; text-align: center;"> <a href="http://2.bp.blogspot.com/_57N9Hx1Y6PI/SwYTKFl1WyI/AAAAAAAAAFc/524fvsKx63w/s1600/IMG_0035.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/_57N9Hx1Y6PI/SwYTKFl1WyI/AAAAAAAAAFc/524fvsKx63w/s320/IMG_0035.jpg" /></a> <a href="http://4.bp.blogspot.com/_57N9Hx1Y6PI/SwYTMUh2OjI/AAAAAAAAAFk/8vgjnGF5I7U/s1600/IMG_0036.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/_57N9Hx1Y6PI/SwYTMUh2OjI/AAAAAAAAAFk/8vgjnGF5I7U/s320/IMG_0036.jpg" /></a><br />
</div><br />
I knew that the game was going to be a big seller when I couldn't even see gamestop at my position in line. The parking lot was full and the line didn't seem to get any shorter even though people were getting their copies. People would leave and more would take their place to to get a copy. When I finally made it up to get mine I was greeted by this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/_57N9Hx1Y6PI/SwYTOOo8N6I/AAAAAAAAAFs/h7OEGq36kuw/s1600/IMG_0037.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/_57N9Hx1Y6PI/SwYTOOo8N6I/AAAAAAAAAFs/h7OEGq36kuw/s320/IMG_0037.jpg" /></a><br />
</div><br />
The employees in full camo, haha. As I walked out with my copy I overheard one of the employees say, "30 minutes for 300+ pre-orders, not bad." 300+ people were at a midnight release!?!?!?! THIS IS SPARTA (sorry, I couldn't help it)!!<br />
<br />
This game isn't for everyone though. If you're into super twitch frag fests like quake or unreal tournament, this is not that game. This game is more like Socom: Navy Seals or Counter Strike. You set up your character to fit your play style and you get in there and you kill. Get enough kills in a row and you get to perform special abilities. Die enough and you get a perk to help you out. There is just so much depth to the multiplayer there is no way to explain it all.<br />
<br />
I still haven't even played the co-op special forces missions (which I hear are awesome). It is a few weeks after release and I still feel like there is much more to experience in this game. I am also very impressed that Infinity Ward made this game in only 2 years, hats off to those crazy guys. They better have profit share :-$.Anonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.com1tag:blogger.com,1999:blog-1531256779847586024.post-46324798222583860672009-10-30T17:50:00.002-04:002009-10-30T17:53:46.510-04:00Dev Diary: Flash Business<span style="font-size: small;">Since starting my flash game at the begining of this week I have been doing a lot of research on how to properly deploy it. In the process I learned way more then expected. At first the goal was to find an easy way to distribute the game properly and see what I could bring in from MochiAds. Little did I know the options that were out there.</span><br />
<br />
<span style="font-size: large;"><span style="font-size: small;">Let me take you step by step through my journey (for those of you not interested in my journey you can find all the useful Flash business links below).</span></span><br />
<br />
<a name='more'></a><br />
<span style="font-size: large;">Funding</span><br />
Funding for my free to play flash game? I could not believe the answer to this question was a maybe. Having established (good) Flash street-cred the answer to that question usually is a yes. If you have a presentable demo of your final project it seems the answer can be yes as well.<br />
<br />
Now lets be clear, the funding does not seem to be enough to supplement a day job's income. That fact aside it does seem to be enough to counteract the cost of development (not counting the cost of your time). I plan on attempting to raise enough money to pay for the tools and software I am using (I am on a trial at the moment). It may also be possible to raise enough to cover the cost of the art polish I will need (the game will not be art heavy).<br />
<br />
<span style="font-size: large;">Protection</span><br />
Protecting my IP and physical work (art and code) was something I was looking to address. I found some great resources (which will be summarized at the bottom) that covered all these bases. Copyrighting, encrypting and generally keeping you stuff from getting stolen.<br />
<br />
It was very surprising to discover the high degree of Flash game theft out there. As I said earlier, I really did not know that flash games were such a hot commodity. If you do not go through the steps to protect your game, there is nothing you can do to stop them from using you game for whatever they please.<br />
<br />
On a software note, it is incredibly easy to reverse engineer a flash game. If you do nothing to prevent this it is as easy as importing the swf file into Flash CS#. Fortunately there are some pretty easy things you can do to (mostly) prevent this. Maybe this is not a huge issue for someone who hasn't really written too much code for their game. In my case my codes are my babies and I do not want anyone taking them.<br />
<br />
<span style="font-size: large;">Sponsorship</span><br />
This is something I knew almost completely nothing about. Portals will actually give you money for your game. It makes sense. Get more games on your portal and get more traffic. It is more then just that. The portals want to pull revenue from other sites. So they pay you some money to put branding and links in your game to they get more visitors.<br />
<br />
Now I thought the amount they pay could not be anything huge, maybe a few hundred at most. While some games do only get a few hundred, if the game is of good quality the amount was in the thousands. Wow! I could not believe it. Okay, again not enough to quit the day job, but damn. That is great for someone doing it as a hobby. Not to mention the students out there churning out decent games. I personally would have prefered it over working in retail.<br />
<br />
<span style="font-size: large;">Deployment</span><span style="font-size: large;"></span><br />
This was the main topic of my research and I was happy with what I found. It seems these days deployment and distribution is pretty much automated. Depending on your sponsor (if you can get one) they will do a lot of the leg work for you. It makes sense since they want your game to get their portal more visits. There are also some special portals out there that you need to get more detailed with. I am mostly talking about Kongregate and the importance of integrating their API. They also do cool things for you like share ad revenue and have regular cash prizes if your game gets rated well.<br />
<br />
If you are going it alone then there are still some things to help you out. MochiAds has gotten really great over the years. When I first played with it it was pretty basic. Now they have all sorts of goodies. You can track analytic information, sell in-game treats for $$, and even have them distribute the game for you. If you need to update the game you simply give them the new swf file and it will update all the portals you are on.<br />
<br />
I can not wait to try out all this stuff on my own. There is something I find very interesting about the Flash community. When you think about it it is pretty wild how the community has figured out a way to profit off such a no-strings-attached game market.<br />
<br />
Here are the best links I came across in my travels (you can thank me later for not having to use google):<br />
<a href="http://www.flashrights.com/">Flash Rights</a> - Details everything you need to know about protecting you game's IP<br />
<a href="http://www.flashgamesponsorship.com/">Flash Game Sponsorship</a> - Lots of great info about getting you game Sponsored<br />
<a href="http://www.flashgamelicense.com/">Flash Game License</a> - A great site to get you game in front of potential sponsors<br />
<a href="http://www.kickstarter.com/">Kick Starter</a> - This site is a place where you can attempt to raise money for you projects<br />
<a href="http://www.kongregate.com/">Kongregate</a> - Great portal, be sure to visit their developer page before finishing your Flash game<br />
<a href="http://www.flashgameblogs.com/">Flash Game Blogs</a> - This blog spits out all the flash related blog posts out thereAnonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.com1tag:blogger.com,1999:blog-1531256779847586024.post-42378543698042854732009-10-27T08:55:00.006-04:002009-10-30T16:45:01.376-04:00Dev Diary: Game Logo Has Begun ProductionI've done a lot of thinking over the weekend. Me and the Mrs. spent the weekend together exploring the city of Boston some more. Long story short she got her hair did, we saw the blue man group and I got inspired. It has always been a dream of mine to make a flash game, that time has come.<br />
<br />
<a name='more'></a><br />
I have played with the tech in the past and even made a streaming video player for <a href="http://www.buyhomesdirectnow.com/">money</a>. I made a little engine to help with game development. I say <i>little engine</i> because the flash utilities and frameworks are pretty extensive. To wrap them up would be silly. I may need to optimize some things in the future, but for now I am good to go.<br />
<br />
The reason I have always wanted to make a flash game is because I grew up playing the things. It started with watching wacky flash movies like <a href="http://www.newgrounds.com/collection/retardedanimalbabies.html">Retarded Animal Babies</a>. Then people started making games that were pretty sweet like <a href="http://www.newgrounds.com/portal/view/118826">Madness Interactive</a>. Back then I used <a href="http://www.newgrounds.com/">newgrounds</a> now I use <a href="http://www.kongregate.com/">Kongregate</a>, but the love is all the same. Flash games were/are a major influence to why I am doing what I do (Game Development).<br />
<br />
Why? Flash games (in my opinion) are the most accessible games out there. They are free, they are pretty decent looking and they are a breeze to develop (so there are a lot of them). I wanted to make them back in grade school, but I could not afford the adobe products necessary (I can't these days either). I also lacked the nerd skills to be a dirty, nasty pirate (Those who know me know that this is no different today either).<br />
<br />
For the moment I have 30 days to do this (trial hehe). Join me in this journey to fulfill my dreams. Oh, I almost forgot, check out this sneak peek of what you have to look forward to.<br />
<br />
<embed align="middle" allowscriptaccess="sameDomain" height="480" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" src="http://www.buyhomesdirectnow.com/Flash/NewFlashGame.swf" type="application/x-shockwave-flash" width="640"></embed><br />
<br />
Yeah I know, It's pretty impressive ;-). For now I have not implemented any security so for you hackers out there it is prime for the picking. There will be some obfuscation happening soon, so hurry. I will attempt to update weekly when I do not have an alternative post to publish. Stay tuned!Anonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.com0tag:blogger.com,1999:blog-1531256779847586024.post-67973620922815499332009-10-22T17:47:00.006-04:002009-10-23T17:45:08.570-04:00Game Dev Management Tips: DelegationI wanted to do another <i>Management</i> focused post so here is another tip (also check out my first <a href="http://resolveaswontfix.blogspot.com/2009/08/game-development-management-tips-power.html">post</a>). Delegation! If you are new to management and are promoted up to a lead position from being a worker (programmer or whatever) this concept can be hard to put into practice. Usually the scenario is as follows. You are a stellar developer and your development manager notices (with a bit of pointing out to some extent :-) ) and they need to fill a spot. You want the experience and happily accept.<br />
<br />
You <strike>may</strike> should fully understand that those you manage need to be utilized to 100% efficiency and through proper delegation this may be attempted. The problem is you are so used to being that guy that gets to solve the big/cool problems it can be hard. Not to mention you loved what you were doing before (that is why you did it so well) so <i>letting go</i> is something you need to come to terms with.<br />
<a name='more'></a><br />
<span style="font-size: large;">Letting Go</span><br />
before you can even delegate your first task you need to do this. LET GO! I will use a nerdy example to explain this. Say you are playing the role of a tank in a traditional MMO style game (WOW, FF11, etc.). You have chosen the class of warrior because it's stats best suit this role in a group. One night you have plenty of tanks but can not seem to find a healer (we have all been there). So being the team player that you are you switch over to an alternate class/character that is a white mage or equivalent.<br />
<br />
When you switch roles in the work place you need to do the same thing. Leads do not have the proper stats to be as good a developer as those they manage. If you do not believe me check out these stats.<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/_57N9Hx1Y6PI/St-4ldaFfiI/AAAAAAAAAE8/IA2m2yu8rU0/s1600-h/Delegation.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/_57N9Hx1Y6PI/St-4ldaFfiI/AAAAAAAAAE8/IA2m2yu8rU0/s640/Delegation.jpg" /></a><br />
</div>Pay close attention to the <i>Time</i> and <i>Agility</i> stats. If you find you are doing more developing then those you manage you are probably not running your team as effectively as it could. Do not take my word for it, just check out these scientific charts I created.<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/_57N9Hx1Y6PI/SuDSxSNV3rI/AAAAAAAAAFE/_7JERocIBt0/s1600-h/Delegation2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/_57N9Hx1Y6PI/SuDSxSNV3rI/AAAAAAAAAFE/_7JERocIBt0/s640/Delegation2.jpg" /></a><br />
</div>You may be asking, "Why on earth does the amount of developing the lead do effect the amount of work the team is doing?" Well one answer is: The lead is being a ball hog.<br />
<br />
<span style="font-size: large;">Being a Ball Hog<span style="font-size: small;"> </span></span><br />
<span style="font-size: large;"><span style="font-size: small;">A huge part of <i>letting go </i>is to not be a <i>ball hog</i>. When you are responsible for delegating tasks/issues to your team this can happen if you do not pay attention. If you find you are taking on more tasks then individuals on your team (or the whole team for that matter) then you are turning yourself into a bottleneck. "But Aaron a lot of the tasks I can get done much faster then those available to take it on." This excuse is ridiculous. For one you should have some faith in your team. Even assuming you could get it done faster you need to be challenging your team mates to take on big things so that when you are not available (not just being absent) they can resolve key issues.</span></span><br />
<br />
<span style="font-size: large;"><span style="font-size: small;">When the star player is always shooting all the baskets what happens when he can not make the game? The team's quality shoots way down. If you do not let your team take on the big stuff then your team will not be able to handle big stuff. There is also only so much a single person can achieve.</span></span><br />
<br />
<span style="font-size: large;">Be Multi-Threaded</span><br />
<span style="font-size: large;"><span style="font-size: small;">Consider your team is a multi-core processor and you are a programmer running an application on it. If you are not feeding each core tasks and data to process then you are not running your application as fast it could. When you need you application to do cooler effects and push more geometry/objects, it is going to chug. As the lead it is your responsibility to keep the program from chugging.</span></span><br />
<br />
<span style="font-size: large;"><span style="font-size: small;">Now that I have told you what you need to know to get ready to delegate....Delegate!</span></span><br />
<br />
<span style="font-size: large;"><span style="font-size: large;">Methods of Delegation</span></span><br />
<span style="font-size: large;"><span style="font-size: small;">When you are delegating tasks there is some data you should consider. Again just like in MMOs each player has certain expertise that you need to consider. The data you need to consider to match up a task for delegation can boil down to:</span></span><br />
<ul><li><span style="font-size: large;"><span style="font-size: small;">How much the developer may "like" the task</span></span></li>
<li><span style="font-size: large;"><span style="font-size: small;">How good at the task the developer may be</span></span></li>
</ul><span style="font-size: large;"><span style="font-size: small;">These two things greatly affect the time that it will take for the task to get completed. If the developer likes the task but is not skilled at completing the task they will find a way. If the developer hates the task, but is skilled at completing it then they will probably get it done slightly quicker then the person not skilled but likes the task. If the developer doesn't like the task and doesn't have the skills to complete it...well that ia a whole other blog post.</span></span><br />
<br />
<span style="font-size: large;"><span style="font-size: small;">In a perfect world all the developers you manage would love to get assigned every kind of task and would also be skilled at that task. Unfortunately even in an environment where tedious tasks have been optimized out, there will always be some level of grunt work to complete.</span></span><br />
<br />
<span style="font-size: large;"><span style="font-size: small;">The idea here is to delegate the tasks in a way where they get done as timely as possible. You need to also be thinking long term. Delegation is a tool that can be used to raise the EXP of you developers. That means that you shouldn't always delegate to the guy best suited for the problem. As a rule of thumb I would try to assign a task to someone that isn't best qualified 50% of the time. This way you are getting stuff done as a team at a good velocity, but at the same some having a degree of "grinding" happening (sorry, I am sure you are sick of the MMO references by now).</span></span><br />
<br />
<span style="font-size: large;"><span style="font-size: small;">Once you have figured out who to delegate to you must delegate. The best way to delegate is to simply assign the task. Explain it briefly if its not trivial. If the proper resolution is out of the ordinary, further discussion may be needed. The main idea is to let the developer figure out the details to get the issue resolved. You should not be micromanaging your developers. If you think you need to tell them how to resolve the task then pair them up with an experienced developer (hopefully there are some available).</span></span><br />
<br />
<span style="font-size: large;"><span style="font-size: small;">I know, I know, so now that you are delegating everything, what do you get to do?</span></span><br />
<br />
<span style="font-size: large;"><span style="font-size: small;"><span style="font-size: large;">Your Responsibilities</span></span></span><br />
<span style="font-size: large;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">You get to sit back and relax. HAHA. Jokes aside, do not worry. You will still get to develop (in most cases you will have to). You will be expected to pull your own weight especially if you are still assigned to wear the developer hat. Honestly though I would try to keep your actual developing to about 25% of your day. Even if you do not do this, the new responsibilities you wikll be juggling will no doubt cause this to happen. So if you are scheduling in a way where you are responsible for doing more then a quarter of those you manage, expect to work more then 8 hours a day.</span></span></span></span><br />
<br />
<span style="font-size: large;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">I am not joking, I have done it. When I became lead I scheduled myself to do 50% of what my guys were expected to do. I was working on average about 12 hours a day (and this is a casual game company). If you are having to work 12 hour days (or more) you are going to be very ineffective for your team. Just like with developing your decision making skills (not to mention your overall quality of work) you have will get worse the longer you work. The difference is the mistakes you make now have a much larger ripple effect. </span></span></span></span><br />
<br />
<span style="font-size: large;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">Okay so you have 25% of your day covered, what do you do with the rest of your day. Well there is too much to explain in depth but here is a quick list.</span></span></span></span><br />
<ul><li><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"> Delegating</span></span></span></span></li>
<li><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"> Giving constructive feedback to your team</span></span></span></span></li>
<li><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"> One on Ones</span></span></span></span></li>
<li><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"> Misc. meetings with other departments</span></span></span></span></li>
<li><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"> Code reviews<br />
</span></span></span></span></li>
<li><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"> Design review</span></span></span></span></li>
<li><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"> Misc. research</span></span></span></span></li>
<li><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"> Checking emails</span></span></span></span></li>
<li><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"> Responding to issues that come up</span></span></span></span></li>
<li><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"> Fighting fires</span></span></span></span></li>
</ul><span style="font-size: large;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">These are just some of the things I did with that remaining 75%. You may be lucky enough to have a producer or project manager that could take care of some of that. If you do then you can increase that percentage I gave earlier for development time.</span></span></span></span><br />
<br />
<span style="font-size: large;">Summary<span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;"> </span></span></span></span><br />
<span style="font-size: large;"><span style="font-size: small;"><span style="font-size: large;"><span style="font-size: small;">This is simple in concept, but a lot harder in excution. A lot of this will be unnatural. You are just going to have to suck it up and think of the big picture. It is your job to enable your team of developers to get their tasks done as quickly as possible and with the best quality. If they do not have enough to do, they will not get as much done. Let go and give them everything. Build them up so that they can get what you delegate done faster and with higher quality. They should want you to challenge them so do it!<br />
</span></span></span></span>Anonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.com0tag:blogger.com,1999:blog-1531256779847586024.post-55843818610668467372009-10-10T09:54:00.015-04:002009-12-10T09:37:57.026-05:00Rage: Warnings Do Not Stop MeFor an explanation of what a rage is please see the first Rage post. If you do not mind learning as you go then just continue.<br />
<br />
<span style="font-size: 130%; font-weight: bold;">Beef:</span><br />
Warnings do not stop me! Some may think that is a pretty bad ass statement. Someone who lives by that mantra may see a traffic light turn yellow and gun it. They may also be told "NO" when advancing on a woman/man, but still go in for the smooch. Pure bad assess, that is until they get hit by oncoming traffic or slapped and issued a restraining order.<br />
<a name='more'></a><br />
When it comes to programming and living life, warnings should not be taken lightly. Yes I know that with each revision of your favourite compiler you have to deal with more and more of these warnings. These are usually in response to a common problem that is happening in your language so suck it up and resolve them. I am not just talking about compiler warnings either.<br />
<br />
You will also get warnings and errors that might not crash your program in the log. READ THEM! REMOVE THEM! The developers of the systems you use in your game took the time to inform you of edge cases you may be causing. Take heed, or there may be consequences later (someone might write about it in a blog).<br />
<a href="http://1.bp.blogspot.com/_57N9Hx1Y6PI/StCRmNqO0hI/AAAAAAAAACw/0ozRnw2uVqo/s1600-h/warning_sign.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5390968839650333202" src="http://1.bp.blogspot.com/_57N9Hx1Y6PI/StCRmNqO0hI/AAAAAAAAACw/0ozRnw2uVqo/s400/warning_sign.jpg" style="cursor: pointer; display: block; height: 400px; margin: 0px auto 10px; text-align: center; width: 238px;" /></a>I can not count how many times heeding a warning has saved my ass. Yeah most of the time that silly signed/unsigned mismatch may be no big deal and you just need to throw in a quick static cast. Sometimes you will find that unsigned variable is actually being set to a negative value which causes an underflow. No one wants that do they? I think not.<br />
<br />
Now Raging is not something that just happens, there are certain events that fuel this rage.<br />
<br />
<span style="font-size: 130%; font-weight: bold;">Fuel:</span><br />
Oh my god, where do I start? I see this everywhere. In college it was an epidemic I refused to become a part of. When you are just learning a new language warnings should be addressed even more so. When you kinda know what you are doing, warnings will save your ass even more. In college it was easy to keep the warnings at bay because a lot of the time all your code was made from you.<br />
<br />
Warnings in the work place are even worse (for me at least). When I started my first job I had gained huge amounts of code to be responsible for, most of which was not created by me. It also seemed that warnings were not a huge deal to be left in. It did not help that a lot of the code was developed back in the days of GCC2 or earlier. Currently using GCC4 has introduced even more great warnings. One could easily drown in the sea of warnings.<br />
<br />
This was terrible. If you needed to track down an issues at a low level you had to basically ignore all the warnings to focus on the issues. That fact was a terrible situation. Warnings should help you, but somehow the low level code base had gotten to a state where they were constant distractions. I had to force myself to not address them in fear of toppling the stack of cards over a 100 games lived atop of.<br />
<br />
Error/Warning print outs were even worse. "Failed to get object X", "Unable to release object X", and the list goes on. In a development environment where error checking is important we chose the route of kindly informing the developer of errors and recovering (if possible) without crashing. This was because unexpected errors could happen in the field and instead of crashing over some corrupt data we would rather the player keep playing (given the issue was not severe enough). SIDE NOTE: I work on coin op games so if the game crashes it causes a reboot of the machine, which directly affects coin drop.<br />
<br />
Unfortunately informing the developer of an error without crashing is not a good enough incentive for fixing the issues (for some). FIX IT! READ THE LOG! "Hmmmm failed to release an object eh'? ...well it didn't crash so it must not be too serious." Wow, thanks for possibly leaking memory, you are bad ass (sarcasm).<br />
<br />
<span style="font-size: 130%;"><span style="font-weight: bold;">Resolution:</span></span><br />
Here is a summary of the screaming text which is a resolution. READ THEM! REMOVE THEM! FIX IT! READ THE LOG! Seriously though this is an issue. If you do not address the warnings and print outs some one will have to eventually. It does not look too hot if someone has to go through your code and do it due to a bug down the line. They will be the one that looks good while you look the opposite.<br />
<br />
It only takes a few extra minutes of your time to keep your stuff clean and concise. Not heeding to this Rage could also be a tell tale sign of your code quality as well. If you do not take the time to do this important task do you take the time to make sure what you are writing is the correct solution? Do you unit test and take the time to check edge cases? Do you make sure your code is as optimized as it should? Well lets save those questions for another rage. Brutal Legend next week!Anonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.com2tag:blogger.com,1999:blog-1531256779847586024.post-8814639820881836332009-09-28T13:34:00.010-04:002009-12-10T11:25:42.040-05:00Excuse for Tardiness: Halo 3: ODSTI have a feeling I may be doing more of these posts then I would prefer this fall. Way too many good games are coming out. The wave of new games has begun (for me) with this title. Some of you may hate halo, some of you may not even know what I am talking about and some of you LOVE halo. I am number three, but I like to keep it low key (to prevent additional people from hating it). Maybe I have played all the games (with no sleep release night) and I might have read all of the books. Does that make me completely and utterly bias towards the series? YES!<br />
<a name='more'></a><br />
Anyway this game focuses on the more human good guys in the fiction. They are called ODST (Orbital Drop Shock Troopers). They are basically navy seals, but with space instead of water. So they are still bad ass, but not genetically enhanced super humans like the Spartan ("Master Chief") that you've played in the past. They are basically Master Chief's minus-minus (--). Take the shield and replace it with "stamina" and slap on a health bar and you've got yourself an ODST. They also move slower, but you hardly notice. They have been suited up with "silenced" weapons. I put that in quotes because they are not silent, but they are deadly :-S.<br />
<br />
<a href="http://4.bp.blogspot.com/_57N9Hx1Y6PI/SsFbeqhOmhI/AAAAAAAAACY/yxkt1UxQqSg/s1600-h/halo-3-odst-wallpaper-cast.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5386687211679685138" src="http://4.bp.blogspot.com/_57N9Hx1Y6PI/SsFbeqhOmhI/AAAAAAAAACY/yxkt1UxQqSg/s400/halo-3-odst-wallpaper-cast.jpg" style="cursor: pointer; display: block; height: 226px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a><br />
So what do you get in the box? A 3-4 hour campaign with Nathan Fillion, all of the DLC maps for Halo 3 (plus three more) and a pretty sweet multi-player mode called fire fight. The campaign is really short, but if you're as hardcore as me you will end up playing it once through alone on legendary (about 8 hours) and once through with your friends on legendary (about 4 hours). So the value goes up a bit. Then there are a bunch of unique achievements that you can spend even more time...achieving. I am usually not an achievement whore, but when the gameplay along the way is fun I don't mind at all.<br />
<br />
<a href="http://1.bp.blogspot.com/_57N9Hx1Y6PI/SsFeN-jetcI/AAAAAAAAACg/zbSITDEyTC4/s1600-h/Nathan_Fillion_Scoped.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5386690223534945730" src="http://1.bp.blogspot.com/_57N9Hx1Y6PI/SsFeN-jetcI/AAAAAAAAACg/zbSITDEyTC4/s400/Nathan_Fillion_Scoped.jpg" style="cursor: pointer; display: block; height: 294px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a><br />
Now the Fire Fight mode. I have heard people compare it to the Horde mode on Gears of War 2. I am sorry but this trumps that mode. People have also complained about not being able to play the mode through matchmaking. Okay that kinda sucks, but I honestly don't play with random people so I am not affected by this. The fact that during this post I am craving a game of Fire Fight a week after its release means they did a good job. Will I still play it after Modern Warfare 2 comes out? Probably not, but it will hold me over untill at least Brutal Legend.<br />
<br />
Oh yeah I also played (and beat) Braid when my friends were not on to play Halo. Wow was I impressed with that game. ODST is cool and all, but this is the kind of game you bring home to mom :-). If you haven't played it yet, you need to check it out. I still need to beat the 45 minute time trial.<br />
<br />
<a href="http://2.bp.blogspot.com/_57N9Hx1Y6PI/SsFeV6dDC_I/AAAAAAAAACo/4vcczIrtIj4/s1600-h/braid_title_new.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5386690359873178610" src="http://2.bp.blogspot.com/_57N9Hx1Y6PI/SsFeV6dDC_I/AAAAAAAAACo/4vcczIrtIj4/s400/braid_title_new.jpg" style="cursor: pointer; display: block; height: 225px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a><br />
Stay tuned folks, next week will be a Rage so watch out!Anonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.com0tag:blogger.com,1999:blog-1531256779847586024.post-41326608079104349142009-09-19T19:24:00.001-04:002009-10-13T14:11:47.428-04:00Goto ShmotoC++ was my first programming language. When I was going through school I can remember clearly the day that the keyword "goto" came up. The teacher said something along the lines of, "goto will jump to another section of code...just don't use it." At the time I had enough information I was trying to retain so that sounded good to me, just don't use it. My career continued, I never used goto, but it would come up from time to time. While working at my job, I came across code that used it. I just assumed no one told these programmers not to use it, but couldn't help but wonder, "How did goto get such a bad rap?"<br />
<a name='more'></a><br />
<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_57N9Hx1Y6PI/Sqb-VTyiBsI/AAAAAAAAACI/NuGvoUYLWHg/s1600-h/goto.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 109px;" src="http://4.bp.blogspot.com/_57N9Hx1Y6PI/Sqb-VTyiBsI/AAAAAAAAACI/NuGvoUYLWHg/s400/goto.png" alt="" id="BLOGGER_PHOTO_ID_5379266446983562946" border="0" /></a>I mean it is pretty simple to understand why. If the code you're trying to walk through is jumping all over the place it can make it a bit more cryptic. When you are reading you literature of choice the author doesn't (usually) have a "goto page12Paragraph3." Some may say that would get confusing.<br />
<br />
Still though, why was it created in the first place? Almost all programming languages have some form of a goto present in their make-up. Yet a lot of the coding standards I've seen specifically say to not use goto. There had to be a good way to use it. I could not help but think that people just did not know how to use it properly.<br />
<br />
So I became fed up with this lately and had to do some research. It seems my first thoughts were not too far off. This topic has been controversial for 30+ years. The first pieces of literature on the this topic are from two greats, Donald Knuth and Edsger Dijkstra.<br />
<br />
The first paper I read was this: "<a href="http://www.u.arizona.edu/%7Erubinson/copyright_violations/Go_To_Considered_Harmful.html">Go To Considered Harmful</a>". This was written by Mr. Dijkstra. In short it explains that the programs he saw that chose to use more structured ways of handling logic over gotos were of higher quality. Cool, so this problem was solved 40 years ago...well in a way. This is controversial so there must be another side to this story.<br />
<br />
The second paper I read was from Mr. Knuth, "<a href="http://www.google.com/url?sa=t&source=web&ct=res&cd=1&url=http%3A%2F%2Fpplab.snu.ac.kr%2Fcourses%2Fadv_pl05%2Fpapers%2Fp261-knuth.pdf&ei=g6anSs--BNLHlAf5msSAAQ&usg=AFQjCNE3gQ0EAIx0Al1wuGZvHTdk1lmMhQ&sig2=A-ZKGia5iZ0QVSSintoKSA">Structured Programming with go to Statements</a>". From the title you can guess that this is about using goto for structured programming. A lot of people thought from the title that it was going to be pro goto, but it was something else. From reading the text you find that he agrees a lot with the movement away from goto in favour of more structured programing. It is a pretty lengthy paper that goes over hard examples of when goto can be more elegant/optimal and when it can be obscure. He also stresses that the real problem with bad code is with its structure and that removing gotos does not solve the problem completely. Code that does not use gotos can be just as bad as those that do use them if they are structured obscurely.<br />
<br />
From this research I have come to the conclusion that I will continue to not use it in favour of other language tools and paradigms at my disposal. Things like event systems, exception protocol, and standard loops provide a more organized version of gotos. The effect of the goto is the basis of a lot of operations and code structure that we have today and for that I have a new respect for the keyword. I now think that it could be a very useful tool for making optimizations, but I won't stop from questioning if adding in a goto will really help the performance in the end.<br />
<br />
Oh yeah if you want a sweet shirt : <a href="http://geekz.co.uk/shop/store/show/knuth-tshirt">Knuth Shirt</a>Anonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.com0tag:blogger.com,1999:blog-1531256779847586024.post-59771299509239272492009-09-11T18:03:00.005-04:002009-12-10T11:25:59.310-05:00Excuse for Tardiness: Plants vs. ZombiesThe time block I have set aside to gather my thoughts into this blog is also the only time I can get me some gaming in. In an attempt to keep my blog alive I will make a post like this to tell you about the game I am currently playing that has prevented you from reading something maybe more interesting.<br />
<a name='more'></a><br />
If you're like me and love a good tower defense game, this is a very good one. I have been spending way too much time playing this game. There is a lot you can do in the game and a variety of gameplay as well. This means many hours of fun.<br />
<br />
<a href="http://4.bp.blogspot.com/_57N9Hx1Y6PI/SqrLz2ko4OI/AAAAAAAAACQ/x7uUTKhX-34/s1600-h/plants_vs_zombies.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5380336796530434274" src="http://4.bp.blogspot.com/_57N9Hx1Y6PI/SqrLz2ko4OI/AAAAAAAAACQ/x7uUTKhX-34/s400/plants_vs_zombies.jpg" style="cursor: pointer; display: block; height: 300px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a>As you can tell by the title and the art direction of the game, it has a light hearted humorous tone to it. There was some moments where I actually laughed at a game (for its hilarity not its shortcomings). Currently I have not collected and unlocked everything, but I hope to soon, or I will have to make tough choice: to stop playing :-(.<br />
<br />
Its a great game, so check it out!Anonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.com0tag:blogger.com,1999:blog-1531256779847586024.post-74257586615808953212009-09-01T18:30:00.004-04:002009-12-10T11:26:22.909-05:00Beer of the Moment: Blackberry Witbier<span style="font-size: 130%;"><span style="font-weight: bold;">Intro</span></span><br />
Okay I'm getting burnt out with the technical writing. What better way to recover then with a refreshing beer. Every month I will mix things up with a quick post about the current brew that I have in the fridge. You may be asking, "What does this have to do with Game Development?" For some it may have nothing to do with it(sorry guys/gals), but for others it is a huge part.<br />
<a name='more'></a><br />
I can not count how many times I have ended up bantering with a fellow developer over the after work beer or two (or much more). What does bantering and beer accomplish? Allow me to provide you with some logic: bantering + beer == more honest conversation == tighter friendships == more personal growth. So if its your thing, drink up.<br />
<span style="font-size: 130%;"> <span style="font-weight: bold;"><br />
</span></span><br />
<div style="text-align: center;"><span style="font-size: 130%;"><span style="font-weight: bold;">Samual Adams Blackberry Witbier</span></span><br />
</div><a href="http://4.bp.blogspot.com/_57N9Hx1Y6PI/Sp2otrKKhPI/AAAAAAAAABw/-uGyTG70Sj0/s1600-h/SABW6pk.gif" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5376639032783176946" src="http://4.bp.blogspot.com/_57N9Hx1Y6PI/Sp2otrKKhPI/AAAAAAAAABw/-uGyTG70Sj0/s320/SABW6pk.gif" style="cursor: pointer; display: block; height: 320px; margin: 0px auto 10px; text-align: center; width: 248px;" /></a><br />
I was restocking today and I came across this brew. I picked up a case of Blue Moon and Samual Adams Summer Ale, but I wanted to try this purple thing I saw in the aisle. Now this is a fruity brew, so if you like your beer to be bitter and hoppy, then this is not the one for you. The blackberry is the most prominent taste in the beer, which makes it very tasty. Very drinkable beer, my wife even liked it. I would recommend it and will probebly buy some more in the future.<br />
<br />
cheers!Anonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.com1tag:blogger.com,1999:blog-1531256779847586024.post-62745616191102060732009-08-24T17:10:00.014-04:002009-12-10T09:36:22.998-05:00Rage: Do not recreate what is right under your noseSo I thought it would be great to express some of the things that I constantly complain about to my co-workers and friends. I usually keep my "Rages" private, but it is time to let the world have a piece. Since I rage quiet a bit, I figure I will hold myself to a monthly outlet.<br />
<a name='more'></a><br />
A Rage will consist of three main parts: Beef, Fuel and Resolution. Beef is the topic of the rage, Fuel is what sparks the Beef into a Rage and Resolution is what YOU can do to extinguish my Rage. I hope you all find it amusing and/or want to Rage back.<br />
<br />
<span style="font-size: 130%; font-weight: bold;">Beef:</span><br />
This Beef goes by many names. Recreating the wheel, duplicating code and the DRY (Don't Repeat Yourself) principal to name a few. I see these mistakes all the time and I'm not going to lie, I've been guilty myself. Being able to use existing, tested and released functionality is always going to save you and others (QA) time in the long run. It also enables you to focus on your major task and in effect, get more done. This in turn makes you look good and will eventually turn you into "The Man".<br />
<br />
Do not take it from me, there is tons of literature and facts out there that march to this same tune. One of my personal favorite<span style="background-color: #ffcc66;"></span> books, "Pragmatic Programmer", talks a bit about this, among other things. If you have not gotten a chance to read this, please add it to your toilet reading regimen (or your normal reading time).<br />
<br />
Now Raging is not something that just happens, there are certain events that fuel this rage.<br />
<br />
<span style="font-size: 130%; font-weight: bold;">Fuel:</span><br />
Okay, so I'm going to explain the situation in a way that protects anyone involved, because I want the focus on the problem not the person. About a year ago I was noticing that a lot of code was being duplicated around the code base that basically caused game states to time out. So being the proactive developer that I am, I added a class called "TimeOutState" to the state machine library. Instead of just extending the regular old state, you could now derive from the TimeOutState and gain functionality to customize your time out behavior. Obviously there are much more elegant ways to do this, but I was working with what was there.<br />
<br />
So I'm thinking, "Sweet! Now people will check out the changes to the library and the next time they make a state they will make use of this option." Much too often I'd discover the opposite. I still come across currently being developed code, recreating this functionality.<br />
<br />
No big deal, right? WRONG! More code can and will always equal more bugs. I can not count how many times we got tickets in trac that said something like, "Bad thing happened when state times out". When you add up the time for QA and Software dealing with these kinds of trivial issues it can add up to real $$$. Don't think the higher ups (technical higher ups of course) are too stupid to notice, their job is to save the company money. The more tickets that pop up that are similar, the more they will notice a problem.<br />
<br />
<span style="font-size: 130%;"><span style="font-weight: bold;">Resolution:</span></span><br />
This is really simple. Don't use external libs without looking at their feature sets! Don't start writing something without first checking the code base for similar functionality! You may think that just doing it yourself will be faster then looking it up. This could very well be correct. The problem comes when you need this functionality again. You will need to try to find your previous code to copy/paste, or write it again. Not only will doing that introduce potential bugs, but it will also add to the ever growing code base that needs to be maintained.<br />
<br />
If you are keeping up to date with the libraries you use, you will come across other useful functionality that you can store in your memory bank (your brain) for future reference. Knowing the libraries that you use will make you more useful/efficient and as I mentioned earlier, get you one step closer to being "The Man".<br />
<br />
You do want to be "The Man", don't you?Anonymoushttp://www.blogger.com/profile/05806664368145256117noreply@blogger.com1