Categories
Game Development

Oracle’s Eye Development: Movement Code Improvements

Already I’ve improved the movement of the Player and the Ball.

Essentially, what I am supposed to do is make any moves, then walk through the Kyra Tree, then check for collisions and respond accordingly; however, my hardcoded movement code moved the Player, then walked the Tree, then moved the Ball and checked for collisions. The Player worked out just fine, but the Ball would get stuck in the Wall.

Then I changed it so that the actual movements wouldn’t happen until the update code ran. When you push the arrow keys, the Player’s Direction changes accordingly. It will only change positions during the update, and it does so at the same time as the Ball. Then I walk the Tree, and so collision detection is a bit more accurate.

Also, the Player only moves in four directions now, so it isn’t possible to move twice as fast on a diagonal. For this game, not being able to move diagonally shouldn’t be a problem, but an adventure or action game might require such movement in the future.

The Ball currently changes Direction when it hits a Wall. It’s actually kind of cool to watch the Ball bounce back and forth between the Walls. If I start adding more Walls throughout the middle of the level, it could actually be fun.

It’s amazing what can be done when you don’t have to worry about ruining the code base. I’ve been using Subversion all this time, but psychologically I’ve been concerned about doing the wrong thing. I basically convinced myself that I’m going to be writing code that needs debugging anyway, so the “wrong thing” will most likely be a bug that needs to be fixed to make the right thing. So far, I haven’t had to rewrite whole sections of code, or if I had, I haven’t noticed it as hard work.

Thanksgiving is here, and I’ll be out of town for the rest of the week/weekend. I’ll probably have a bunch of spam comments to delete, and I won’t likely have time this weekend to approve any. Still, keep the comments coming. I love the feedback. B-)

Categories
Game Development

Oracle’s Eye Development: What’s Left?

While I have pretty much made the game “feature complete”, I feel there is still a bit of work to do. As most developers would put it, I did the first 90%. Now I have to do the remaining 90%. Except I feel like I did the first 20% and still have 160% left. B-)

What improvements and additions can I make?

  • Sound. Right now, the game is completely silent. It shouldn’t be. Even simple beeps would be an improvement.
  • Improved collision detection. If the Ball hits a Wall, it is possible that it can become stuck. It shouldn’t.
  • Level loading. It’s very boring in its current state. It has only one level, and it is a trivial one at that. It should be able to load an arbitrary level layout from a file, which will allow multiple levels to be created. Any players should be able to load an arbitrary level from a menu.
  • Graphics. Why is the Ball always rotating in the same direction? Why is the Player’s sprite just a static stick-figure? Why not spice it up and create some animated movement?
  • Better quality code. My code doesn’t delete memory properly. When I create a Room, it is made up of a series of sprites that get owned by the engine, and the engine deletes the sprites just fine when the engine is deleted, but the Room itself isn’t deleted. I couldn’t delete the Room without causing a seg fault since I shouldn’t delete the Tiles in the Room. I’m sure there are other places that could be improved.

With all of these improvements, why leave Oracle’s Eye alone? I admit that I want to start working on something I can knock out relatively quickly, such as a Space Invaders clone. I’ve learned a bit while working on this game, and so I should be able to improve on what I’ve learned by working on something new. On the other hand, I feel like I would be quitting while there is still some good educational value left in developing this current project.

It’s obvious that I can’t really call Oracle’s Eye “complete” when there is so much left to do. I have decided that I will continue to work on it for the rest of the year. With holidays coming up, and the fact that I don’t work for more than a few hours a week in the first place, I don’t exactly have a lot of time to work on it, but I’ve surprised myself with how much I could accomplish so far.

At the very least, I should replace the stick figure with a living, breathing character of some kind. B-)

Categories
Game Development Geek / Technical

Free Sounds

My friend Becky Kramer tuned me into The Freesound Project, a “collaborative database of Creative Commons licensed sounds.”

Basically, all the sounds in the project are available under the Creative Commons Sampling Plus 1.0 license. You can creatively change a work and use the derivative work commercially or noncommercially. You could take the original and distribute it in a noncommercial way.

Sounds great to me, especially for my early projects. I’ll pay for my audio needs when I think doing so will help sell my games. For now, when I am just trying to make simple games for myself, these freely available sounds will be good enough.

Categories
Game Development Linux Game Development

Oracle’s Eye Development: Technically Completed!

That’s right! If you look at the plan for Oracle’s Eye, I finally completed the tasks that I originally wanted to have completed at the end of the second week of August. B-)

  • The Player moves in four directions. Actually, it moves in eight, although it is coded badly and so the Player moves faster diagonally than on the four main directions.
  • The Room is currently empty and hardcoded. I wanted to be able to load Rooms from a file, but for now I’ll deal.
  • I have a Ball that can be kicked around the Room. It obeys the Walls, although it will get stuck. The Ball also passes through the Player instead of stopping upon impact.
  • When the Ball hits the Goal, the level ends. Well, the program itself just closes, but still.

