Allegro.cc - Online Community

Allegro.cc Forums » The Depot » Development Progress

This thread is locked; no one can reply to it. rss feed Print
 1   2   3   4 
Development Progress
LennyLen
Member #5,313
December 2004
avatar

Is the point of the game to step on every spot in the map?

Yup. I think the idea is that you have to step on each floor tile to show that you've looked everywhere on the level for Yukon Yohan.

I've added the item-management code now, which means I just have to add the level count-down timer, and the basic level-playing routines are complete.

Here's the latest video, showing a full level clear of the first level (nothing actually happens yet when you finish the level):

video

UPDATE:

I've added the code for displaying the countdown timer as well as the score and number of lives remaining. Again, I've tried to make this as flexible and configurable as possible.

For the countdown, you use a bitmap called countdown_back.png and a font named countdown_fnt.png. You also specify in the .inf file whether the score is to be printed left- or right-justified or centered onto the background. The .inf file also contains the x and y position to draw the final rendering at.

For the score and lives remaining display, there is a similarly named background image and font, but also a bitmap called lives_pip.png. Again, you specify an x, y, and justification setting as well as the distance from the score to the first remaining life icon and the spacing between each icon.

In this first video, using the original graphics set, the countdown, score and lives remaining are displayed 100% faithfully to the original Atari 800 version.

video

In the second video, all the gameplay elements are identical to the first video, but it uses Dario's graphics set and has the UI is positioned differently. All of these changes can be made without altering a single line of code.

video

I've attached a Windows Binary and the source code for anyone who wants to play around with it.

Before I work on any more features, I need to do some code maintenance. A few of the source files are getting far too big and I want to move several functions to their own source files and break them into smaller pieces. I also need to standardize the way I do things across different classes. As I was adding each new game element class, I kept coming up with better ways of doing things, but didn't go back and apply them to the earlier classes, or I'd hobble them on and end up duplicating values and functionality.

Once that's done, I'm going to work on the way assets are loaded, so that the routines don't rely on the current naming patterns. After that, I can start adding more levels to the game.

Dario ff
Member #10,065
August 2008
avatar

LennyLen said:

or I'd hobble them on and end up duplicating values and functionality.

Sounds to me you're going to do some OOP and inheritance. ;)

I like the result so far. I'm not really convinced by the size of the lizard though. I'll probably have to remake it so it fits more of to the size it's supposed to be. Right now it looks barely understandable because of the Photoshop resizing. Some pixel art will fix it though.

Also, I've looked at some original artwork for Bounty Bob(ads, posters), so I guess I'll try to make the sprite again and make him come out more as a though guy. He looks kind of cute now.

The items fit in nicely after all. :) I wonder what the original author meant to represent with some of them.

Sadly, I can't help with sounds or music though.[1] I don't know if the original game featured music, but will you give the option to support it? (MIDI and OGG are fine for me).

Also, I recall having some framerate problems in my computer, but not on my sister's one with the last version you sent me. I can't try out this new version right now, but is there anything that might be causing this? I recall having close to 50 FPS for some weird reason.

References

  1. If I had skill with them, I could be a one-man game development team. :P

TranslatorHack 2010, a human translation chain in a.cc.
My games: [GiftCraft] - [Blocky Rhythm[SH2011]] - [Elven Revolution] - [Dune Smasher!]

cheatscanner
Member #11,712
February 2010

Lenny, you're doing an excellent job! Watched the video, and although I've never played it on the Atari, or even heard of this game before coming here, I love what I see.

Keep up the good work, you're inspiring me to keep working on mine =D

Dario ff
Member #10,065
August 2008
avatar

Shit, I found a nasty one Lenny. Nasty in the sense it breaks the gameplay, but surely it's easy to fix.

Remember the last problem with the stairs being two pixels taller?

