Table of Contents
One Week Late
This second issue of Play Game is going to be one week late. Sorry about the delay.
Das Unfinished Sprite
A Case for SOUND
I have to take my hat off here in a moment of respect1. One modern-ish game programming language almost got this right. Because it's developer refused to port it to Vista, it now lays dead, cold, and severly missed. Let's have a moment of silence for Brutus2D….
…. ok, enough of that. (sniff.)
In the days of modern sound, that is, sound that can be very large in terms of data and very sweet to the ears something has been overlooked : THE AVERAGE AMATEUR GAME PROGRAMMER IS NOT A SOUND DESIGNER. Ahem. We just don't have a recording studio in our basement and honestly, we can't be bothered with recording our own sounds because we're interested in programming.
What's a Video Game Genre
There is much debate about what a video game genre really is. I'd like to clear up this issue — but to do that I have to first confuse it a bit by stating that video game genres vary depending on who you ask — and each and every view is mostly valid.
Mark Overmars Hates You
(or Game Maker's Design Flaw II)
I'm sure Mark Overmars doesn't hate you. Unless you happen to have run over his cat. This is completely not relevant to this article — mostly. The issue here is not Mark Overmars per se, but how he's discouraged noobs from every programming again after trying to make a game with Game Maker — with health.
Over at the Game Maker Wiki project we've begin a serious study of health, and though I haven't reported it yet to the guys — health is one glaring design flaw. Here's the reasons :
- health is a built-in global variable in Game Maker. You can do squat with it. It's there. You can't name any of your own variables "health" — its already taken.
- There is an action (think retard-programming) named Draw Health. It can only use the global health variable.
- After falling for the lie that they can make the game of their dreams with no coding, noobs find themselves tearing their hair out trying to figure out how to "use, add, or give health" to a "2nd player or enemy."
- It's very, very sad. You should feel sorry for all the bald noobs that Mark Overmars has created.
Here's what makes it worse : IT'S KNOWN TO BE A PROBLEM.
The correct thing to do is to remove this roadblock and add a local health variable for every object / instance. Has it been done? Well, of course not. The bald noobs are not attending his "game design class."
Note : I bear no ill will towards Mark Overmars. In fact, he deserves much credit for actually creating what I was planning to create under the name of "The Contraption." Those were my high-school days before I even had a x86 computer and I do not claim that he "stole my idea." It was an idea many people had and kudos to Mr. Overmars for being the one to make it happen.
There is Only Code
As I read new postings on the forum of Game Maker Wiki Complete, I'm struck by the deep misunderstanding of programming in general and especially the abuse of the word code. Unfortunately, I see it catching on so let's bomb the hell out of this right now before it gets out of control, shall we?
But first, a quick refresher course in the word code before we continue. There is no codes — only code. If you have a mountain of source code, you have — a mountain of source code. You do not have a mountain of of source codes. If you have a metric buttload of BASIC code in different dialects of basic, as the now defunct All BASIC Code did, YOU DO NOT HAVE FREEKIN' CODES. (ahem.)
This misunderstanding arises from two forces : a complete misunderstanding of programming and general — and those freekin' people from MySpace who also think that HTML is a programming language2
I know I may seem like I'm ranting about nothing — it's only an extra s. If you think that, well screw you. :) The important thing is the mentality behind using the s. People who use the extra s believe that programming is like punching in buttons into their favorite video game to get unlimited lives. They think that each function is an individual "code" with it's own timing and buttons. The idea of syntax and that the theory of putting information into functions and getting information out is pretty much the same for every function in existence is completely lost on them. All they think when they see a function is U U D D L R L R B A Start. Sadly, given this famous example, they also think that using multiplayer game is much like this : U U D D L R L R SELECT Start and give up amateur game programming when they find that it's not.
Squashing that freekin' s is the first step in squashing this mentality. This needs to be done. If it isn't and the manual for any programming language isn't written in combos and cheat codes, the future of amateur game programming is going to lose many otherwise bright people.
The Future of Games and BASIC : PlayBasic
Before I start this series of articles, there needs to be a bit of full disclosure about myself and Kevin Picone. Kevin Picone and I have a love-hate relationship. We both hate each other — but we both love PlayBasic. If you ever deal with K.P. on any level he's bound to piss you off in some way or another. He's a visionary who is developing what can only be described as the best game programming language in existence. If he pisses you off, just shrug it off. That's just Kevin. Now on to what's important : PlayBasic.
There's two things I wish I had more time to do : program more in 6502 and program more in PlayBasic. In the world of game programming languages, one language clearly shines as finally doing it (mostly) right : PlayBasic. It has six advantages over anything on the market today :
- It is compiled to a virtual machine, which is blazing fast.
- It has a bug-free, easy to use IDE. It's not an understatement to say that it's an honest pleasure to use the PlayBasic IDE.
- It has functions for almost everything commonly used in game programming.
- It's only 30 USD.
- It has a 120 day demo.
- It has Kevin Picone.
Blazing Fast Virtual Machine
If the guys at Sun Microsystems were to get ahold of a copy of PlayBasic, they'd be scratching their heads in wide-eyed wonder. The Java virtual machine is known to be slow in comparison to C++, yet in all honesty it's fast enough for everything a 2D game programmer needs. All virtual machines are slower than C++ — yet when you compare PlayBasic to Java, well, poor Java just doesn't cut it.
The best way to experience how blazingly fast (and I'm not just saying that) the PlayBasic virtual machine is, you just need to check out a few sprite demos Kevin has provided in the examples folder of PB. When the average person looks at these, they probably only see hundreds of spinning sprites. But don't be fooled. It's just a tech demo — I see a full-speed ultra-fast bullet hell shooter waiting to be made.
Special Note, because (I suspect) the way PlayBasic handles sprites is being changed this is not so fast anymore. I assume it will be improved. But — because Kevin hates me, I can't get a response out of him about it. Once again, don't worry about ol' KP, just buy PlayBasic. :) I recommend it.
Centerfold : SOL In Space
Our Centerfold this week is SOL in Space. Yes, the full title is "Sh*t Out of Luck in Space".
SOL in Space is both a statement about game design and one of my many unfinished sprite sheets. The idea was inspired by the "mothership" stage of Cosmic Ark for the Atari 2600, which led to an unfinished game called "Gunna Die."
The statement is this : There is only one way to end an arcade game — in the unfortunate death of the player object. Consider this, Frogger may make it home time and time again, but in the end, he winds up dead — every single time. It's a part of what makes an arcade game an arcade game.