[ Home | Download | Each month a new addon | Game | Screenshots | Tell me the power]
[Addon technology | How to | Freeware | Links | David Fauthoux]
[Contact]

 

On this new page, I will talk about the Bomb ô Bomb engine can do.

Just discover and try !

...tell me your opinion

  1. Useful features

    1. A multi-language game
    2. Interactive help

  2. Powerful graphic management

    1. Ultra-smooth scrolling
    2. Wide animations management
    3. Multi-animations ability
    4. Overlap for the level animations
    5. 3D-blowing with redirectoring ability
    6. Multi-levels graphic management
    7. Pixel shadows
    8. Multi-levels shadows

  3. Revolutionnary point of view for the game interface

    1. Tied interface/game
    2. Interface structure total flexibility
    3. Interface dynamics managed with some "game rules"

  4. Original and powerful features

    1. Shell ability
    2. Multi-game platform
    3. Themes support

  5. Sound features

    1. Sound mixing/reserving/LRU
    2. Multi-sounds ability
    3. Audio CD playing and ejecting ability


 

Useful features

    A multi-language game

    Put a traduced bomb.ini in BombOBomb/ini/, run ./setup and the engine will find a new language.

    The engine is capable to manage special characters (accented letters or else) with a translation table. Anyone can create special characters by completing the translation table in the initialisation files (in ini/) : the translation table (see [Font translation] section) links characters to a location in a gif file (usually font.gif). To change the gif, just change the line font:Character/font.gif in [Strip] section.

    Interactive help

    The game prints message in a strip form. These messages help the players within game (telling what the taken option does, telling what to do...).
    There is also messages to tell the keys to use, or else useful.
    These messages are read by the engine from the initialisation file, so anyone can change the text.

    You can switch off this help by typing 'help' within game (or 'aide' in french !).

...tell me your opinion

back to the top

    Powerful graphic management

      Ultra-smooth scrolling

      The engine used a buffered pixel zone to paint animations, so the screen refresh can be done asynchronously, and the engine can adapt the game speed to the computer speed.
      The scrolling follows a virtual point (barycentre of the "Bonhommes") but moves pixel by pixel, so the scrolling is as smooth as possible !
      Note : the scrolling can be disrupted by the bomb blowing...!

      Wide animations management

    The engine finds all the animations of the game from the initialisation file. bomb.ini describes where are the gifs.

    So you can find in bomb.ini lines like anim dynamite:Sprite/dynam.gif.
    But you can say more about the animation : you can vertically or horizontally shift the animation. Like that anim dynamite:./Sprite/dynam.gif,-10,5. And the animation will be placed 10 pixels higher and 5 pixels more to the right.
    And you can say more again ! You can tell if the animation must be painted relatively to the screen and not relatively to the background. Just tell to like that anim dynamite:./Sprite/dynam.gif,-10,5,to. If you don't want that the animation takes the shadows, put on. If you want the animation to be painted on the floor, just tell under.
    Note : to, on and under must be the third parameter after the animation files, the two first being the shift.

    With this management, you can add, place and set your animations totaly as you want.

    Multi-animations ability

    Unlike the other games, this engine does not manage only one animation per object (options, playing characters, walls...) but as many animations as you want.

    Just duplicate the initialisation lines in bomb.ini. For example, supposing you've created a dynamite gif, add the line anim dynamite:Sprite/NEWdynamite.gif after (or before) the line anim dynamite:Sprite/dynam.gif. And the engine will read all the gifs, and then will take one of them when it will create an animation.

    Overlap for level animations

    To create atmosphere for the levels, I think it was necessary to be able to change the wall animations for example.

    So it is possible to overlap the default animations found in [Animation] with other gifs, in level section ([Fond]).

    For example, you can find for the Evil level ([Fond] with id:evil), the line anim mur normal:./Sprite/crane0.gif and the engine will prefer load crane0.gif (skull) instead of the default gif found in [Animation] section.  

    3D-blowing with redirectoring ability

    You can see that the screen 3D-blows when it is shaking too much !

    This effect uses the redirectoring ability of the engine : when the graphic final datas are going to be sent to the screen, the graphic manager can pass these datas through an "effect maker", like the Blower for example. It works like a pipe-line of pixel matrix : when the matrix pass through a tube (calling here Redirector), it can be changed (3D-mapped for example).

    The ScreenCopier also works with a Redirector. The ScreenCopier is a tube, linked to a file : when a screen shot is requested, the ScreenCopier maps the pixel matrix in a image file. You've understood that this Redirector, this tube, does not modify the matrix.

    So, it is possible to make whatever you can imagine with the pixel matrix (effects, utilities...). One must create a Redirector, and the engine will manage this tube.

    Last but not least, it is very simple to create effects with this technique, because one just has to get a pixel matrix, to make the effect, and to return a new pixel matrix. The graphic manager will take on all the remaining work.

    Multi-levels graphic management

    The playing characters can walk on the walls, pass under the sun... The words are painted on all the others animations. The strip-messages pass through the game. The mud is painted on the floor...

    You can see the game is not flat : with an extra-fast boolean technique, the engine is capable to paint animations on different levels, with different properties (taking shadows ? applying shadows ? hiding others ?...), and the scrolling keeps smooth and fast !

    So, animations can be defined in a lot of manner, but the game keeps fast.

    Pixel shadows

    Note the shadow are managed pixel by pixel. I don't know another engine capable of that performance. Even Baldur's Gate's engine manages global shadows ! (a character is either in the light or in the shadow, and when he has legs in shadow, his head is in shadow too !).
    The Bomb ô Bomb engine manages pixel by pixel shadows for all the animations, not limitated by the character location or else...

    Multi-levels shadows

    Did you note there is an infinite level of shadows depth ?
    When a shadow overlaps another, they are cumulated ! And the engine does that quite quickly, doesn't it ? ;-)  

