Page 1 of 2 12 LastLast
Results 1 to 10 of 18

Thread: OpenFire game: top-down shooter, bullet hell

  1. #1

    FireMadness game: top-down shooter, bullet hell

    Sometimes it's so hard to find motivation... OpenFire is a simple game I've written in 5 hours (one night) in Castle Game Engine (Lazarus/Free Pascal) + 1 hour for graphics and 3 more hours of testing, playing and having fun Still no sound&music, no menu (as usually ) It's a game inspired by an ancient CrossFire (1981 by Jay Sullivan) game.


    The goal of the game is to eliminate all enemy bots. Use arrow keys to move and WASD to fire at 4 directions (hold down the button for rapid fire). Player has 200 HP until death... and that's not much...
    You can move only vertical or horizontal direction at the same time, and movement automatically stops at crossroads (you can invert the movement direction).
    Enemies come in groups of 3+ starting from lazy easy form, after destroyed they transform in more healthy and powerful medium form and finally into tough, quick and rapid-firing hard form. Occasionaly hard form after being destroyed transforms into boss form (the name says it all).



    video:

    FireMadness walkthrough: Part 1 - Bedroom (hard)


    FireMadness walkthrough: Part 2 - Living room (hard)


    FireMadness walkthrough: Part 3 - Cellar (hard)


    FireMadness walkthrough: Part 4 - Kitchen (hard)


    FireMadness walkthrough: Part 5 - Attic (hard)


    Code: https://github.com/eugeneloza/FireMadness
    Release: https://github.com/eugeneloza/FireMadness/releases (Windows, Linux)
    Attached Images Attached Images
    Last edited by eugeneloza; 08-05-2016 at 06:28 AM.
    My free and opensource games: http://decoherence.itch.io/
    Sources are here: https://github.com/eugeneloza?tab=repositories

  2. #2
    Looks like those "sports" played in science-fiction by prisoners while it's transmitted by the global-entertainment-network...

    Nice game.
    No signature provided yet.

  3. #3
    Do enemies have any specific AI built for them or are they just randomly wandering around and shooting in random directions?

  4. #4
    New betta release: Music, sound and explosions!
    Updated video.

    @SilverWarior
    No, no serious AI. And I don't think it's needed.
    If bot is inactive it has high chance to become active if "activebots<3" and random low chance to become active each frame.
    If bot is active it tries to do one of 8 random actions: move in 4 directions if not already moving or shot in 4 directions. Movement are subject to additional random chance determined by bot mobility (i.e. random<mobility) - this is the chance that bot 'stops' at crossroads.
    My free and opensource games: http://decoherence.itch.io/
    Sources are here: https://github.com/eugeneloza?tab=repositories

  5. #5
    Here are few suggestions for improving of your game:
    1. I would recommend you change the way how enemies shoot. It seems weird when player is on the left side of the enemy but the enemy is shooting toward right. So I would recommend implementing a simple check so that if players if left side of the enemy the enemy would actually be shooting toward left and if the player is right side of the enemy the enemy would be shooting toward right. Same goes for shooting up or down. This would make enemies a bit smarter and also increase the game difficulty a bit so you could implement this as a staring option for changing of game difficulty.
    2. I would also suggest implementing the ability of enemy to go and fire a dense salvo of shots toward the player when player remains in the same line or same col for certain time. This would make destroying of enemies by firing a dense salvo of shots a bit more difficult. Right now you could risk of being hit by a few shots yourself while raging a shooting salvo at the enemy. This could also be as an starting option for changing of game difficulty.
    3. Another suggestion of mine is implementing damage multiplier. When I'm watching of your video the game pace seems a bit slow. But if you add a damage multiplier with which players can chose that all shots deal more damage it could increase the game pace a bit.
    4. You should definitely implement a hot seat multiplayer support. Fighting enemies with your friend in Co-OP mode would be more interesting.

    That is it for now.

  6. #6
    Uploaded a new release and code.

    Quote Originally Posted by SilverWarior View Post
    Here are few suggestions for improving of your game
    Thanks a lot for the ideas.
    1. ---- I've been thinking of it and I thought that visual effect of 'screen full of bullets' would be better. But today I've tried this idea and it works perfectly. Implemented in today's code upload. (Only Linux32 release is 8-th version, others still shoot randomly).
    2. ---- Seems to be fixed by pt.1. I may deliberately make such stuff like enemies cornering the player and acting in groups, but still doubt if this would be interesting - the game is hell hard even now
    3. ---- I think it's better to increase fire rate (shots per secons), more fun Practically implementing pt.1 doubled the firing rate (in several cases 3.5x shooting speed) because bots don't shoot all directions and with the same firerate they fire 2x/4x bullets towards the player. There are many ways I can implement higher difficulty.
    HOWEVER, the idea of a bot shooting much more powerful charges but not as often as others do might be a good way to increase diversity. I've got to model a few more enemies Thanks to Scorpio@opengameart construction set it's not very complex.
    I have also an idea of an enemy capable of disabling player control for a short time if hits - (fire/movement) separately.

    4. You should definitely implement a hot seat multiplayer support. ----- that's much harder Believe it or not I have never ever played a single multiplayer game either hot-seat or on LAN

    I've also a question. How does the voice sound? I didn't include it in release (you may easily uncomment it in the code - there are two variants: hostile bot, reporting errors and a generic sound).
    It seems that just a sound I've used previously sounds more... natural?
    Voice fits fine heavy music, but when the music is calm I don't like it.
    Or maybe I've just got my ears tired of it while recording?
    My free and opensource games: http://decoherence.itch.io/
    Sources are here: https://github.com/eugeneloza?tab=repositories

  7. #7
    Quote Originally Posted by eugeneloza View Post
    that's much harder Believe it or not I have never ever played a single multiplayer game either hot-seat or on LAN
    Actually implementing a hot-seat multiplayer in your game would not be that hard. All you would have to do is add new player bot and bind its controls to different keys or controller than your original player bot uses. And that is all.
    Throwing a quick look at your code I guess you could do this in less than an hour due the fact that you are using OOP programing approach.

    Quote Originally Posted by eugeneloza View Post
    I've also a question. How does the voice sound? I didn't include it in release (you may easily uncomment it in the code - there are two variants: hostile bot, reporting errors and a generic sound).
    I must admit that I haven't tried your game yet. Just watched the videos. I will probably try it out this weekend.

    Quote Originally Posted by eugeneloza View Post
    Voice fits fine heavy music, but when the music is calm I don't like it.
    Listening to the music in your video I must say that I like it a lot.
    Have you ever considered of using a semi-programmatically made music? Imagine for instance that you have several sound patterns and the ability to chose when and at what speed and volume each of them can be played. Using simple manipulation of speed, volume and which of these patterns is played you can make so that music that is being played is affected by game state. For instance when enemies are far away from you and thus you are in no danger the music is slow and easy but when you are surrounded by enemies and constantly under fire the music intensifies, gets a bit faster etc. That would definitely get you hart pumping.
    If you have never played any game which would change the music based on the current game state then I strongly recommend you try Dune 2 (an old DOS based game) which was one of the first ones that was changing music based on game state. And its music is just wonderful.
    And while its successors tried to recreate that they still can't beat the original one.

  8. #8
    Uploaded new release (better AI, now it's wild hard!). Updated video.

    Quote Originally Posted by SilverWarior View Post
    Actually implementing a hot-seat multiplayer in your game would not be that hard. All you would have to do is add new player bot and bind its controls to different keys or controller than your original player bot uses. And that is all.
    Well, at the moment I've already have 2 sets of keys assigned: up-down-left-right for movement, WASD for firing. In case of splitting the keyboard for two players I'll have to use <WASD>+<TFGH> for one player and <IJKL>(maybe <)PL;'> )+<cursor> for another... seems very short on physical space at the keyboard
    The only trick is that I've already implemented mouse movement control (it's not as convenient as keyboard, but it's a step towards Android). That could release one quad of keys and then one player with <WASD>+<IJKL> and another <cursor>+<mouse> could do the job.

    I must admit that I haven't tried your game yet. Just watched the videos. I will probably try it out this weekend.
    The voice isn't in game. Only in video in this post. Hovewer, the files are ready and to use it you need just to uncomment 3 lines of code and recompile. I think I'll make this as an option soon (or remove it for good).

    Have you ever considered of using a semi-programmatically made music?
    Adaptive (or interactive) music is very powerful. Yes.
    But the music in-game is the one composed by Gundatsch@opengameart.org and it is 'as is' under CC-BY license. And it has only one vertical-sync pair of tracks.
    So there are 2 problems: I don't have the appropriate "vertical-reorchestrated" music and I don't know how to change that realtime in the Castle Game Engine yet. I just load the music file, assign it high priority and play.
    I am an amateur musician myself, but it usually takes ~7 hours for me to compose a track. E.g. 10 tracks would take me to 70 hours of work. Moreover, my skill is much less than that of an experienced musician, so the result would look rather petty compared to e.g. Gundatsch's tracks - first of all from soundmastering point of view. And I have absolutely zero experience in composing music for games (I've written ~300 relatively simple accompaniments for our singing group). I'll definitely have to do it for my Project Helena and Decoherence games, but that'll be later.

    At this point I'm using the simplest approach to adaptive music - I just calculate EnemyPower (each bot type "worth" something) and selects next track based on this value (music context varying in easy-normal-hard-boss). However, the next track might come in 5 more minutes I'll need to understand how TMusicPlayer works for at least to adjust volume or cross-fade them.

    P.S. There is a small problem with the game name, as OpenFire already exists as a jabber client. I've been advised GridFire, but it's also exists as Crossfire-clone WildFire? FireMania? Any other ideas?

    P.P.S. I've found a very strange bug. The game runs slower on Linux and slows down on frameskip. Why I sync all actions to SysUtils.now timer... it should work as expected dependlessly FPS and OS...
    (FIXED)
    Last edited by eugeneloza; 15-04-2016 at 11:36 AM.
    My free and opensource games: http://decoherence.itch.io/
    Sources are here: https://github.com/eugeneloza?tab=repositories

  9. #9
    Quote Originally Posted by eugeneloza View Post
    Well, at the moment I've already have 2 sets of keys assigned: up-down-left-right for movement, WASD for firing. In case of splitting the keyboard for two players I'll have to use <WASD>+<TFGH> for one player and <IJKL>(maybe <)PL;'> )+<cursor> for another... seems very short on physical space at the keyboard
    Well if I would have tried your game I might have known that you have 8 keys per players which makes things a bit more difficult. But still it is possible to have two players using the keyboard at the same time.
    For player one you can use WASD + IJKL or perhaps UHJK.
    And for second player you can use Arrow keys plus numbers from numerical part of the keyboard (does require full sized keyboard).
    I also wanted to suggest you to add game controller support but taking a quick look at Castle game Engine documentation I haven't seen any information for CGE to even have any controller support.

    Quote Originally Posted by eugeneloza View Post
    At this point I'm using the simplest approach to adaptive music - I just calculate EnemyPower (each bot type "worth" something) and selects next track based on this value (music context varying in easy-normal-hard-boss). However, the next track might come in 5 more minutes I'll need to understand how TMusicPlayer works for at least to adjust volume or cross-fade them.
    This is almost the same approach that is used by Dune 2. So all you have to do is find shorter songs so you can switch between them more easily or mix them up using different channels.

  10. #10
    Name of the game changed to FireMadness

    Huge overhaul. Almost release
    Many new bot types + 3 more bosses.
    Map manager + unfinished story mode
    Hot-seat player co-op mode
    Difficulty level
    And much much more

    Video and download links updated

    Quote Originally Posted by SilverWarior View Post
    And for second player you can use Arrow keys plus numbers from numerical part of the keyboard (does require full sized keyboard).
    Done in 5 hours Now "controls" are fixed, but I'll make them user-assignable eventually. Of course, only full-sized keyboard.

    I also wanted to suggest you to add game controller support but taking a quick look at Castle game Engine documentation I haven't seen any information for CGE to even have any controller support.
    As far as I remember a commit for controller/joystic is pending . So soon it'll be available.

    This is almost the same approach that is used by Dune 2. So all you have to do is find shorter songs so you can switch between them more easily or mix them up using different channels.
    I've finally found out a way to fade out and stop the music. Implemented.
    P.S. I was a huge fan of Dune2 in late 90s... Finished it a few dozens times Even written my own RTS those days... but it was lost in the old computer...
    Last edited by eugeneloza; 18-04-2016 at 09:04 AM.
    My free and opensource games: http://decoherence.itch.io/
    Sources are here: https://github.com/eugeneloza?tab=repositories

Page 1 of 2 12 LastLast

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •