Categories
Game Design Game Development Geek / Technical Linux Game Development Personal Development

LD#12: Tower Defender Initial Design

Here is the initial design I’ve come up with. Over a year ago I wrote down a one-liner idea about defending a castle, and these notes flesh it out a bit more.

Tower Defender initial design

I want a microphone because I really do want my knight to say “STAB!” when you mouse over him.

Categories
Game Design Game Development Geek / Technical Linux Game Development Personal Development

LD#12: Breakfast is Awesome!

Since so many people got a kick out of my Awesome! brand paper towels, I thought I’d juxtapose them with my Optimum Power cereal:

Breakfast

Awesome. Just awesome.

Categories
Game Design Game Development Geek / Technical Linux Game Development Personal Development

LD#12: So the Theme Is Tower…

Last time Minimalist surprised everyone. This time, Tower did. It’s weird how surprising it is when it was voted upon!

The IRC channel is filled with talk about what can be done. I spent the first 30 minutes eating dinner.

First Meal

I made vegetable stir fry and rice. The rice came out surprisingly well. I also put hummus on pita, and then put the stir fry in it to make LD-approved sandwiches. I washed it all down with tutti-frutti flavored Jarritos.

I’m not sure what to do with the theme yet.

Categories
Game Design Game Development Geek / Technical Linux Game Development Personal Development

LD#12: The Opening Ceremonies

I know it’s a bit hokey, but since the Olympics are happening today, I thought that Ludum Dare needed its own pyrotechnics.

Enjoy the Ludum Dare Opening Ceremonies!

I’m cross posting my Ludum Dare posts here and at LudumDare.com.

Categories
Game Design Game Development Geek / Technical Linux Game Development Personal Development

LD#12: The Office of GBGames

I only managed to get it clean enough to sit in comfortably a few weeks ago.

Desk photo

Yes, there are three separate chairs in a small room.

Categories
Game Design Game Development Geek / Technical Linux Game Development Personal Development

My Tips for Ludum Dare

While SolHSA’s tips are useful, and mrfun’s tips are hilarious, I decided to post my own list of tips for Ludum Dare.

Here is the summary list:

  • Be prepared.
  • Meet the competition.
  • Whatever you think will be easy, do something simpler.
  • “You can only code fast by coding well.”
  • Have fun.
Categories
Game Design Game Development Geek / Technical Linux Game Development Personal Development

Let the Games Begin!

In about 15 hours, the theme for Ludum Dare #12 will be announced and the 48 hour game development competition will start.

Once again, I’ll be using C++, SDL, Makefiles, and vim. This time I will be practicing my unit test fu, which may or may not be a mistake in a coding competition based on speed. We’ll see. My office is actually cleaned up, so I can avoid the back pains of using my couch for the entire competition.

Good luck to all who are participating! Let’s make some games!

Oh, and I guess there is some other global competition starting today, too.

Categories
Game Development Personal Development

Thousander Club Update: August 4th

For this week’s Thousander Club update:

Game Hours: 409.25(previous two years) + 86.5 (current year) = 495.75 / 1000
Game Ideas: 710 (previous two years) + 36 (current year) = 746 / 1000

I spent part of my weekend working with UnitTest++ and [tag]TDD[/tag]. I wish there was more documentation about integrating it with Makefiles. I spent most of my time trying to figure out how to get the Makefile to automatically build new .cpp files as I add them, as well as knowing how to build the test binary without using my main project’s source file that holds the main() function. I decided to try something simple, similar to the Bowling Game Kata, so I picked a Guess The Number game.

The point of the kata is to study the form of how to write tests, make them fail, then make them pass. What it doesn’t show me is how to write code that actually runs the game. Am I expected to write a test before I write my main() function that actually makes use of the game? After 12 passing tests, I have a fairly complete GuessingGame class, but I don’t have a working game. I can see how easy it would be to write the code to make a working game, but I don’t see how I can write a test first since I’ll just be copying lines of code from the tests into main(). Is this considered an integration step, where it is likely that there won’t be test coverage? I’m ordering the Kent Beck book Test Driven Development: By Example (The Addison-Wesley Signature Series) but as I haven’t read it yet, I’m mostly going off of what I learned from watching Robert Martin during a talk on TDD a couple of weeks ago.

