Categories
Game Development Personal Development

Oracle’s Eye Development: The Room

I believe I already mentioned how unproductive it is when I try to design the code to Oracle’s Eye. When I was last working on the project, I was able to move some functionality from one class to another. It basically cleaned up my code and made it easier to work on additional functionality.

Still, it didn’t really seem like a lot of progress. I want to make it possible to load a complete Room. When I started this most recent programming session, I had hardcoded some Tiles and had the Player moving about. They didn’t interact, which was fine. I’ll work on that functionality later.

In the last few weeks, I found that I was spinning my wheels trying to figure out which class should own what objects. At one point, I realized that I don’t have anywhere near the experience required to make the decision about how the game hierarchy should be designed. As much as I didn’t want to do so, I think hacking out a solution would be better than not implementing one at all. Once I have something, I can always fix it or refactor it. Nothing has to be permanent, and I don’t need to worry about destroying my progress so far because Subversion has all of my changes. So, I dove in.

I actually decided to create a GameWorldFactory class. I’m not terribly familiar with design patterns, but I wanted a class that would be responsible for creating objects of different types and make them ready-to-use. Well, to do so I figured that I would need the GameWorldFactory to know about the current Kyra Engine. PlayState currently owns the instance of it in a private pointer called engine_, and I decided that I would just have the GameWorldFactory constructor take the engine pointer as an argument. Maybe later I’ll decide that the GameWorld should own the KrEngine, but for now, I just want to get something accomplished. I don’t know enough at this point in time whether it results in a bad design. I have a feeling it is wrong and that there is a better way, but I can fix it later.

It wasn’t that hard to create the factory. The code to create the Player wasn’t too different from what I already had in PlayState. Since I didn’t really have much in the way of a Room, I had to do a bit more work, but again it was fairly simple to implement.

In the end, I managed to accomplish my goal for the evening and make a Room. GameWorldFactory hardcodes the default 10 x 4 Room, but I also plan to make a createRoom() that takes a file as an argument. Naturally it would be used to load levels of some sort. Perhaps I’ll also make one take a vector as an argument so that levels can be loaded from memory instead of from the hard drive. I’ll deal with that issue when I need to do so.

Here’s a scaled down image of the stick figure Player in a portion of the Room.

In reality, the Player is on top of the Tile sprites, and they currently know nothing about each other. I’ll work on putting the Tiles and Player in the right hierarchy so it is easier to do hit detection. For instance, the game should keep the Player from walking outside of the Room by making sure that the Player can’t walk through Walls.

Now for admitting something: I came home not wanting to work on this project even though I dedicated the evening to doing so. I was really tempted to play a game or watch television. I don’t know if it just seemed overwhelming to start or if it was just that I didn’t anticipate it to be enjoyable. Something was nagging at me not to work on Oracle’s Eye, but I decided not to listen to it.

I told myself that if I could just start and work on it for an hour, I’ll give myself permission to play Empire Earth or do whatever else I may decide to do.

Hours later, I was putting the finishing touches on the hardcoded createRoom() function so that I could get a nice 10 x 4 Room lined with Walls and filled with Floor tiles. It’s almost midnight as I write this post. I love being productive, even if it is weird that I could trick myself into doing it. B-)

Categories
General

The Recent (and Current) Downtime

If you’re lucky enough to see this message, it is because you finally managed to connect to the site’s server for the random few seconds it allows me to do so throughout the day.

Basically, my webhost moved my site to a new server, but had issues moving their DNS servers. The old ones expired, but the new ones aren’t yet setup. I don’t understand why it is still possible for me to access the site at all, but hopefully the site will become stable soon.

I apologize for the delay, and I thank you for your patience.

Categories
Geek / Technical Politics/Government

Digital Restrictions Management

I’ve talked about so-called “Digital Rights Management” before, but I’ve noticed that it is coming up a lot on ZDNet. For instance, Sun is trying to come up with an open DRM, but I don’t care how open a system is if the purpose of the system is to restrict what I can do with music and movies. “I’ll bind your arms and legs to a chair, but I’ll tell you where I got the rope, how much it cost, and how much pressure I applied to tie the knot.” Thanks, but no thanks.

The latest I’ve read is We the Sheeple (and other tales of DRM woe). Basically, another ZDNet blogger didn’t think that DRM was that big of a deal, and so the author tried to make better arguments.

People will readily point out the dangers and health risks of smoking. It’s fairly straightforward and easy to understand. Smoke, and you get cancer. Smoke, and your family and friends will get sick. It’s easy to fight against companies that make so much money off of a product that is so dangerous to the public.

Copyright law, on the other hand, is confusing enough as it is. People in general don’t know an operating system from the company that produces it, and since DRM is tied so intimately with technology, most people won’t care enough to be up in arms about it.

There are some serious concerns, of course. DRM puts a lot of control into the hands of the copyright holders, which isn’t so bad in and of itself. What is bad is how overreaching it is. Fair use is still fair use, but just owning the means to circumvent DRM in order to do something protected under fair use is a felony in the United States under the Digital Millenium Copyright Act (DMCA). Very clever. “Yes, you are allowed to play your music on any player you want. Yes, you are allowed to use a few seconds of audio for your class project. Yes, you are allowed to make a mix CD. No, you can’t copy the music from the original CD to do so.” Absurdly lovely.

Or how about when TiVo automatically deletes episodes of shows you haven’t had a chance to watch yet? Or when your new VCR isn’t allowed to tape certain shows because the television broadcast contains a no-copy bit?

Be a good little consumer and roll over.

Digital Restrictions Management: just one of the reasons I prefer to use a Free operating system.

Categories
Game Development Games Geek / Technical

My Thoughts on the Revolution Controller

Nintendo announced their new controller for Project Revolution some time ago. It’s old news, but I thought I would comment on it now that people have had a chance to present their thoughts.

I personally thought it looked like Yet Another Hoax when I first saw it. The idea that the new game system would use a controller that looked like a regular television remote was just too silly to be true. It turned out that it wasn’t a hoax, that Nintendo was doing something way out there, and I just didn’t know what to think at first. I seriously thought I saw the foretelling of the death of Nintendo.

Then I read the articles that went with the pictures, remembered Nintendo’s goal of making innovative games rather than The Same Games with More, and felt a bit better. I saw the video and can see some real potential in this console, even though the people in it were being way more animated than I believe they would have been in reality.

Time will tell whether it will actually be a hit, but I can see that this system will be either be a complete failure or an amazing success. Games tailored for the controller will really only be possible on this system. Talk about exclusivity. Real time strategy games that actually play well will be possible on a console! Non-gamers, a hugely untapped market, might actually play games! And if it will be easier for indie developers to make games for it, all the better. Of course, if game developers would rather save money by making games for the systems that are most like each other, that could be a problem. Darn double-edged swords.

People have expressed concerns about tired arms, carpal tunnel, and game play errors when you talk to someone in the room and inadvertently move your hands an inch to the side. I’m sure they are valid concerns, but I’m also sure that Nintendo has them in mind. Other people note that the failed CD-I controller was also a remote, and if the Revolution controller was just a regular wireless remote control with buttons for input I would agree that it’s been done before, isn’t that impressive, and has failed. Of course, this controller is not just a bunch of buttons on a television remote. It’s sounds more like having a television remote crossed with a computer mouse crossed with an EyeToy. I can see the Revolution being marketed like the old consoles used to be: as family entertainment systems. My mother might actually play a Mario game without freaking out about the controller first.

In the end, I think that Nintendo will do really well. It’s making a profit from games in the first place, unlike some companies, and so can afford to be innovative. They may fail, but I appreciate the willingness to be different, not just better. And the idea of wielding a sword or swinging a bat by actually doing the motions instead of simply pressing buttons just sounds too cool. B-)

I look forward to the Revolution, if only because the older games will be available to play. I’m also interested in seeing what games will be possible with the system. As far as I know, no one is wondering the same with the other consoles. We already know what we can play on the PS3 and XBox 360 (totally 357 more than the PS3), and of course nothing is wrong with wanting to play good games. It’s just really great to see a company respond to “More speed” and “More graphical power” with “More possibilities”.