Try to stand here:
{"name":"601099","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/f\/9\/f90b71813bbb67dd443979c35855ae3d.jpg","w":642,"h":483,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/f\/9\/f90b71813bbb67dd443979c35855ae3d"}601099
Now press up. And that's it. You're stuck and you can't move. :-/

TranslatorHack 2010, a human translation chain in a.cc.
My games: [GiftCraft] - [Blocky Rhythm[SH2011]] - [Elven Revolution] - [Dune Smasher!]

LennyLen
Member #5,313
December 2004
avatar

Ah yes, that's due to it thinking it's at the top of the ladder. I'm currently rewriting that part of the code, so hopefully that won't happen again.

UPDATE:

I've done a lot of reworking on the code to make it consistent. At the same time, I managed to streamline it down a bit, and improve some of the logic. The ladder bugs and jumping/falling through tiles bug have all been fixed as well.

The other major changes I've made don't affect the gameplay, but make it much easier for people to make their own BBE games. Now, instead of identifying objects by number, you can identify them by name. I've also removed the need for the .inf files that told the engine how many of each gameplay element type there were. The engine instead now scans the directories for media, and loads what it finds. If you specify an item in a level file that did not exist, the engine will give you a message saying what media could not be located before it exits.

The media file structure looks like this now:

media
  |
  +--- audio
  |
  +--- fonts
  |
  +--- gfx
        |
        +--- static
        |      |
        |      +--- chutes
        |      |
        |      +--- floor tiles
        |      |         |
        |      |         +--- cleared
        |      |         |
        |      |         +--- normal
        |      |
        |      +--- items
        |      |
        |      +--- ladders
        |
        +--- anim
              |
              +--- enemy
              |
              +--- player

For each of the subdirectories of the gfx/static directory, the engine will simply search for .png files, which will be loaded by the appropriate element manager. The name for this object is the filename (without the extension).

For enemies, the engine searches the gfx/anim/enemy directory for .nme files. These files contain a list of animation files which bundled together make up all the animations for an enemy sprite object. The animation files can be in the same directory as the .nme files, or in a subdirectory. For instance, the lizard.nme file that comes with the engine looks like this:

anm_files/lizleft
anm_files/lizright
anm_files/lizpassiveleft
anm_files/lizpassiveright

So it will look for the four .anm files in the anm_files subdirectory of the enemy directory. The first value in the .anm directory is the name of the subdirectory of the enemy folder to look in for the frames of the animation. The lizleft.anm file specified in the above .nme file looks like this:

lizard/lizleft 9 30 30 30 30 30 30 30 30 30

So the engine will look for the frames of the animation in gfx/anim/enemy/lizard/lizleft. The frames of all animations are now just sequentially numbered from 0. So the lizleft animation is nine images - 0.png, 1.png ... 8.png.

Binary and source attached.

edit: I'd forgotten to add death by falling. That's now been added, and I updated the attached archives.

Dario ff
Member #10,065
August 2008
avatar

That's cool, the naming scheme seems much better now. And cheers for the corrected bugs too.

There's one funny typo in the credits.txt file:

Quote:

Bounty Bob Engive

:)

All I can say is I'm waiting expectantly for sound support.

TranslatorHack 2010, a human translation chain in a.cc.
My games: [GiftCraft] - [Blocky Rhythm[SH2011]] - [Elven Revolution] - [Dune Smasher!]

LennyLen
Member #5,313
December 2004
avatar

Dario ff said:

All I can say is I'm waiting expectantly for sound support.

Done!

video

All I need now is some death animation graphics and I can add those too. I can't release the current version yet as I only have the sounds from the original game. I need to go find some public domain samples I can use for a release version.

Trent Gamblin
Member #261
April 2000
avatar

So are you saying those graphics are not from the original game?

Edit: 'sfxr' is a good tool for creating these type of sound effects.

LennyLen
Member #5,313
December 2004
avatar

So are you saying those graphics are not from the original game?

The ones in that video are the original graphics. I also have graphics that Dario made that I distribute with the game. I have emailed the original author asking for permission to use the original assets, but haven't heard back yet.

Quote:

Edit: 'sfxr' is a good tool for creating these type of sound effects.

Thanks, I'll look into it.

[UPDATE]

I've finished creating the level file for Level Two. This is the first level that features slides, which feature in a few of the later levels as well.

Here's a preview:

video

Trent Gamblin
Member #261
April 2000
avatar

Snazzy.

Dario ff
Member #10,065
August 2008
avatar

Sounds good now. Do you need another graphic for the slide before making another release? What's the size of the original bitmap?

TranslatorHack 2010, a human translation chain in a.cc.
My games: [GiftCraft] - [Blocky Rhythm[SH2011]] - [Elven Revolution] - [Dune Smasher!]