Of course, experimenting with TDD means I haven’t spent time on updating Minimalist, my Ludum Dare #11 entry. The game is mostly finished, and really it is all a matter of making sure it runs on as many systems and for as many players as possible. I’m looking to have an official release at the end of the month.

On a productivity note, my email inbox and my desk inbox have been brought down to 0 for the first time in a year! It feels so good to know exactly what I need to process when I sit down in my office.

Even so, I took a productivity hit this weekend. On Friday, I found that my laptop turned off. I came home from the day job, found it off, and turned it back on. It said that it’s battery was low. I figured that one of the cats must have knocked the AC adapter loose, so I made sure it was plugged in and went out again. I came back to find the computer off again. I saw the power brick’s green light was off and that it was cold. It was also beeping as if it was about to explode at any moment. Since my laptop was still under warranty, I found Dell’s contact info and expected to go through a lot of customer service representatives, explaining the same situation over and over. Instead, I was surprised it was as easy as it was:

Me: “I just discovered that my laptop lost it’s charge, and it seems that my power brick is not working anymore. It has a tiny beeping when it is plugged in.”
Me: “The laptop itself seems fine, but I have no way of keeping it charged.”
Me: “As I understand it, it is still within warranty, so I was wondering what I could do.”
Agent: “I’d be glad to have the ac adapter be replaced, what address do you want me to send it to?”

Wow! After the details were settled, I went to put my laptop away and found out why my AC adapter stopped working. One of my cats had chewed through the cable!

Hopefully I will get my replacement AC adapter today. My desktop is alright, but my laptop has more screen real estate for viewing my code all at once and much more RAM to run more applications at once. It also has my most up-to-date GnuCash files, which means I can’t do my general accounting until I get my laptop running again.

[tags]game, game design, productivity, personal development, video game development, indie[/tags]

Categories
Game Development Geek / Technical Personal Development

Test-Driven Game Development

It’s been a long time since I last looked at Test-Driven Development, or TDD. It has been years since I first read about it, and since then I learned about C++ frameworks, but I’ve never used it. It always seemed like a great idea, but optional. Agile or extreme programming sounded cool, but without paired programming, what is a lone indie to do? I had written about Agile individuals years ago, but I lost interest in finding the answers.

Not anymore. I had the chance to see Robert Martin of Object Mentor give a few talks about clean code and TDD, and he made quite the impression on me. He said that software developers give off an air of being unprofessional, but there are things professional programmers do, and TDD is one of them.

Writing tests is one of the practices in Agile development and extreme programming, and the benefits of writing tests are demonstrable. Besides allowing you to have reasonable confidence in the quality of your code, it can actually help drive the design of it, too. I want to emphasize this point since I apparently missed it years ago when I first read it. The design of your code, the actual decisions you make regarding when and when not to use a class, an interface, or a virtual function, gets shaped by your tests! I’ve read more than a few articles in which the author claimed that TDD’s effect on the design was the most important benefit.

That said, aside from High Moon Studios, you don’t hear too much about game developers making use of TDD. If business software developers are seen as unprofessional, what do game developers in general come off as?

I’ve been rereading Noel Llopis’ articles on Test-Driven Development, and I recently downloaded UnitTest++, which is a C++ unit testing framework. I joined the mailing list, which shows that a few other studios are making use of it. Still, I would love to hear more about game developers who have used TDD and other professional developer practices. EDIT: Oh, there is Agile Game Development. A game tends to change towards the end of the project, and having tests ensuring that everything is still working when you make those changes seems desirable. Quicker iterations, better code quality, ease of refactoring, and better code designs should help wrestle those multi-year projects down to manageable levels.

[tags] unit tests, tdd, game development, agile [/tags]

Categories
Marketing/Business Personal Development

SIC 2008 Pics Are Up!

I uploaded my pictures from SIC 2008, and you can view them on Flickr. There are images of my exploration of Boston since I arrived a day early. The actual conference takes up the lion’s share of the images.

You can see how Gizmo enjoyed swimming in the free schwag I brought home.

Schwag

[tags] sic 2008, conference [/tags]