Category: games

Boobie Teeth 0.24

Boobie Teeth 0.24 is out today. Mostly refinements in this release. Probably the most notable new feature is the wave motion. In the shallower part of the level, wave motion will be felt; dive deeper to get under the waves. I also made the level spawn event fair by having the new fish be created in a position avoiding the player, thereby avoiding unfair deaths. Some additional code refactoring under the hood.

As always, you can download the game from the Releases page.

Hi Dan

I went to the Cleveland Videogame Developers meetup tonight. It ended up being a special meeting for me, because I got to meet Dan, who was one of the founders of the meetup, but hadn’t been to a meeting in about three years.

In talking to him, I learned that he also was instrumental in helping Mike Substelny set up Lorain County Community College’s Computer Game and Simulation Design department. It was in Mike Substelny’s class that I got my start with Game Maker, a year ago. Since then, I have started out my first game project, been invited to contribute technical review on an upcoming book on Game Maker, spoken about my experiences at the Notacon conference, and in doing so I’ve realized a 30-year childhood dream and become the person I’ve always wanted to be.

It’d be easy to say I did that all by myself, but really, if it weren’t for Dan, everything else I’ve done wouldn’t have amounted to anything. For everything else I did, and as much as I’ve always wanted to make videogames, it didn’t finally come together until I took that class last year. So, however indirectly, Dan’s partly responsible for me getting my legs under me and able to move forward.

