Categories
Game Development

Oracle’s Eye Development: Another Small Update

As I noted in my last post on Oracle’s Eye development, I wanted to transfer functionality from PlayState to the GameWorld class.

Short story: I did it. Next step is to try to make the Player object obey the WallTile boundaries.

Long story: There were multiple times when I felt like I was spinning my wheels. Maybe it was just that I haven’t been exercising my brain by designing as much as I should, but I was starting to despair that I wouldn’t be able to figure out what to do. After all, I already had a huge chunk of temporary code to see how the program would work, and here I was trying to completely change the design of it. Where do I begin? Will I ruin what I have and waste time before I figure it out?

After some persistence, I created a number of new classes, modified a few existing ones, and I molded the GameWorld class into exactly what I needed. It just all came together. For hours I was struggling with thinking about how to handle the changes I needed. At one point I even considered reducing the scope of the project so that the stick figure just had to reach an exit in a maze since it seemed simpler.

When I started this last development session, I found it difficult to imagine that I would be able to implement the complete game. Even after a few hours of “work” (in which I might have spent a big portion of it not actually concentrating on the task at hand since it was easier), I still had doubts.

Then everything just worked out, and now I can see that my original plans should be possible. Next time, even if I feel overwhelmed with my project, I’ll just have to remember that going the extra mile and being persistent will do more for me than worrying or massive redesigns would do.

Categories
Game Development

Oracle’s Eye Development Small Update

I don’t have anything really newsworthy to share since last time, but I thought I should update the blog on my Oracle’s Eye progress.

I had a stick figure that would glide around, and three others that would move at different speeds and in different directions relative to the one you control. The Player objects were hardcoded into the PlayState as global variables, and I named the variables gTemp_player to remind myself that these are meant to be temporary.

I decided that I needed to create a GameWorld class to handle all of the entities and their interactions. I set out to design the class, and I found that it would have to own the Room and the Player. It makes it very easy to have a GameWorld class that determines how they interact because otherwise the PlayState would know too much and it would add way too much complexity. The cool thing is that keypresses can be handled by delegating to the GameWorld object. For instance, if I press the left arrow key, PlayState will simply tell the GameWorld to moveLeft(). The GameWorld can decide what it means for it to move to the left, but it will likely just move the Player object in that direction.

Great. Now I just need a Room class…and a Room class needs a Tile class. I already know that I want different types of tiles, so I created FloorTile and WallTile classes that derive from a base Tile class.

In the end, I created all of these classes, but there wasn’t enough time in the development session to actually get them all to work together. I’m still hardcoding PlayState, which is fine for now. Since I can’t just create a Room with Tiles easily and I want to see the tile sprites, I just used a Player object that won’t move and used the tile sprites as the sprite for the image.

It actually didn’t look too bad:

Technically all of the extra code didn’t actually do much to change what someone would see when you run the program, but I think the foundation is ready for me to make significant progress. Tonight is another scheduled night to work on it, so it will still be fresh in my mind.

My next step will be to transfer functionality from PlayState to the GameWorld class. I will then attempt to force the Player to walk only within the boundaries of a Room, probably by just having GameWorld check if Player’s position would intersect with WallTiles. FloorTiles will be in the background, and Kyra makes it easy to check only the sprites I need.

Categories
Game Development

Game Development Skill Acquisition

In response to my post on Creative Writing Prompts and my search for a similar tool for programmers, scott posted a link to Code Kata at Dave Thomas’ (The Pragmatic Programmer) blog, PragDave.

There are a few posts describing Code Kata, but one of them mentions the Dreyfus model for skills acquisition.

The Dreyfus model suggests that there are five stages in the acquisition of mastery. We start at novice: unsure and with no experience. We don’t particularly want to know the “why,” we just want to be shown what to do. We need to know the rules, because we just want to achieve some goal.

