Atomic Bomberman Fan Rewrite **************************** A blast from the past! Literally :) Daytona675x, the best equipped man in code business, is proud to present his latest lucubration. This here is a fan rewrite of the Win95 game *** Atomic Bomberman *** from 1997 by Interplay. It has been coded from scratch, just by watching and playing the original game on an antique Win98 machine. Much care has been taken to make the gameplay feel exactly as if you were playing the old original game. The intentions were to - make it work on modern Windows versions again - make it available on other platforms - make it work with USB input devices - allow up to 10 local players And just recently, due to the Corona crisis: - add support for online matchs This rewrite / player program is free to use, at your own risk, maybe your computer just explodes, who knows. However: The *original* game data files of the *original* Windows CD are required to play this game! If you don't own it yet then you may buy it here for example: https://www.ebay.com/sch/i.html?_nkw=atomic+bomberman+PC+1997 https://www.amazon.de/gp/offer-listing/B00005AM4H/ Note: I don't know if different versions of this CD exist. This rewrite works with the one I own. The original CD contains a folder named DATA. Copy it and its subfolders into the games res/ folder, so that you end up with a folder structure like this: AtomicBomberman/res/data/ANI AtomicBomberman/res/data/RES AtomicBomberman/res/data/SCHEMES AtomicBomberman/res/data/SOUND Note: on Windows the game will eventually show an UAC requester on first run. This is because it will extract / cache some files into its installation folder. Important: you have to create player control profiles first, otherwise you can only see the AI play against itself... Recommended controller: GeeekPi SNES style. A Competition Pro will do too, you only need 2 buttons and digital 4-way controls). Noticable differences compared to the original game: - player profiles, joypad configuration etc. added - extras description screen added - HURRY message doesn't occlude the playfield - correct aspect ratio / scaling on all sorts of screens - real online playing with multiple players on one machine - no long 'sending data' delay before every single network game Note: this is a party game, it's not meant to be played alone. Invite friends, get a good load of booze, connect a beamer or a fat TV to your computer and I guarantee you some hours of pure fun :) And maybe some ends of friendship :) Original game info and credits: https://www.mobygames.com/game/windows/atomic-bomberman/ Requirements: + lots of USB joypads + original Atomic Bomberman game CD + not required, but recommended: beer / booze + one of the following: - AmigaOS4: >= 4.1 FE, Warp3D - AmigaOS4: >= 4.1 FE, Compositing (if you don't have a Warp3D-capable card) - MorphOS: >= 10, TinyGL - AROS: x86, e.g. Icaros >= 2.2.0, Mesa 3D - Windows: pretty much any device of the last decade should do - Linux: should work via Wine, untested. Known issues: - make sure to use a good USB hub. Also, if a gamepad is lost / detached / attached the game won't notice and eventually fail. - AI isn't really smart - although it's certainly not dumber than in the original ;) - Windows: if you use DS4Windows you may have to check the "Hide DS4 Controller" option there if your controller is not being detected. Maybe I'll fix / improve those issues, maybe not. Please don't bother me with it, take it as is :) Tchatching, Daytona675x https://www.goldencode.de Online Match HowTo ****************** 0. prepare control profiles for all your *local* players. There can be *any* amount of players on *one* machine! So you can e.g. start an online game with two machines but with multiple players sitting in front of each machine! Of course the general limit of 10 simultan players remains. Give your profile your personal player name. 1. get in contact with your remote friends. Make sure that you all have the same game version! 2. decide a "Game name", a "Game pass" and which port to use. Make sure that your firewall doesn't block that TCPIP port! 3. decide who will act as the "master" (server). That should probably be the one with the most stable machine. Make sure that your firewall allows incoming connections on the port! Of course it doesn't matter which system you use, it's all platform independent. No camp wars at this point! 4. give your machine a "nick". It's used for identification on the game-join-screen. 5. the master should now "Start new game". 6. then the others can "join game". 7. once all machines joined, the master "continues". 8. now everybody can select a color by clicking fire on the respective player color entry. 9. again, the master decides when to continue. 10. now the master selects the level, adjusts the gaming rules and fires off the match! Tchatching! 11. A client can quit the session at any time by hitting ESC. Everybody can pause / resume the game by hitting pause / help. If all clients or the master quits, then the game session ends. 12. Remember: For an online match the slowest machine / slowest connection determines the pace. Version History *************** v2.10 - new gameplay option: no sleepy players. If a player has been inactive for 15 seconds, it will auto-drop a bomb... Highly recommended, especially for network games! - networking: the master can now manually increase / decrease the waiting-for- clients-countdown by tapping left / right. Yesterday we had a situation where I missed exactly that feature: Erhard was about to join but only 15 seconds remained, so he just missed it and everybody had to quit and rejoin. - Fix (was uncritical, but...): "toilet mode" isn't a configurable input mapping anymore :P Forgot to set the non-editable flag for this fixed mapping, which is why the auto-configuration system of my framework made it configurable in the controls menu. - (maybe) fix, networking: ddni and Erhard reported a weird issue that to me looks as if their network connection was sometimes so instable that some crucial state change packages would pile up - and then suddenly be executed one after the other without any delay. That resulted in situations where it looked as if the scenery was changing all of a sudden - although other players experienced it as what it was: matchend, result-screen, next round. But for them it was more like matchend (or shortly before matchend) -> next round, the result-screen would essentially be skipped or visible as a black screen for one frame. Well, that's my guess because I don't have another explanation :-) So to work around that I extended the network protocol by dedicated sync- commands for those screen-changes. Crossing fingers, untested ;-) Thanks to ddni for recording a video of that phenomenon! - (maybe) fix, networking: for some Amiga players at least a hard master drop would result in their client to appear frozen. It didn't crash though, it was simply waiting for a TCP timeout on the socket which was closed by the master. Apparently it's no good idea to rely on the TCPIP stack's error handling here. Therefore the master now sends an explicit "server-death"-message to all clients before shutting down. Only tested on Windows so far. - made 4711 the default network port for no particular reason other than that I chose it for testing :-) Yes, I know that it's used by other services (just like probably every TCP port) and I don't care at all. - Windows, auto-updater: the self-deletion of the update installer eventually triggered some stupid antivirus software :P Disabled the self-deletion step, hope that does the trick. Thanks to Valentin for reporting and analyzing! - Windows, auto-updater: now 64 bit executable. v2.9: - Fix, networking: the master was allowed to continue even if not every connected client selected at least one color. This in turn resulted in a deadlock when starting a level. This bug could be trigger only if multiple players shared one client machine. Thanks to aPEX for tapping into it :D - Fix, networking: the master was still listening when the game had already started. This could cause undefined behaviour on the server if another client made a connection attempt on an already running match, which in turn resulted in the clients to appear frozen (in fact the clients survived when the server was restarted, but well, academic ;) ...). Thanks to nujack for tapping into it ;) - Fix, cosmetic: the last used text input field remained active (cursor blinking) even if you already moved the row-selection to another input field, controls and network menus. - the win screens are now being displayed for at least 2-3 seconds. Before that it was possible to practically skip them by an "accidential" button-click... - "About Atomic Bomberman" section extended :) - networking: the master can now hit F9 to toggle some sort of "on the toilet" or "baby doesn't want to let daddy play a few rounds" mode... This has the effect that the win-screens etc. are auto-skipped after some seconds so that the session can go on without delay. - networking: for joining there's no need for a password anymore. The password is now meant as a key for the master only - so that only he can start new sessions for that game name. Otherwise somebody who wanted to join the game but accidentially hit "start" effectitvely hijacked the session. - when we now played the first online matchs I found it pretty hard to get people to join in time. And sometimes one client connected but soon quit again when nobody else joined. Most of all this is a matter of timing: we tried to arrange our sessions via Facebook events, not by direct live chat. So naturally people would join at slightly different times. To make it all a bit easier I added a timer: the master can set a countdown which every client sees. When it drops to zero the game begins. v2.8: - Fix: a debug-relic caused the game to always try to enter fullscreen mode on startup even if you previously chose to use window mode. This one slipped through because I always play in fullscreen :P Thanks to jabirulo for reporting! - in the following I added some more game-play options. Unfortunately there wasn't enough space left in the level select menu. The only option for lazy coders was to decrease the vertical gap between those menu items. But this again reduced readability too much. Which is why I added an orange row highlite. For consistency I added this to all screens (only exception being the main menu because I didn't want to change the original look here). - Default bomb countdown was 3 seconds whereas the original's is 2. No idea how this difference could remain unnoticed for 10 years :P Thanks to Valentin for reporting! - However, those 3 seconds don't feel bad at all. Therefore I made this a new game-play option and 2 seconds is the new default value, possible values range from 1 to 4 :) - In the original certain considered "powerful" extras don't appear for the first 40 seconds of a match. The golden flame and the trigger are considered "powerful" in that context. IMHO this behaviour is questionable. E.g. personally I find the red glove to be at least as powerful as the trigger. Anyway, for "original-purists" I added yet another game-play option so that you can adjust that delay. Values range from 0 to 50 seconds. Thanks to Valentin for reporting! - the red glove punch action is now also triggered if you don't simultanously press a directional button. This was a another significant difference to the original game. You can now punch away a nearby bomb without sliding into it. Thanks to Valentin for reporting! - extended the About / Credits area and added a donor-thanks section ;) - all Amiga lha archives are now patched so that the executable protection bits are set. Also, the AROS version is now also packaged into an lha instead of a zip. From now on this is also true for all my other projects. v2.7: - new disease: invisible. Well, a little bit of your shadow remains visible ;) Apparently this one was planned for the original PC version (there are sound effects for it, which are now used too, of course) but never made it into the final game AFAIK. - one second after the last opponent has been blown up, the hurry-wall stops and bombs don't explode anymore. The idea is to reduce the chance of draw-games especially in very tight situations (which most likely means that an intense battle happened). The original has something like this too, thanks to Valentin for reporting! v2.6: - Trigger bombs are now converted to normal bombs if the player who planted them dies or picks up an extra which makes him lose the trigger. Thanks to Valentin for reporting this pretty significant difference to the original game! - Fix: shadows weren't correctly premultiplied by alpha. Only the trained eye should have noticed though ;) - added one of the original's cheat-modes :D Well, at least it was *planned* to be inside the original game, however I didn't manage to actually activate it. But, yeeeehaaaa, this remake supports it (I modified the joypad sequence a bit though, have fun looking for it ;) ) Thanks to Valentin for pointing me at that one :) v2.5: - punch animation is now played no matter if there's a bomb to punch away or not. This was a minor difference to the original game. This behaviour has one benefit: you can easily check if you still got the puncher... Thanks to Valentin for reporting! - team mode: original player colors are now being used during the first seconds of a match before they are being switched to white / red team colors. Before you had a hard time figuring out who you were... - somewhat adjusted explosion segment offsets, those were a bit off. Well, they still are, but less than in the original and less than before. The thing is: unbelievable but true, they are totally off in the original: it's all shifted by some useless pixels to the right and for some assets the segments simply don't fit well. - explosion-animations are now repeated once and played at twice the speed. Closer to the original. - detail: if you have the kicker you cannot stop kicked bombs with the 2nd button anymore if you also got the jelly! - new disease: swap player position with a random opponent. For whatever reasons I forgot about this one, saw it in a Youtube video of the original game now :) - disease timing modified to be more closely to the original. Especially the duration decrease when you pass a disease has been changed: before it was 1 sec., now the remaining disease time is cut in half for you. Thanks to Valentin for reporting! - improved texture modes, depending on your hardware. In general this improves the playfield's and animations appearance. If possible the washed out bilinear filtering is avoid in favor or an filtered scale2x variant. - some graphics, namely bricks, use purple as a transparency indicator. However, for some this color-key is slightly off, so that here and there a single purple pixel remains. Was very well visible for the lilys in that trampoline world. The purple-check is now somewhat fuzzy so that stuff like that is gone. Windows users: the game will ask for UAC rights elevation to create a new set of patched decrunched assets. - angel death animation: angel now flying upwards :) - death animations fade out on last frame, simply looks better than those original abrupt endings. - extras explanation screen: extra-icons now without bilinear washed out filter look. - for upcoming updates the online update mechanism has changed. Before the game would only check for an update once per day. Now it does always on startup. The reason is that for an online session all players have to be on the same update level... - teleporter sound effects added. - trampoline sound effects added. - many more generic extra-pickup voice-overs added. - many more hurry voice-overs added. - many more frag taunt voice-overs added. - sound when punching a bomb. - sound when picking up bomb. - sound when a thrown bomb is bouncing around. - generic disease voice-overs added. - poops sounds added. - even more sounds added :P - new sound effects manager to gracefully handle this giant amount of sounds even on low end hardware. - put original's dedicated tune in the waiting-for-net-players screen. - optimization: extra color analyzation to avoid creation of sometimes rather useless secondary textures (useless in terms of: you won't spot the difference...) -> less VRAM used, faster texture generation step. - optimization: if the hardware supports it, the game will now create and cache NPOT textures, which means less VRAM used and faster texture generation. - optimization: tuned texture atlas generation parameters for the different atlas types (animation, world preview, playfield, extras). Makes quite a difference, until now all used the most effective but most costly variant best suited for the animations, which is overkill for the other variants. - optimization: texture atlas creation moved to the initial startup phase. - textures now with premultiplied alpha if the hardware supports it (should be pretty much all but Compositing). Above all this gets rid of those little filtering artefacts here and there. v2.4: - online update server has been configured and activated for this game for upcoming versions (for all but AOS4 the game should auto-update to this version already, forgot to enable a special-treatment-build-flag for AOS4 which is necessary because of the extra Compositing version for Polaris users and others without Warp3D). - Trigger bombs can now be triggered one by one instead of all at once. No idea how this significant difference to the original could survive for so long :P Thanks to Valentin for reporting. - network sanity check improved. - new option in level-select short "get ready" message before match start. Its only purpose is to reduce the probability that people accidentially plant a bomb immediately on startup because they are still tapping the fire-button to begin the match. Playfield is also darkened a bit during that time. - more start position options (N is the number of active players): 0. map default ignore colors (like before) Linearly uses the first N start-positions in the order defined in the map. 1. random ignore colors (like before) Radomly uses the first N start-positions in the order defined in the map. 2. original map default Uses the start positions dedicated to the respective player color. 3. original random Random positions, but only picked from the set of active player colors. 4. fully random Randomly uses all available start positions. v2.3: - Fix: conveyor belts didn't transport players anymore :P This bug was introduced with v2.0 when the core logic was modified to use fix-point math instead of floats for networking and slipped through unfortunately. Thanks to Valentin for reporting! - when fixing the above bug the player movement logic was improved too. Funny enough all this also made the rewrite a bit more exact by "accident": in the original the conveyor belt has no impact if you try to move in an orthogonal direction, this is now correctly replicated. - new gfx option "stretch" to disable the aspect correction. For those who prefer blown-up bombermen and no black borders like Valentin. - network sanity check: only identical program versions can connect for an online match. If you try to join a session with a different version, you'll be kicked immediately. v2.2: - further improved network game join behaviour. v2.1: - cleaned up the network menus. - join-online-session won't block if the server isn't yet reachable. - Windows installer: readme is installed and gets its own start menu entry. v2.0: - due to the Corona crisis I had to add this: online matchs :) *** BETA *** There may still be flaws, only tested a bit ;) - credits, thanks and greetings added. - disabled some random backgrounds pictures which aren't well suited for text. - Erhard asked for it, here it is: a pause function (via pause or help key, or F12 on Macbooks which don't have any of those other keys :P ). The intermediate result-screens can be paused too. - Fix: default key mapping was wrong, up and down keys toggled :P Thanks to Erhard for reporting! v1.2: - team-mode added! In contrast to the original game this rewrite also supports kills-win-matches in team-mode. Consequently the kills of all team member are accumulated and presented on the result screen too. In team mode the players are either part of the white (odd player #) or red (even player #) team. Btw.: the crappy AI tries to avoid killing team members ;) - new game-play mode "Annihilation". If this is activated, then every player has the glove, the punch and a 10000 jelly bombs stock from the beginning :) Also, if you lift a bomb then you'll immediately throw it away again ( = autofire). This is truely hardcore! - Player-select-menu now with clear-all-assignments-button. - Player-select-menu now with unused/AI-toggle-button. - Player-select-menu now with assign-by-fire. Consequently a dedicated "Start"-button has been added to this menu. - Fix: Match-select-menu, ?translation mixup. It wasn't the conveyor-belt's size but the stomping wall's size :P - Fix: Results-stats-screen now shows the correct dedicated background picture. - Fix: the explosion's last "south" element was missing :P Forgot to adjust one layout file. Funny enough nobody noticed so far :P - Fix: the punch-up animation was wrong, it was the same as the punch-down animation. Reason was that there are several name conflicts with the original's unpacked asset names. This was one of those (a redundant set of punch-down anim frames would overwrite the true punch-up anims...) and in this case I forgot to set a patch. Now I did :) Funny enough nobody noticed so far :P - Fix: the internal multi_frame command eventually didn't load all anim frames. Affected some death animations. - Fix: it could happen that two (or more) floating bombs ended up resting on the same field. I made a subtle logic change to prevent this. However, this had some interesting side-effects which I had to compensate for. Let's hope I cought'em all! - Fix: bouncing bombs outside the actual playfield eventually made it into the next match. - Fix: last Windows-installer was broken, files missing. - Fix: Windows-version now correctly handles UAC when it comes to decrunching. - RAM and VRAM requirements *massively* reduced. v1.1: - CD DATA detection improved. v1.0: - initial release.