LennyLen
Member #5,313
December 2004
avatar

Dario ff said:

Do you need another graphic for the slide before making another release? What's the size of the original bitmap?

Yeah, that would be good. The slide bitmap is 32 x 4 pixels. The way the slide bets created is by layering these on top off each other with each new layer being offset by dx pixels. The dx value is the fourth number in each section of chute/slide data in the level file.

If you could do some more item graphics, that would be cool too. I can just re-use the ones from the first level though.

Dario ff
Member #10,065
August 2008
avatar

Damn, PS keeps crashing on this computer(not enough RAM), and I don't know if I'll be able to use mine for some time.

Don't hold a new release waiting for the slide graphic though. I'll send them to you whenever I have the chance to make them.

And no, I'm not going to do them in Paint. :P

TranslatorHack 2010, a human translation chain in a.cc.
My games: [GiftCraft] - [Blocky Rhythm[SH2011]] - [Elven Revolution] - [Dune Smasher!]

LennyLen
Member #5,313
December 2004
avatar

Dario ff said:

Don't hold a new release waiting for the slide graphic though.

I still haven't looked for sounds yet, which is why I haven't made a new release.

At the moment, I'm adding some cheats for easier play testing.

[UPDATE]

I took the weekend off coding, to return to a somewhat sense of normality. However, I did find some sounds to go with Dario's graphics, so I can make a new release now. I also created another level file. It's actually level four of the original game, but I have to add some more code to do level three, which has a teleporter in it.

This looks like a pretty simple level, and it probably actually is, but it took me about 20 attempts to complete it so that I could make a video. I also had to re-tweak the jump distances and the height you can fall so that the level behaved exactly the same as it did in the original. Some of the jumps are only just possible, so you have to be careful where you jump from.

So here's the video:

video

And here's the Windows binary and source code

Thomas Fjellstrom
Member #476
June 2000
avatar

Is there sound on that video? I don't hear any.

--
Thomas Fjellstrom - [website] - [email] - [Allegro Wiki] - [Allegro TODO]
"If you can't think of a better solution, don't try to make a better solution." -- weapon_S
"The less evidence we have for what we believe is certain, the more violently we defend beliefs against those who don't agree" -- https://twitter.com/neiltyson/status/592870205409353730

LennyLen
Member #5,313
December 2004
avatar

No there isn't. I probably forgot to tell CamStudio to record audio.

edit:

I've made a new video of the level, using the alternate graphics/sound set:

video

[UPDATE]

I coded the teleporters, and have made up the level file for the third level of the game. I'm going to put a temporary hold on development now, while I work on a level editor. As soon as I have new graphics for the teleporters and items on the third level, I'll make another release, with the first four levels.

Once I've finished with the level editor, I'll go back to adding polish to the game as well as adding the final gameplay elements.

For now, here's Level Three: The Teleporters

video

edit:

I got the new graphics from Dario, so here's the video:

video

I've attached the Binary and source for the first four levels.

Trent Gamblin
Member #261
April 2000
avatar

Is that a super mario bros jumping sound? I can't tell.

LennyLen
Member #5,313
December 2004
avatar

Is that a super mario bros jumping sound? I can't tell.

You'll have to ask Dario ff. ;)

Dario ff
Member #10,065
August 2008
avatar

Is that a super mario bros jumping sound?

The other one was horrible. :P I don't know if that sound is copyrighted though.

Trent Gamblin wins a cookie for 20 years old sound guessing

EDIT: Oh yeah, it's from Super Mario World actually.

TranslatorHack 2010, a human translation chain in a.cc.
My games: [GiftCraft] - [Blocky Rhythm[SH2011]] - [Elven Revolution] - [Dune Smasher!]

Trent Gamblin
Member #261
April 2000
avatar

I played that game enough that it' etched into my memory!

Trezker
Member #1,739
December 2001
avatar

I can not recognise it as a Mario jump sound. That sound is not in my memory ... I may have played the game it's from a little, but not enough to make the sounds stick.

LennyLen
Member #5,313
December 2004
avatar

I've add a few flags for items in the game. These are - animated, fatal, persistent, mutant-trigger. The first one is pretty obvious, it's used to denote if an item is animated or just has a static image. If the fatal flag is set to true, then the player will die on contact with the item. The persistent flag is used to stipulate whether or not to remove the item once the player has come into contact with it, and the mutant-trigger flag denotes whether or not touching the item will make the mutants switch form dangerous to safe mode.

