Jump to content
  • Advertisement
Sign in to follow this  
  • entries
  • comments
  • views

About this blog

Hobbyist pretending to write game code

Entries in this blog


Another change of direction

Hi all! In case anybody reads this thing, sorry not to have updated it for so long. As I am easily distracted by random things, I got myself one of those "open" handheld gaming/media devices called the "gp2x" and have been having a lot of fun writing code for it.

I released a game called "Vektar" -- an arcade-style abstract 2D shooter, which has been reasonably well received, and will probably continue playing around with the gp2x for a while, since I'm having fun doing it.




Efficient enough

Switching to storing vertices apart from triangles, and a few other tweaks, has made the engine efficient enough for now. It isn't blazing fast but I only need it to be fast enough to not be annoying.

Here's a test that looks slightly more planet-like, but there's still a long way to go obviously!




A rounder cube

To make the cube begin to appear more planet-like, I implemented a simple ROAM-type surface subdivision scheme, so it adapts the number of triangles as I zoom in and out.

Even though I'm not really concerned with efficiency, the implementation is pretty bloated (stores three vertices per triangle) so I think I'll take a little bit of time to improve the memory use and CPU time somewhat, mostly by moving to a vertex list.




New stuff

Well, that didn't last too long. I lost interest in the "make a whole simple game" project. But I did get inspired by Ysaneya's amazing journal, so I decided instead to pretend that I'm working on a big space game with aliens and spaceships and planets and so on.

Since there's no hope that I'd actually release anything within five years or more, I don't think I'll spend too much time worrying about frame rates or memory optimization or whatever -- who knows what graphics hardware will be like five years from now?

I imagine nothing will come of it, but making planets looks like too much fun, though Ysaneya's incredible work will be hard to follow. So anyway I got a book on OpenGL and coded up a first little test. It doesn't look much like a planet yet!




Revised Screen List

Ok, here's a new screen list. With this setup, the obvious default path gets right to playing a level by clicking on "Play" from the first screen.