It’s ugly. It needs work. It’s definitely unpolished. But it runs, it works (for the most part), and it is pretty much “complete”. The question I have now is “Do I stop?” Should I continue to work on it and make it more appropriate for mass consumption, or should I just stop here and work on something else? Right now, you just move the stick figure towards the Ball, and upon touching the Ball, it moves towards the Goal. You could play around with it before it gets there, of course. It’s not very interesting, I know.

Download files:

codenameOraclesEye-r90.tar.gz, 8.0 MB
codenameOraclesEye-r90.zip 8.5 MB

To build, you will need libsdl1.2 and libsdl_image. Go into source/kyra_2_1_1/kyra/engine/ and run ./make. Then, you go back to source/ and run ./make. To run, ./oracles-eye.

Only available for Gnu/Linux, but there shouldn’t be too much needed to get it to run on Windows.

Categories
Game Development

Oracle’s Eye Development: All Day Development Ruined?

I was fine last night.

I was fine early this morning.

But today I got this incredibly sharp pain in my lower back. I lay on a couch with a heating pad and read a book, but I really wanted to get on development. My morning was shot, but my afternoon and evening could still be productive, right? I have to admit, I was tempted to call it off. I should lie down and relax.

Well, screw that! With Thanksgiving and Christmas coming up, I’ll have plenty of time to relax. Today is my day, and I will work on Oracle’s Eye. Maybe I’ll take more frequent breaks, but I am not giving up a great opportunity to get plenty of quality work completed on this project.

I’ll let you know how much of a folly this decision is later. B-)

Categories
Geek / Technical Marketing/Business Politics/Government

FOSS Is Not To Blame For Piracy

Linux News says Digital Rights Management Picking on the Wrong People is an article to defend Free and Open Source Software against the charges that they are the ones who promote piracy.

I was surprised to hear from someone on the Indie Gamer Forums many months ago that all of the contact he had with FOSS was with people who only wanted things for free and would pirate everything from movies to games. There is also a lot of animosity towards FOSS in the ASP newsgroups, and a few months ago there was even an article in the newsletter about how FOSS was supposedly bad for business and didn’t offer any benefits to the public.

My experience is very different. I have a friend who refuses to buy DVDs because he doesn’t want to support the media cartel and the digital restrictions management used in most DVDs. I know people who pirate games and movies, but I also know people who refuse to use anything to do with Windows. If it isn’t available, they do without. After all, if you can’t play a game on Gnu/Linux, what would be the point in pirating it? Rather than break the law to watch his own movies, my friend just decides to be very selective with his DVD purchases. Revolution OS is one of the only DVDs I know that doesn’t use stupid region encoding, something that does nothing but punish paying customers while allowing commercial piracy to still occur.

In any case, it seems to me that most people who use Free and Open Source Software are fully aware of the licensed terms under which they may use their software. They are the ones who refuse to use Windows Media Player because they would prefer that their software doesn’t change the way their computer works without them knowing about when, how, and why. You can read the WMP EULA and see that it is pretty absurd what you have to agree to allow Microsoft to do. If anyone is committing piracy, whether casual or not, it’s more likely the people who don’t realize what it is the license allows them to do. Why would FOSS supporters be part of a group of people who ignore licenses and EULAs?

Sure, there are those who don’t care about the license and just want everything to be available at no cost. Open source usually is free-as-in-beer, and so if you want freely available software, it’s definitely safer than trying to get away with copying software illegally. Still, some people are going to make illegal copies of Windows, or games, or office software, or even shareware, and it is definitely possible that those same people might support FOSS.

But what a broad paintbrush we would have if we made the assertion that FOSS users in general are the ones who will most likely copy software illegally. It really makes no sense that people who consciously use FOSS to avoid vendor lock-in or support software freedom would at the same time pirate software that was proprietary or work only on a proprietary system that they are not using.

I guess I don’t interact with enough people outside of the FOSS community. I haven’t heard of too many people who believe that we’re all criminals or out to destroy the livelihoods of software developers or that we’re just anti-Microsoft zealots, but those people exist. Somehow they “heard” or “learned” what they believe FOSS is all about. They get almost as shrill defending what they think as people do when you try to tell them that copyright infringement is not the same as “theft”, and it is probably because the two issues are so related in their minds.