While Code Kata is for learning how to program in general, I think the skills acquisition description was very insightful and can apply to learning game development. I think I had posted previously about how beginners should start by making simple games because doing so will teach them a lot about what it takes to make more complex games later. Of course, I was mainly talking about myself as the beginner game developer.

I already knew that I needed more game development experience, but I need to realize that it is not just OK to make a clone for my first game or four. It might be necessary. As PragDave mentions, it is like learning karate. If you’re a beginner game developer, you should be able to emulate existing game developers before you start trying to work on your own plans. You can’t start by being the Master. You have to start as a beginner by emulating the Master.

People on GameDev.net periodically find that they need to inform idealistic newbies that they won’t be able to make the best MMO game ever. “Try something simpler, like a Tetris clone” or “You need to learn how to program” or “/me slaps you with a trout” might be common responses. The newbie is a student of game development who thinks he/she can skip the beginner and intermediate phases and start making games like a master. The newbie needs to learn how development works first. He/she needs to learn the rules. It’s learning the “How” before the “Why”.

I have a number of ideas that I think are somewhat unique, and I would love to make games out of those ideas. At the same time, I know that if I try to make those games today they won’t turn out nearly as good as I would want. I can, however, make simple clones, and I’ve already made a Pac-man clone in QBasic years before, complete with bouncing cherries and multiple levels, so I know I can do it. Perhaps a Space Invaders or Asteroids clone wouldn’t be such a bad idea after all. For a long time I thought that making clones of existing classics would be wrong in some way. I could do better and make something unique for my first few projects, right? I mean, does the world need another Pong clone?

Well, perhaps it does.

I’ll still try to finish Oracle’s Eye first since I think that finishing a game project is a good habit to gain. My next projects will likely be some simple clones which will be easier to complete in a month.

Categories
Geek / Technical General

Building a Better Game Blog

Video game blogs: the next level is a post on Aeropause on the topic of writing a better blog in general and a game blog in particular.

I actually gave Eats, Shoots, and Leaves to my girlfriend, so I might borrow the book from her one day. I’m also interested in reading 31 Days to Building a Better Blog. I never intended to make money from my blog. I don’t blog professionally (although one might think that I spend enough time doing so at the expense of other things I SHOULD be doing professionally) so I don’t think all of the advice will be relevant, but I should be able to gain some insight into better blogging.

Categories
General

I’m Published in The Escapist

I wrote a letter to The Escapist and it got published. Reading it again, I see it isn’t that great of a letter so it’s not quite something to be incredibly proud of. Hopefully my suggestion of moving the navigation bar from the bottom to the top would be taken into consideration. It’s really annoying reading that magazine online, and I don’t always have access to a printer.

I think I might try to submit an article for a later issue. which would be something more newsworthy. But hey, this is my blog. I get to print whatever I want. B-)

Categories
Game Development

I Want This Musician!

Paul Taylor wrote about working on an indie game called Determinance, and he is exactly the kind of musician I would want to have working on any of my own games:

Each track, even the menu music and closing theme, is based around a core melody or chorus. This is something I believe in passionately – if you can’t whistle the tune of a song then it’s 99.9% likely to be worthless.

Wouldn’t you want a person who is passionate about what he does making your games?

Categories
Geek / Technical General

Creative Writing Prompts

Prompts to start you writing provides a link to a site to help you get into the writing mood. The Imagination Prompt Generator actually generates topics for you to write about.

Some examples that came up when I tried it out:

“One thing I want to learn right now is…”
“If you could pass on a piece of advice that meant a lot to you when you received it, what would it be?”
“____ was my favorite cartoon because…”

And you can just keep going until you find one that appeals to you, write for a few minutes, and BOOM, you’re in the writing mood and can start writing whatever it is you wanted to write. It reminds me of the creative writing exercises I did in grade school.

I searched for a similar site for hacking prompts, but I decided that it probably isn’t a good thing to encourage people to code creatively. It’s not like writing. I thought that maybe I can get into the coding mood if I write a simple, 10-line program based on a suggestion. I think it is more accurate to say that if I am having issues getting into the mood to program, I probably don’t have a very clear reason to program. I shouldn’t just sit down to a blank file and start hacking. I should have some specific goal. Why am I coding? I should design it on paper and try to figure out what details I’ll need. I can be creative coming up with solutions in that phase, but I should not be creative with the actual code.

Categories
Geek / Technical Linux Game Development Marketing/Business

Stupid ECommerce Website Design

I’ve been passively looking for a gaming laptop that can also run Gnu/Linux for some time now. It is easy to find laptops that run Gnu/Linux in general, and I know I can find some quality laptops with Gnu/Linux preinstalled from various websites such as Sub 300.

Desktop replacements can cost a lot of money as well, and I might be inclined to pay if I could guarantee that what I pay for actually works. I’ve read a number of articles on Linux on Laptops in which the laptops work…mostly. Things such as built-in wireless or hardware accelerated graphics or hibernate/restore functions can be unimplemented or poorly supported. Buying a laptop requires research for a Gnu/Linux fan in general, but a Gnu/Linux gamer needs to look even harder.

So I thought I found my salvation at Linux Voodoo when I found the X-Pad+ Wide Screen Gamer AMD. Holy cow! And it comes with Debian preinstalled and ready?! Sweet! How much?

Uh…how much?

You mean to tell me that I have to login just to see what the price is?!? Why?

Imagine if you wanted to buy some stuff online only to be told that you had to sign up at each and every website just to comparison shop. How many different accounts and logins would you have to keep track of? Would you like to keep tabs on that on top of the logins for the websites you actually shop at? I didn’t think so.

In the meantime, does anyone have a good suggestion for a gaming laptop that Gnu/Linux can run on?

Categories
Game Design General

Your Writing Style

Conversational Writing Kicks Formal Writing’s Ass is another insightful post on Creating Passionate Users that say that formal writing, as nice and professional as it is, is less effective at teaching than conversational writing is. Conversational writing does something to the brain that makes it act as if it is involved in an actual conversation and so forces the reader to pay attention much more than formal writing would. You just remember certain things easier this way.

I’ve mentioned before that I am always interested in learning how to write more effectively, and this post had some good points. Of course, besides writing better, I’m wondering how this principle might apply to game development. Specificially, how do I make games that you would respond to (notice I said you instead of “the gamer” or some other third person term)?

“You Win!” was always more exciting than “Player 1 Wins!” or “GIAN is the winner!”

In RPGs, it is common to meet NPCs that talk to your character. Even though the main character in Chrono Trigger never talked back, the conversation was more compelling because you really only controlled the main character when walking around. People were talking to YOU vicariously through the character, and it was all the more real when you used your real name in the game.

Is your game an educational title? Perhaps you should make the text in the game more conversational and appear to involve the player more. I don’t think it all needs to be second-person “you” and “your”, but you definitely don’t want anything to appear stuffy and formal.

Are the instructions for a game more understandable if you say, “If you wish to access the main menu, hit ESC” rather than “Hit ESC for main menu”?

What about marketing? Can your website become more conversational? Does it sound too much like a thesis? Would changing some sentences or whole sections make the game more memorable and therefore more likely to bring back a potential customer to make a purchase?

The post, like many on that blog, has given me some things to think about.

Categories
Geek / Technical Marketing/Business Politics/Government

Happy Software Freedom Day!!

Happy Software Freedom Day!

Software Freedom Day (SFD) is a worldwide celebration of Free and Open Source Software (FOSS). Our goal in this celebration is to educate the worldwide public about of the benefits of using high quality FOSS in education, in government, at home, and in business — in short, everywhere! The non-profit company Software Freedom International provides guidance in organizing SFD, but volunteer teams around the world organize their own SFD events to impact their own communities.

Elsewhere in the Starter Manual:

Software Freedom Day is not about any individual companies or people; Software Freedom Day is a positive community celebration of Software Freedom.

w00t!!