...tell me your opinion

back to the top

Revolutionnary point of view for the game interface

    Tied interface/game

    The engine does not divide interface and game : wherever you want to go in game, you can.

    You can change the number of players without stopping the match. You can change your keys, you can even change your character without stopping the match !

    Try to use f1-f6 keys instead of normal enter and escape... You will be convinced...

    Example : you are playing with your friend Ulrich. You've chosen the Worm. But within game, you are sick and tired of this too slow character. No problem ! Just hit f4, change, and hit f6 ! And someone rings to the door, it is Laurent, no problem ! He can join without annoying you - just hit f2, + and f6 - and go !

    Note : to change the f1-f6 keys to others, just run ./keyboardScanCode to know the code of the keys and change the

    Interface structure total flexibility

    The engine dynamically loads the interface pages structure by reading bomb.ini. When it finds a [Page] section, it identifies it and loads the corresponding object. After, it identifies the links between the different pages by reading the change to and when key values. See in [Page] section. After change to, there is the identifier of the linked page. The engine changes to this page when the "when key" key is hit.

    So you can change as you want the game structure by differently organizing these values.

    For example, you can change the game to link the "characters choosing" page after the "score" page.  

    Interface dynamics managed with some "game rules"

    You can notice that the pages follow rules to change from one to another : all the pages can be hooked to a virtual point with a virtual elastic. Indeed, when you see a page coming from above and falling, you can see the page sliding to below, and coming back to above... as if it is hooked with an elastic !

    All the hooking virtual points can be changed in bomb.ini. See the [Changing Page] section. The pos values to change the point. ground to put (1) or not (0) a floor (the page bounces).  

...tell me your opinion

back to the top

Original and powerful features

    Shell ability

    All the object of Bomb ô Bomb can be shells ! They can take commands from the keyboard ! For now, only the pages (and the main program) are interesting for that. For example, within game, hit "musicoff" to stop the music, hit "musicon" to run again the music, and if you've added the "AudioCd" addon, you'll be able to play audio compact disks by typing "cdplay" within game ! (note : you must have the "cdplay" program, see in your linux distribution).

    The engine sends the key events to the capable objects, some of these objects builds strings with these keys, so these objects can compare with command.

    To know more about it, see the src/script/EasyAddedShellCommand script addon (or AddTux++ addon).

    Multi-game platform

    With its page management, the engine is not limitated for the properties of the page. A page can run everything you can imagine. In this game, the "game" page runs a bomberman game. But you could imagine a page which runs a Quake or a Tetris, or a role playing game, or else.
    So, the engine can run simultaneously different games. And it is able to switch among these games by switching pages... If you want to create a game within Bomb ô Bomb, you can ! Just inherite the Page class (for more, see Page and DefaultPage classes).

    Themes support

    The engine is mostly game independent. It must read an initialisation file to build the game. It find in this file all the locations for animations, sounds... It find the messages, the speeds, the structure... All in bomb.ini.
    So, if you change the initialisation file, you can run another game.More modestly, if you change the images files, the colors and the words, you can run the same game but with a different atmosphere : a new theme !
    For example, find or change a 320x200 sized gif pictured, name it "myPage.gif", put it to /root/tmp/, add the line "background:/root/tmp/myPage.gif" before the line "background:./Page/bombOBomb.gif" in bomb.ini. And run the game !

...tell me your opinion

back to the top

Sound features

    Sound mixing/reserving/LRU

    The engine is able to reserve or not channel : for example, a playing character must not have his voice mixing with itself ! Contrary to the bomb sounds which must be mixed. The sound engine (Sounder) can get such requests.

    The sound engine is also able to manage limited number of channels. In this case, some sounds must be removed if too much sounds are simultaneously played. The engine uses the Least Recent Used mark to determine what sound to remove. But you can also send a request for non-removable sounds, music for example !

    Multi-sounds ability

    All the commercial games have a common point : an event has one sound and not more ! On the other hand, Bomb ô Bomb engine is able to load multiple sounds to play for an event. For example, there are four sounds for the bombs blowing, there are three sounds for the words blur, eight sounds for the Win95$ option!...

    To convince yourself, create a sound (raw saved, 11025Hz, 8bits, unsigned), name if "mySound.raw", put it to /root/tmp, and add the line "sound armageddon:/root/tmp/mySound.raw" after (or before) the line "sound armageddon:./Sound/Armageddon.raw".

    Audio CD playing and ejecting ability

    Note : you must have added the "AudioCd" addon and you must have "cdplay" (see in your linux distribution).
    The engine is able to play audio compact disks within game : just type "musicoff" "cdplay" and "eject"...

  ...tell me your opinion

back to the top