Maybe it is just because it is an issue related to copyright, which is fairly complicated and even people who think they know about it can be wrong. Maybe it is because FOSS is really different; when you’re driving an automatic all your life and someone gives you a manual, you’d freak out at first because you have no idea how to drive. “Why is it so complicated?! I just want to get from point A to point B!!” Or, since a lot of you are probably geeks likes me, it’s like when you give someone vi or emacs after they have been using text editors like Notepad or Pico for years. It’s a different way to think about typing. Similarly, FOSS is a different way to think about software.

Some people dismiss FOSS for their own good reasons. They’ve at least thought about it, researched it, and come to their own conclusions. But it seems that when I do meet people who “don’t get it”, they really don’t get it. They don’t understand that Free, with a capital ‘F’, as in Freedom, is different from free, lowercase ‘f’, as in “no cost”. “But why is it such a problem to pay for it?” It isn’t! There is no problem with paying for FOSS. People can’t wrap their heads around it because of the unfortunate double-meaning of “free”.

But people for some reason have no problem making the leap from “FOSS means no cost”, however erroneous that thought is, to “FOSS means stealing software”, which is an even worse assumption. While I believe some might have an agenda and would purposely lead people astray, and some other people might honestly feel that they are fighting a good fight to defend non-FOSS, I think most people just attack what they don’t understand.

Categories
Geek / Technical

Goblet of Fire

I went to the midnight showing of Harry Potter and the Goblet of Fire. I didn’t get to sleep until after 3:30AM, and I had to go to work today too. I’m dead tired.

The plot and dialogue seemed to move at a very quick pace in the beginning. I started to wonder if they purposely gave the older actors less lines. I also found that the movie deserves its PG-13 rating, and not just due to the parts with Voldemort, death, and destruction. There was quite a bit of sexual inuendo, and I felt that the movie would have fit at home in the 80s for some of the campy-ness. I mean, there is the dance scene, and Hagrid’s hands move “below the equator”, only to be moved back up by Madame Olympe Maxime. Wasn’t that right out of a movie like Revenge of the Nerds?

Not that it was bad. I really enjoyed the movie. It was both funny and disturbingly scary.

Categories
Game Development

Oracle’s Eye Development: Kicking the Ball

Oracle’s Eye development has been fairly slow since I started it in August. I’m trying to get working on it earlier in the evenings I have dedicated to development, but I find that I usually don’t get started until late at night. When I finally get into a groove or otherwise in The Zone, I learn that it is 12:30AM or 1AM and I need to go to sleep.

In any case, I finally accomplished another milestone. The Player can now kick the Ball around!

I won’t go into too much detail, but I found that I didn’t have to make too many changes or additions. I was originally going to create a somewhat robust Event handling system, but someone reminded me that this is supposed to be a VERY simple game. I am allowed to hardcode it for now. I can always add the Events if I find I actually need them in the future.

I am also trying to remember not to over engineer. I found that hacking things out didn’t cause as many problems as I thought it would. I added an enumeration for Direction: UP, DOWN, LEFT, RIGHT, and STOPPED. Doing so allowed me to keep the code I already had to move the Ball around. I just had to check which Direction it was moving and apply negative signs to the moveX() or moveY() functions as needed.

I then added a check to the GameWorld’s move* functions that control the Player. Now instead of just checking if it hits a Wall, it checks if it hit the Ball as well. The Ball then moves accordingly. It’s a simple check; the collision detection isn’t very robust, but it gets the job basically done. The Ball gets stuck if it hits the Wall for some reason, and the Player can move through the Ball if it is moving faster, but it works. I’ll fix it later.

My next chance to work on it will be Sunday, which is when I scheduled all-day development on Oracle’s Eye. Ideally that means eight hours to work on the project, but if past performance is any indication, I will probably get two, maybe three hours out of it. B-\ With a Ball being kicked around, I would think that it shouldn’t be too hard to create an Exit and apply a new check to see if the Ball hit the Exit. After that milestone is hit, I technically have a playable game. It’s great to know that my one month project is almost “completed” after almost four months. B-)

Categories
Game Development Games

IGDA:C Event: Stubbs the Zombie Post Mortem

After guests arrived and signed up to win a few lightsabers courtesy of Virtual Partners Training Center, Carrie Gale introduced Alex Seropian.

Seropian is the founder and president of Wideload Games, Inc. He left Seattle after selling Bungie to Microsoft and creating Halo, coming right back home to Chicago. He talked about the guiding principles for Wideload and about the unique team management and development model used by the team. The post mortem is more about the way the company worked than anything else, and it made for a good presentation.

He talked about how Wideload was founded to create and develop original games. While everyone else is doing one thing, he wanted to take Wideload in a different direction entirely. To help, he came up with the Wideload Commandments:

  • Thou Shalt Establish Creative Direction
  • Thou Shalt Own Thine Own IP
  • Be Nobody’s Beeotch
  • Keep Overhead Low

He elaborated by talking about how the Wideload brand should mean something to fans and be independent. It’s a lot easier to be original when you don’t need to worry about appeasing a completely different party, especially if that party owns the copyright and trademarks over your head. Wideload was going to be able to dictate its own success, create its own value, and try to make deals with partners that have the same goals. Alex also mentioned how there shouldn’t be a sharp ramp up and down between projects. Even though costs and requirements are increasing, it was possible to limit costs by keeping the team small in the first place. He touched upon Brooks’ Law and noted that with the smaller team, communication was faster and there was reduced overhead. Talent was hired as needed instead of paying for a huge team that would be ultimately underutilized.

What Went Right

Alex noted that the ease of communication helped to foster a truly creative environment. People weren’t worried about saying the wrong thing in front of management, and so any idea could be acted upon and developed by anyone within earshot. Some of the zanier ideas made it into the game.

They had the ability to say no to bad deals and didn’t have to live hand to mouth. Mutually beneficial deals were easier to get than they might have been for another developer.

The cost structure helped mitigate costs, even though they ran four months behind schedule. They paid for the assets they needed instead of paying the salary of an artist, for example.

They contracted out work, and they scaled up and down as needed. They weren’t stuck with employees that could negatively impact an otherwise massive team.

They made use of local talent. Quite frankly, Chicago rules when it comes to game development.

Wideload also leveraged the Internet to get shorter iteration cycles, which led to more iteration cycles, which led to improvements that wouldn’t otherwise be possible. The real time communication and concepting forums helped keep everyone on the same page, even with the contractors.

What Went Wrong

Unfortunately, the proprietary engine they used (Halo) didn’t have a lot of documentation. There was the question of it being worth the effort of training a contractor who will only be on the project for a few weeks.

While the contractors were great at keeping costs low, Alex found that hiring was difficult since there weren’t many reference assets and tests available. There wasn’t a single producer, and someone needed to manage the art direction and contractors. This task fell to the internal staff, which took them away from the actual work they might have otherwise been doing. The resulting feedback delays lengthened iteration cycles.

Crunch mode still occurred, and the contractors were not going to crunch for the internal team.

Conclusion

In the end, the “Grand Experiment” was a success. Stubbs the Zombie shipped and Wideload is still around to make another game. By keeping control of the creative direction of the company, the size of the team, and the budget, Wideload was able to create a funny, original title with few major obstacles. With major figures in the game industry warning us about the rising costs of game development, perhaps Wideload’s development model might inspire others.

Categories
Politics/Government

Even More DRM Stupidity

DRM: A Personal Story is another excellent article from ZDNet on the topic of Digital Restrictions Management.

The Digital Millenium Copyright Act was supposed to be legislation to update the copyright laws to protect copyright in an age of computers and one minute downloads. The biggest change to come from it was the idea that circumventing copy protection, no matter how simple and no matter what your intent, is now a felony. Unfortunately, technology talk goes over most heads, and when you mix in copyright, most people will have their eyes glaze over.

Well, this article makes it quite clear how DRM and the DMCA can affect customers adversely. Imagine trying to take a copy of a television program from your TiVo and copy it to your new video-playing iPod. It’s easy. It’s simple. It’s a felony.

And the fact that it is a felony is stupid.

Let’s ignore the fact that it is already illegal to upload a copyrighted file to a friend and that making it illegal to circumvent copy protection is just absurd overkill that doesn’t do much to discourage it anyway. What public benefit comes from turning your customers into felons just because they wanted to interoperate with other devices they own? You know, Fair Use? The reason why I am allowed to use my VCR to copy a television program for later viewing? The reason why I can take a VHS tape and convert it to DVD? The reason I can rip my music collection to OGG Vorbis or MP3 and play it on my computer? Why do my potential Fair Use rights have to be nullified simply because it would be illegal to take action to exercise those rights?

Who benefits? TiVo gets to keep its business model? Yeah, that’s nice. I can only watch a video on a device because that device makes it impossible to play the video on another device without requiring a law to be broken.

So, I will never get a TiVo. I will never get an iPod. I will never get a device that prides itself on being so proprietary and restrictive.

I would really love to read some decent pro-DRM articles, but any that I’ve found are just spreading Fear, Uncertainty, and Doubt. I really don’t believe that paying $15-$20 for a Dave Matthews CD and ripping it to my computer would actually bring about the downfall of the music entertainment industry. I really don’t think that the lack of a Broadcast Flag on television signals is going to destroy television. After all, the VCR didn’t bring about the ruin of the movie industry, even though the movie industry would have loved to have made the VCR illegal.