If you haven’t seen any reports on this controller, having been under the proverbial rock all this time, check out the following links:

Categories
Game Design Game Development

GameGame 1.0 Released

GameGame announced the release of GameGame 1.0, a brainstorming tool to help with game design. It’s a card game that you can play to make a game.

Each card represents game design elements, such as a Goal or Theme. When you want to have something for the player to do, add a Game Mechanic card. When you want a place, add an Environment card.

Using a game to come up with a game is a cool idea. I printed out the cards and instructions myself since I figured they would be fun to try out, although it would be weird to use the Publisher card to put the kibosh on my own ideas.

Categories
Game Development Games Geek / Technical Marketing/Business

Manifesto Games

I remember when I first read The Scratchware Manifesto detailing the problems with the game industry’s economic and development models. I thought that it was a nice read but probably written by someone who might not actually know about the game industry.

Then Greg Costikyan reveals that he was the author of the piece, shocking many in the game industry who also thought it was written by some wannabe game developer. He wrote a few articles for The Escapist about the topic as well. They all boil down to rants against the current model which stifles innovation and creativity and will not be sustainable for long. Of course, everyone knows that there are problems, but not quite so many people are doing much about them.

Now, he decided to quit his job at Nokia and startup a company to help make his dreams for a better game industry a reality.

From his recent blog post announcement:

The new company will be called Manifesto Games; its motto is “PC Gamers of the World Unite! You Have Nothing to Lose but Your Retail Chains!” And its purpose, of course, will be to build what I’ve been talking about: a viable path to market for independent developers, and a more effective way of marketing and distributing niche PC game styles to gamers.

It sounds exciting. Heck, it’s exciting anytime someone starts up their own business venture. Indie game developers seem to have issues with marketing their products. Not everyone can make a Bejeweled or Snood. And those that make something like Darwinia struggle to get noticed. I can see Manifesto Games being an Amazon-like one-stop shop not only for indie games but also for those niche hardcore titles that retailers won’t carry.

I’m not sure if I’ll like how it will get implemented. I’m mainly afraid that game developers will insist on Digital Restrictions Management everywhere. That would quickly make Manifesto Games really crappy for the customer, and I wouldn’t want my games to have any part of it.

But Greg will be blogging about the startup, and so he’ll likely be looking for feedback. I wish him luck.

Categories
Geek / Technical

More Collective Knowledge: Wikibooks

I found this news item on ZDNet: As the Wikibooks website says, it is a collection of open-content textbooks that anyone can edit.

Wikipedia already has a huge amount of up-to-date content, and so I wasn’t sure what the difference would be. After all, they both use MediaWiki as the server software, so wouldn’t it just be a duplication of effort?

Of course, Wikipedia covers topics as an encyclopedia would. Wikibooks will have books on the various topics. While the former would have an entry giving a broad overview of a topic, the latter might have entire books that go deep into the subject matter. For example, Wikipedia’s entry for the Ada Programming Language talks about the history of the language and its main features. It provides plenty of links to tutorials and other sites of interest, but the entry doesn’t provide any useful information to the student programmer. Wikibook’s entry for Ada Programming, however, teaches you how to program using Ada. It even has a link to the Wikipedia article!

People are getting excited about Wikibooks. For one, expensive textbooks that are outdated by the time they reach the classroom might be a thing of the past. Publishers might need to adapt, although I personally think that nothing can really replace solid hardcopy that you can read away from the computer. Another possibility is that classroom research might involve working with Wikibooks. Assignments might look like, “Go to the Wikibook entry on Set Theory and add any missing information to the Axioms section.”

It’s also scary. For example, Joe Schmoe might think he is an authority on usability and edit the appropriate page. If he has it all wrong, how will you know when you go to learn about it?