After telling him about the things I’ve been up to, Dan told me that it sounded like we had a lot in common. We both aspired from a very early age to design and make video games, we both had taken a long path in life to becoming programmers, and we both have yet to complete and release our first game. That last part threw me for a loop, but it’s true. When I asked him what games he’s made, he said he had a couple of projects that he was working on, but hadn’t released anything yet. [It seems like everyone in Cleveland Game Devs says that! :( ] I just hope that I’m enough like him that some day I run into someone who, although I had no idea, I had some small yet significant part in their life turning out the way they’d hoped it would when they were six.

Safe Zone extension for Game Maker

I have completed my Safe Zone extension for Game Maker, and made it available.

Altogether, here’s what we now have:

SafeZone.gmk – the original proof of concept, which creates a non-wrapping, square safe zone around the protected object.

SafeZone2.gmk – improved proof of concept, which creates a circular safe zone which wraps around the protected object.

SafeZone5.gmk – Further refined, now the function incorporates parameters which control whether the wrap applies in the vertical or horizontal directions, or both, or neither.

SZ5.gml – the raw .gml of the script code written for SafeZone5.gmk

SafeZone_1_0.gex – The Safe Zone extension, v.1.0, based on the SafeZone5 code.

SZ_GEX_demo.gmk – a demo project which incorporates the .gex rather than scripts.

This extension could use further refinement, as it assumes that literally anywhere else in the room is safe to place the new instance. If you have solid objects in your room, or multiple other objects that you do not want to collide with upon spawning the new object, this obviously will not hold true. But for certain types of games, such as single-player free-flight games, this should be quite useful.

Wrapping safe zone spawn in Game Maker

I got a working demo of a safe zone spawn which works with wrapping rooms. I refined my technique for determining the safe zone, and now instead of being a square, it is circular.

I like this approach, it works pretty well. Basically, rather than trying to literally “wrap” the safe zone around the edge of the room, I create five safe zones. They are at protected(x,y), protected((x+/-room_width), y), and protected(x,(y+/-room_height)). In my instance_create loop, I merely determine whether the new instance’s candidate x,y location is within some distance of any of these five points.

The current script I wrote up is working, but it just uses a distance in pixels. My original approach calculated a distance automatically, based on the size of the objects’ sprites, and a padding factor, which I liked. I’ll likely create a version of this script that works that way in the next day or so, when I have a moment, and then package the whole thing up into a .gex for distribution.

Until then, the .gmk source is already up on the site.

One other note: One of the annoying things about Game Maker is that when you write a function, you can only return a single value. In most other languages, you can create classes of objects, which can be used to encapsulate as many values as you like, and return the entire object. Game Maker kindof lets you do this, but you have to create a Game Maker object, which it a bit more literally object-like, in that it carries some baggage with it. I think that my function would be more useful if it simply returned a set of (x,y) coordinates without actually creating an instance there. But I can’t return both x and y — a function can only return one value. I could return the id of an instance of an object, however, and simply spawn an empty, spriteless object at those x,y coordinates, and allow the developer to either change that instance into whatever kind of object they needed there, or else grab the x and y values from the object and destroy it. It’s an idea I’m toying with, not really sure which way to handle it is best at the moment, but it’s fun to play around with ideas.

Spawning objects outside of a safe zone in Game Maker

In Game Maker, it’s non-trivial to spawn a new instance, avoiding collisions with existing objects in the game. This can make it tricky to create games with “fair spawning” so that the player isn’t automatically killed when a new, randomly-placed instance springs into existence.

It isn’t terribly complicated to work around this problem, thankfully. Basically, the approach I take is, knowing the x,y coordinates of the instance or object that you want to want to avoid collision with, and the size of that object’s sprite, you can define a “safe zone” around the instance you wish to protect.

I’ve whipped up a quick demo in Game Maker 8, showing a technique which seems to work pretty well. This is a very simple illustration of the approach, and could be refined further to handle wrapping the safe zone around the edge of a room, or to handle enemies of randomly varying sizes. To make it easier to understand, I’ve actually created an object to represent the “SafeZone” . This is unnecessary, as the dimensions involved can simply be calculated on the fly, using the right GML.

Source .gmk.

Boobie Teeth 0.23!

At long last, I’ve gotten back into developing Boobie Teeth. I’ve released 0.23, available as always on the Releases page.

In the two weeks leading up to Notacon 8, I worked on Boobie Teeth roughly 16-18 hours/day, making great progress, but had about burned out by the time I got 0.22 ready for the presentation. I really like pushing on a project like this, where I’m interested and motivated, but probably can’t sustain more than 12-14 hours of focused effort a day for very long. I had intended to take the next week or two off from the project and focus on some other things — housecleaning, getting ready to start a new job in May. For a number of reasons, this summer has been full of misfortunes which kept me out of advancing the project as I dealt with various crises. But things have settled enough, to where I can now resume working on it.

This release was actually mostly done between 4/16-4/17. I had a few ideas from playing 0.22 that I wanted to put in quickly during Notacon weekend, and got it done quickly. There are only a few changes in this release, not as much as I probably had intended when I started 0.23, but since so much time has passed between then and now, and I’m not entirely sure what else I might have decided to include had I kept working on it — there are a number of things on my list that I might have thrown into this release if I’d kept working on it, but at this point I’m not too sure what they were.

I briefly considered just ditching what I’d done for 0.23, and going back to 0.22 and start over again on 0.23, but I decided in the end to keep what I’d accomplished in 0.23 and just put it out, then start 0.24 with fresh direction. The additions which I did make to the game seem to have been complete, so rather than drop them and add them back later, it makes more sense to keep them.

I think that in 0.24, I’m going to focus on a few performance optimizations so the game will scale up more before dropping frames. It’s about at the limit of that right now, in my demo level, which won’t do if I want to do a few things that I want to do when the game advances to the next level. I really need to be able to put more objects on the screen at once without things slowing down.

Notacon 8 Presentation video now online!

Notacon blog announcement

YouTube

Boobie Teeth alpha downloads

Packt Press announces Game Maker 8 Cookbook

http://www.packtpub.com/game-maker-8-cookbook/book

I am contributing to this book as a technical reviewer, and it’s my first time getting credit in a publication, so I’m kindof excited and happy about that.

[Update 1/11/2013: After several months of delays, I have heard from the publisher that this book is about to be canceled. However, I am now working on reviewing a book on GameMaker: Studio from the same publisher, which looks like it’ll be a much better book.]

Unearthed Treasures of Childhood

I’m cleaning out my home office today… well, let’s say this week.

For most of my life, I have been a packrat, and a fairly disorganized one at that. I have always been very sentimental about things, and would keep reminders of events, and basically never threw out anything that I had worked on when I was a kid. Most of that stuff got kept for a really long time, far longer than it was useful, if it even ever was useful.

But after a certain point, keeping everything gets to be a burden. A few years ago, I started to recognize that this was a problem and that I needed to do something about it. I have a very strong instinct to preserve and archive things that are important to me, either because they express some idea that I find compelling, or because they help to define my personality or could be used to explain myself in some way that would be persuasive or understandable to others.

Anyhow, in my office I have piles and piles of old papers, drawings and things I wrote for fun in childhood, school assignments, newspaper clippings, comic strips, receipts, artifacts from memorable experiences, and outright junk. I’m working on going through it all and purging as much of it as I can stand to part with. Mostly it’s not hard, it’s just a lot of sifting and it’s time consuming.

It’s a bit embarrassing for me to admit this. If you’ve seen Hoarders, that could be me. I say “could be” because that’s easier than admitting that it is me. I’m definitely not that bad, and definitely not as bad as I used to be, but it’s taken me some time. I just had a realization and asked myself what I was doing, and from there it’s just been a matter of prioritizing when I can go through the accumulation of decades and get rid of things. Most of the time I am busy or obligated and haven’t gotten to a lot of it. But I have free time this week so it’s happening.

Anyhow, going through my piles of junk, I came across my original concept drawing for the Boobie Teeth game! I thought that it had been lost to the ages. But here it is. I’m blown away. Finding it here is surreal. I have no idea how it came here from my mom’s attic, where I know it had stayed for many years. But I must have retrieved it at some point, put it aside, and forgotten completely about it.

It’s 3 pages of wide format fanfold line printer terminal paper. Someone in my family would bring lots of it home and give it to us for scrap paper which we could draw on the unused side. The printing on the used side has 1982, which helps establish the date — likely the drawing would have been done some time around 1982-83. This means that I must have been 7 or 8 when I drew up the concept, not six.

The game concept is also quite different from how I reconstructed it from memory: Boobie Teeth is a space fish. Rather than eating other fish, Boobie Teeth primarily feeds on these alien creatures called Boobies, which resemble the ghostmonsters from Pac Man, only with legs. Actually, I recognize them as being “stolen” from a game I liked at the time, Fast Eddie for Atari 2600:

 

Fast Eddie for Atari 2600
Fast Eddie for Atari 2600, the inspiration for “boobies” in my original concept.

My game concept also featured some birds, called Boobie Helpers, who tried to help the Boobies avoid becoming Boobie Teeth’s prey. Also, there were two other types of fish in the game: An “older” species of the same genus as Boobie Teeth, which only eats plants, but which Boobie Teeth can eat for bonus points, and a “new” species which preys on Boobie Teeth. One of the more interesting aspects of the original concept was that the Boobie Teeth species was facing extinction. Only 12 fish remained. And when you died in the game, your skeleton would sink down into the sea bed, and become fossilized in the sediment.

I’m not sure how much of these unearthed revelations will end up making it into the finished game. They don’t entirely fit with the version of the game that I reconstructed from memory. I like the death->fossil concept.

As soon as I can scan the drawing, I’ll be posting it here for you to see. For now, here’s photo I took with my digital camera:

 

Boobie Teeth original concept

Original concept drawing for Boobie Teeth

Original concept description:

You are one of the 12 remaining space fish called Booby Teeth. These little space creatures called boobies are trying to eat you. There are booby helpers that look like birds. You have to eat the boobies from behind. There are 11 other fish that are in reserve. A new specie of Booby Teeth called the Booby Crusher. It is much bigger and it is trying to eat you because it doesn’t know any better. He is 15 mph faster than you. There is one last kind of booby teeth. It only eats plant life. You are trying to eat it like the Booby Crusher is trying to eat you. It swimsflies across every time you have played for 30 seconds. It is 1000 points the first time it flies by and it will stay there until the score on it is 0, then it will disappear. Every time it flies by its score gets lower. The gill on it is the 1 in 1,000. After that it disappears. It is 900, 800, and so on until it gets to 100. The score keeps splitting in half. If you clear the whole board of Boobies, Booby Helpers, and Booby Teeth that eats plant life, you have to find the fossil form. The more times you lose a remaining fish you have to find more fossil forms. When you find it, you have to pull it up with your mouth, then you will get a rougher landscape. The game starts all over again. (Later there are mountains and volcanoes.)

Using the controller: Pushing the joystick up makes the Booby Teeth go up. Pushing the joystick down makes the Booby Teeth go down. Pushing the stick to the right makes the Booby Teeth go to the right. Pushing the stick to the left makes the Booby Teeth go to the left. The fire button makes the Booby Teeth bite.

Scoring:
Common Boobies: 50 pts.
Tallest & second tallest Boobies: 100 pts.
Strongest Booby: 150 pts.
Shortest Booby: 125 pts.
Flying Booby: 250 pts.
Booby Helpers:
Baby: 300 pts.
Mother: 2,000 pts.
Fastest Booby: 350 pts.

“How I (FINALLY) Made My First Video Game” Notacon 8

The talk went very well. Several people I didn’t know came up to me afterward and said that it was inspiring, which means a lot to me. I tend to discount compliments from friends, which perhaps I shouldn’t, but I always throw out data that might be subject to bias.

I am posting my presentation slides here, for anyone who would like to download and read my notes. The talk was videotaped (do camcorders still use tape? No, I think we need a new word), and will be available on the Notacon.org archive once they have time to process everything. I’ll post a link when they do; might be a few weeks or months.

How I (FINALLY) Made My First Video Game – Notcon 8 2011-04-15

Edit: The videos that were embedded in the original powerpoint appear in this version of it as single frame placeholders. For the actual videos, I have them up on YouTube:

Development Stages

Builds 0.20 – 0.22 montage