Music and animation of some kind to hold a user's interest
- probably the "intro" music should extend over all the non-game screens
This screen includes some sort of description of the basics of gameplay.
Probably the animation on the page should lead the player's attention to
that information. The idea is to give them enough info to start playing.
One corner left free to put junk in (like the distributor's logo or whatever)
"Loading" progress bar while resources are fetched and precomputation done
After loading is complete, the following choices appear:
"Options" (goes to OPTIONS)
"Quit" (goes to QUIT)
"Player Name" (goes to PLAYER NAME)
"High Scores" (goes to HIGH SCORES)
The Play button is prominent to encourage its selection
The first time through, play goes right to LEVEL INTRODUCTION for
an introductory level which is just difficult enough to get the
player used to the mechanics and may include some tutorial info
if needed.
Subsequent launches go to GAME SELECTION

This presents gameplay options:
Full screen vs windowed
Sound and music volume
More if needed, depending on game mechanics
Returns to the previous screen

Simple screen asking for confirmation. If a game is in progress, the
text should include something like "You can resume this game next time
if you wish"
"Don't Quit"
Exits program or returns to previous screen. If a game is in progress
it gets saved with the player name (or 'default' if there
is no player name set)

Display of the high score list. Personally I couldn't care less about
what scores I get on games, but some people are into it.
Goes to previous screen

After the first run through the game, this appears to give various
Choose between game difficulty levels (radio button type deal)
"New Game"
Starts a new game with the chosen difficulty level
"Untimed Play"
Starts a free-form version of the game at the chosed difficulty level
This just gives random levels and does not save anything on quit
"Continue Saved Game"
This only appears if there is a saved game. It should be the most
prominent option if available.
"Cancel" (goes to INTRO)
All other choices go to LEVEL INTRODUCTION

Prompts the user to enter a player name
Text entry box (pre-populated if a recent user name exists)
Could get fancy and have a dropdown of all user names, but
that probably isn't necessary
Button for "OK"
Returns to previous screen

The "metastory" is the thing that shows progress through the game
toward the point where it is "over" (all levels have been played).
This screen explains the metastory.
"Don't Show Me This Again"

This shows the current state of the metastory, and includes animations
or actions related to progress in the metastory. User might have to
make some sort of selection, they might be able to examine things in
some detail, or there could even be a separate mini-game associated
with the metastory.
At least the following options:
"Play" (goes to LEVEL SELECTION)
"Quit" (goes to QUIT)
Unless the game is over, in which case this leads to GAME OVER WIN

This is optional. For some types of games it might make sense
to let the user choose a level - a particular quest they want to go on,
a particular prize they want to go after, a particular maze they
want to solve, etc. Maybe a "stage" is comprised of several levels
and it doesn't matter which order they are done in, so the user can
be given control over what they want to do.

Level-specific loading and computation, shows the level name and
might show other stuff as well. This could be integrated into GAMEPLAY
especially if there isn't much to introduce or if the loading time
is very short.
"Go" goes to GAMEPLAY

Starts with a brief animation saying "Go!", and lets the user
play the game.
Available commands:
"Pause" (goes to GAME PAUSED)
"Options" (goes to OPTIONS)
"Hint" (performs some specific gameplay highlighting)
"Quit" (goes to QUIT) - each user only has one saved game, so
there's no need to ask about saving
If the level is completed, goes to LEVEL COMPLETE
If the player loses, goes to GAME OVER LOSS

"Continue" (goes back to GAMEPLAY)
"Quit" (goes to QUIT)

When new gameplay elements are introduced, in some cases at least it
is probably a good idea to explain them. This type of screen should
definitely be an overlay over the gameplay screen with a visual indication
of what is being discussed
"Don't Show This Again"
Both return to GAMEPLAY

Some sort of animation and score summary to congratulate the user.

Should contain their score and game stats.
"Save Score"
If there is no user name, first goes to PLAYER NAME
Goes to HIGH SCORES with current score highlighted
"High Scores" (goes to HIGH SCORES)
"Quit" (goes to QUIT)

Starts with some sort of celebratory message.
Should contain their score and game stats.
"Save Score"
If there is no user name, first goes to PLAYER NAME
Goes to HIGH SCORES with current score highlighted
"High Scores" (goes to HIGH SCORES)
"Quit" (goes to QUIT)




Game Screens

So I thought I'd plan out the various screens that the game should have -- only now do I realize what a truly massive undertaking even a small "complete" game is!

Many games have the same sort of flow, so maybe this analysis will be useful to somebody else.

Some of these "screens" might actually be dialogs that pop over the previous screen, but they are encapsulated functionality with a large UI so it still makes sense to think of them separately. Other sequenes of events are possible and the design needs to be thought through a little more.

Note: the rest of this entry has been superceded by the following entry, after making some changes in response to a helpful comment




Fun with spheres

So I have more or less picked some mechanics for my little puzzle game, and it involves moving balls around (impressive, eh?). Even such a trivial thing has its interesting points though.... I'll have to render a lot of different styles of spheres from arbitrary orientations, and I'd like them to look reasonably nice.

Time to crack out the algebra.

The first picture is just a rendered heightfield to show that my sphere intersections were working. The second one adds some phong shading, and the third one gets a little fancier.

Beyond that I started playing with some classic Perlin-style effects:

Eventually the idea is to streamline this so I can bash out renders of the balls very quickly. Next steps: work on that rendering including oversampling for anti-aliasing, and figure out a way to map textures onto spheres without distorting them (that's a head-scratcher for right now).

Beyond that, I downloaded the trial of Photoshop and I played with it a bit. I think I'll probably have to buy it, which is fairly painful, but learing photoshop is probably good for me anyway.




Brief Introduction

So after years of liking games, I decided to try and make games (like everybody else!).

The whole process is interesting to me so I'm going to start by tring to make a "complete" but small game, probably a puzzle game of some kind, just to get experience (though I'll try to make it fun to play).

Mostly just research so far; I decided to use the PopCap framework to handle some of the tedious details robustly, so I'm studying that. Also for some reason I'm curious about making the colorful fonts that make good games look so nice.

And trying to figure out the best way to make game music.

Fun stuff! I'm just a hobbyist so if anybody happens to read this, don't expect too much. I just wanted to make a journal to help with motivation and on the off chance that somebody else finds it interesting.



Sign in to follow this  
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!