Of course, that same possibility exists for Wikipedia or the Game Programming Wiki, and those seem to work out pretty well. At the moment there are over 11,000 books in the database, and more will likely be on the way. They will likely get updated in a timely manner and will be superior to regular textbooks in terms of accuracy. Typos and errors will be fixed IN the book instead of on the publisher’s website under an Errata section. Perhaps most importantly, it is also freely and easily available knowledge! I’m sure Wikibooks will make a lovely addition to collective knowledge of the world wide web.

Categories
Geek / Technical Linux Game Development

An Open Source Alternative to Google Earth

NewsForge reports on NASA’s World Wind project. While the images in Google Earth of higher quality, the functionality is mostly the same.

Apparently World Wind is still Windows only. It was written in C#, which wouldn’t be much of a problem, but it also uses DirectX, which is. But it is open source, and so Russian programmer Vitaliy Pronkin created a port called WW2D that uses C++ and OpenGL.

WW2D is currently at version 0.99.5, has binaries available for Windows and Gnu/Linux, and has the source available. Apparently a Mac version shouldn’t be too far behind.

I’ve been waiting for a Gnu/Linux version of Google Earth for some time. Apparently a lot of people have. And a port shouldn’t be difficult to do since they already have Google Earth Fusion running on Gnu/Linux. I haven’t had a chance to look into WW2D yet, but the idea that people can make their own custom applications based on the code is exciting. While Google has released the Keyhole Markup Language, developers can’t make tweaks or add functionality to Google Earth.

These are exciting times.

Categories
Game Development Geek / Technical Linux Game Development

Oracle’s Eye Development: I Broke The Build

A few days ago I updated my Debian Gnu/Linux system. Today I sat down to get some really productive work completed for Oracle’s Eye. Since I didn’t know where to start, I decided to build the project, run what I have, and then make a decision on what to do from there. Sounds good, right?

Except that when I went to build the project, I had a linker error. Unfortunately I lost the actual message, but it basically said that the library for Kyra didn’t reference std::basic_string.

Eh? How did the Kyra Sprite Engine lose access to the C++ Standard Library? Am I reading that error message correctly? Maybe the packages I updated were broken? Well, according to an active developer on #debian, he builds his projects just fine. So did the Kyra installation get corrupted or something?

Oddly enough, the Kyra demo still runs perfectly fine. Am I just building it incorrectly?

To make a long story short, I ended up removing Kyra 2.0.7, installing the latest 2.1.1, and finding that it won’t compile at all. Finally I decided that since I did updates to a number of packages, some of which might be graphically related, I might as well restart my display manager. When I did so, I reinstalled Kyra 2.0.7, and my project compiled, linked, and ran perfectly fine, just as I left it.

Of course, I didn’t want to stay up too late, so I am not really going to be able to do anything useful tonight. This problem really wasted a lot of my time. B-(

I’m going to bed. I just wanted to document this bug for the benefit of people like me who might be searching for a similar error and hoping to find a solution to their problem.

Categories
Linux Game Development

Learning Kyra: A New Version Released

Recently I received an email from the Kyra mailing list announcing the newest update to the Kyra Sprite Engine. It is now at version 2.1.1, and the tutorials and installation notes seem to have an upgrade as well.

A big change is the license. It used to be dual licensed. You could either make use of the GPL or the LGPL. Now it is under the LGPL for any purpose and without the requirement to display a splash screen.

One of the new features is Isogen, a tool for quickly and easily generating seamless tiles and walls for isometric games. It looks pretty cool and makes me think about the possibility of developing isometric games.

It can compile with Gnu/Linux, BSD, and MinGW32. There is the ability to compile for Mac OS X, but apparently the run-time performance leaves much to be desired…but the source is freely available to those who would be able to submit patches!

Another thing I’ve been interested in is learning the Python programming language. People have been suggesting it to me recently, and I think after I finish Oracle’s Eye I will look into the language. The cool thing is that I won’t necessarily have to find a new graphics library since there is a Python binding called PyKyra. It isn’t new, but I just noticed it was a possibility.

I’ll need to check and see how much it breaks backwards compatibility with the old version, but I am really looking forward to giving Kyra 2.1.1 a spin.