Edit:

I just checked to see if everything compiles ok on linux, and with the exception of a few warnings (edit: these were due to going from GCC 3.4.5 (MinGW)to 4.4.3 (ubuntu). I've update MinGW now to GCC 4.4), it compiled fine.

{"name":"linux.jpg","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/d\/5\/d569fe52cad5786d901b4d10c6544d1e.jpg","w":1680,"h":1050,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/d\/5\/d569fe52cad5786d901b4d10c6544d1e"}linux.jpg

Update (13-05-10):

I had a bit of spare time today, so I finished off the code for the death animations. I've decided to keep the format they use in the original game which is to have a set (left and right) of animations for falling, a set for jumping, and a set for when you come into contact with anything toxic. The reason for having different animations for falling and jumping is that in the original, when Bob falls, he keeps his hands by his sides and his legs together. However, on the downward part of a jump, he has his arms and legs extended outwards. The way they, and hence I, have animated the deaths is to have Bob collapse, vertically, two pixels at a time into the floor. Since Bob would look different at the start of the death sequence depending on whether he fell or jumped, it required two different animation sequences (Actually, I assume they don't use animation sequences, but just modify the sprite between screen redraws. Since I want people to be able to customize how their death animations look, it's best to allow the user to provide each frame of the animation).

I also finished working on the code for the moving platforms. Now that I have those, I can recreate seven of the original ten levels. I've made a short video that shows Bob jumping and falling to his death, and which also shows the moving platforms:

video

I've tidied up the code a lot through use of class inheritance and have also refactored a lot of the code to make simpler, though more numerous, functions. There's a couple of things I still want to do with it, and then I'll make another release (hopefully with three new levels). I also standardized the way I did things across different parts of the program, rather than updating them to the latest method when needed to, which has made it much easier to add functionality.

Recent discussion about friend classes has made me reconsider how I use one in this project (which is the first time I've ever used them), though I'm still certain I have a good reason for using it in this instance. For each type of entity-derived object in the game (except for the player), there is an equivalent entity_manager-derived class, which contains a vector of the the entity type, as well as specific methods for that type of entity collection. Because the entity types are so simple (and because the game never manipulates entities directly but instead gets the appropriate manager to do so, I made them structs.

The enemy object is a lot more complicated however, with several methods that are only ever called internally, so I made it a class rather than a struct. Because I wanted to make the enemy_manager class aware of the internals of the enemy class, but not provide any access to some of them to any other parts of the program, I made the enemy_manager class a friend of the enemy class.

Is this what would be considered an apt use of friend classes?

Update (14-05-10):

I got the new animation graphics back from Dario, so I made a similar video to the last, but with the new graphics.

http://www.youtube.com/watch?v=mNjxTz642yo

Dario ff
Member #10,065
August 2008
avatar

I just realised that the animations I sent you had some horrible problem with the sprites flipped in the wrong direction. :-/ Sorry, I was in a hurry and didn't see that(the PS batch didn't work too well apparently).

Anyway... are you using by any chance the "death hit" animation in the first fall? The rest looked pretty well, but the first one was weird.

TranslatorHack 2010, a human translation chain in a.cc.
My games: [GiftCraft] - [Blocky Rhythm[SH2011]] - [Elven Revolution] - [Dune Smasher!]

LennyLen
Member #5,313
December 2004
avatar

Dario ff said:

Anyway... are you using by any chance the "death hit" animation in the first fall? The rest looked pretty well, but the first one was weird.

It's the left jumping animation. I think it looks a little odd as the animation has him falling backwards to the right, yet he's been travelling leftwards as he hits the ground.

weapon_S
Member #7,859
October 2006
avatar

Calling it a "Bounty Bob Engine", and mentioning all the things you want to implement to be able to recreate the original game, makes me wonder whether you have planned some additional features? Have you got ideas for some extra stages?
If there is an emulator available, why do you even want to make this? Are you planning an editor? Why do you avoid using copyrighted images and sound, if the game itself would be much more incriminating should somebody ever wish to take legal actions (to the max)? Do you mind me asking this many questions?

 1   2   3   4 


Go to: