I opened my inbox today, finding 500 messages from the Acunetix security scan tool (read more here) targeting the contact form on the Feedback and Donations page. It is currently disabled until further notice. Please get in touch through the blog’s comments or the bug reports page if you want to get ahold of me. You can also leave comments on our gitorious repos!
This release saw the continued input from Biamin player and hacker Kastian! I am happy to receive great BASH code feedback as well as Tolkien-founded critique of the game itself. This release sees new bug fixes but also developments toward re-newing my legacy code that I have never bothered to change, as well as 2 major game changes. I am currently approaching the first deadline in my MA thesis, so unless there are major bugs in this release I haven’t discovered yet, I won’t be able to push out new code until mid-April. Feel free to use the bug reporting "system" or shoot me an e-mail over at the feedback page. Thanks for playing!
DOWNLOAD version 1.3.6
Download the latest release from the download page.
I also added the older versions for archiving purposes at the git repository, where you can also inspect the code.
See updated Biamin installation procedure.
GAME CHANGES in version 1.3.6:
- $GAMEDIR variable changed from $HOME/Games/Biamin to $HOME/.biamin. Please move your existing files there, or if you want to keep your current settings, change LINE 10 in the CONFIGURATION part of the script. You can always check which directory you’re configured to use by running biamin –help or biamin.sh –help. Kastian among others have noted how my $GAMEDIR was not up to UNIX standards, which is true. This was just the setup I used in my Fedora setup:)
- Players can now (F)lee during battle! Several players have pointed out how while enemies can flee, players cannot, is unfair.
- RACE Adjustments: Thanks to Kastian’s input, the HOBBIT now plays more like a rogue, with the following characteristics: Healing 4, Strength 1, Accuracy 4 and Flee 3. The racial characteristics are rolled against D6. See RACE sheet below for reference.
CHANGELOG for version 1.3.6:
- ADDED a config file for game configuration! Users won’t need to look at the beautiful code:)
- FIXED the color config loop present in versions 1.3 and made it more simple
- ADDED automatic setup of $GAMEDIR instead of bugging users to create it
- FIXED a bug in the funeral date string when character dies
- FIXED a bug in race selection where hitting any character besides 1-4 would set that unknown character as race designator. THANKS to Kastian for finding this bug!
- Kastian sent two code optimizations reducing my grep+sed invocations to just using sed. Much appreciated!
- ADDED –install argument which adds a biamin() function to your ~/.bashrc
- Removed erroneous select statements and swapped ’em out with case statements
Preliminary TODO list:
- Add sensible configuration of gamedir (requires permanent file, atm)
- REPLACE all gawk instances with awk for compatibility.. easier said than done!
- TEST on OSX.. I don’t have any Apple products so any feedback is appreciated.
- Possibly add dungeons (would require more mapping:P)
- Possibly add a quest mode
New RACE characteristics (or game difficulty/styles)
1. MAN 2. ELF 3. DWARF 4. HOBBIT
Healing: 3/6 Healing: 4/6 Healing: 2/6 Healing: 4/6
Strength: 3/6 Strength: 3/6 Strength: 5/6 Strength: 1/6
Accuracy: 3/6 Accuracy: 4/6 Accuracy: 3/6 Accuracy: 4/6
Flee: 3/6 Flee: 1/6 Flee: 2/6 Flee: 3/6
NORMAL EASY EASY HARD
Dice rolls on each turn. Accuracy also initiative. Healing during resting.
The idea is that each RACE is also a difficulty level OR a gaming style. Playing as human is "normal" in both respects. Playing as Dwarf gives you more power, but healing is slower. Playing the Elf characters will give you better accuracy and faster healing. While Hobbit, thanks to Kastian, reflects Tolkien’s works better now, and provides the game play of avoiding battles and healing. Remember that finding ITEMS adjusts your abilities accordingly, so this makes for an interesting variety of options, challenges and developments.
This version of Back in a minute saw many suggestions from the community come to code. I hope you guys enjoy it, and thanks for playing!
There are some minor and some major changes in the new release! Again, I am humbly thankful for all constructive feedback, and all positive gaming experiences that I’ve been told about. This release fixes some bugs but also changes some important gameplay related aspects (see posts below) that people have suggested or complained about. I am very satisfied with this version 1.3.
CHANGELOG for version 1.3:
- FIXED a bug so now the Guardian Angel resurrection works as intended
- Removed all wget instances with curl for greater compatibility
- CODE: Consolidated Dice functions to one, thanks to kastian for code suggestion!
- CODE: Ran it through Shellchecker and did a lot of code cleanup. Apparently I have been over-quoting my code, e.g. “This is “$AVARIABLE” day” should be “This is $AVARIABLE day”. 472 warnings of that sort fixed, and the remaining 4 warnings pertain to the parsing of the map file. To fix these will require major overhaul replacing sed with awk. I’m putting this on the back burner at the moment.
- FIXED bug where player’s successful flee would constitute CTRL+C penalty
- ADDED a Howto instructional page on the Credits page
IMPORTANT GAME CHANGES for version 1.3:
- OPTIONAL custom Home variable: If there is a CUSTOM.map present in $GAMEDIR the player will be asked if he wants to start at the default location C2 or somewhere else. The input is sanity checked, but nothing is foolproof. Note that HOME variable doesn’t have to be a HOME (H) scenario in the map file itself..! It is the H scenario that inherits the properties, not the $HOME variable. (E.g. a map can have several Home sectors, but only 1 starting position $HOME.)
- CHANGED the Move North, West, South and East buttons to W,A,S,D for gamer compatibility:)
- CHANGE sector mechanics so that you can now press W,A,S,D in the SECTOR menu directly, without having to go to map first. However, if you now press a non-declared button this will be taken as a travel/move! E.g. If you hit ‘l’ or ‘x’ at any sector, you will loiter, or walk in a circle.
Here’s the added HOWTO play page for the main menu:
HOW TO PLAY Back in a Minute
Go to Main Menu and hit (P)lay and enter the NAME of the character you want
to create or whose character sheet you want to load (case-sensitive).
You enter the World of Back in a Minute. The first sector is Home.
Each sector gives you these action alternatives:
(C)haracter sheet: Toggle Character Sheet
(R)est: Sleep to gain health points
(M)ap and travel: Toggle Map to find yourself, items and to travel
(Q)uit: Save current status and quit the world of Back in a Minute
Use W, A, S, D keys to travel North, West, South or East directly.
Travelling and resting involves the risk of being attacked by the creatures
inhabiting the different scenarios. Some places are safer than others.
I appreciate all the brilliant feedback you guys are sending in, to suggest game changes or features and to provide a critical look at the code. This makes it easier to justify all the hours I’ve spend making it up until now and into the future. And thanks for playing!
Since I released the game to various sites, I have had some really nice feedback and some really constructing thoughts regarding *sh cross-compatibility and POSIX compliance. These changes + some game suggestions have made it into this (late) First Feedback Release, version 1.2.3.
DOWNLOAD version 1.2.3
You can download the latest version by heading to the download page!
If you enjoy a little BASH, you may browse code directly. Git is so cool, ’cause you can even view all the changes
CODE CHANGES in version 1.2.3:
- Fixed the $GAMEDIR variable to use $HOME global variable
- POSIX: I’ve changed all arithmetic expressions to use (( format ))
- POSIX: NO MORE BACKTICKS! Changed to proper $(encapsulation)
- All expr calls have been substituted with echo
- Fixed bug where enemy could flee even if he has negative health
- Fixed bug where fight would continue after resurrection even if enemy health was 0
- Fixed a bug with the date
- Fixed a horrible map bug I had introduced in code cleaning
- I have changed all SETs to READs use $1 $2 .. variables where applicable
GAME CHANGES in version 1.2.3:
- Increased risk of being attacked while Resting
- Added penalty for CTRL+Chickening out during battles (-20HP & -20EXP)
- Removed Rolls for events on first move after loading a new or saved character
- Changed the enemy flee thresholds
Some TODOs or things to consider:
- Change functionality of HERO start location so people don’t have to enter the code to change it. This can be done by adding a command line argument, or simply by allowing more data to be saved in the character sheet..
- Consider changing Fight mode actions from just (R)oll to (R)oll or (F)lee.
- Possibly add dungeons (would require more maps:)
- Possibly add a quest mode
- TEST on OSX..(I don’t have one so any feedback is appreciated.)
- Run it through spellchecker.net’s BASH checker..
- Swap out wget with curl
I want to send a big thank you to all who have been playing and providing great feedback! I have learned a lot more about making things more shell agnostic, and aim to a higher level of POSIX compliance than I had ever dreamed of. It is also very good to receive positive feedback from GNU/Linux users who enjoy playing Back in a minute
I hope this game brings some joy back to the F/OSS community! Thank you!
It’s getting late, but I just wanted to record for myself that today I finished the following tasks/fixed the following bugs:
- Finished the –announce function as a copy & paste feature
- I think I have hunted down and changed all non UTF-8 characters in the code, but I still need to test it to be sure
- I implemented a couple of safe guards against the repeated keys bug. I am not sure how to solve it, as it seems more a limitation of BASH than anything else.
- Fixed the item found bug, now everything is totally random!
- Fixed a colour bug I had "featured in" with the previous –announce
- Fixed a bug where enemies wouldn’t flee at all, and adjusted the settings for this. Enemies now flee if they’ve lost half their original health and have less health than the hero.
- Commented all debug cheats used in testing
- Fixed Load character screens. They make more sense now, but aren’t perfect.
- Finished the licensing screens. This turned out alright.
- Changed the Credits page to be more informative.
That’s it for tonight! I had hoped to push out some code this evening, but I have a couple of more tests to run before I can consider it ready. Current version is 1.0 if nothing terrible happens!
I have waited with releasing any code, because I want it to be as close to complete as possible when I do. That’s just the way I work, with anything. Today’s github hipsters want to release early and often, but I grew up in a time when games weren’t patched because they did what they were meant to from release. Because not everyone had The Internet, and those who did usually didn’t have the bandwidth or know-how.
Today’s very different. People actually pay to be alpha and beta testers (they call it early adopters) on Steam. That’s ideal for fast and agile development, but I’m more of a dictator when it comes to creating things. I have too much of an ego. So biamin will be released as version 1.
What remains to be done?
- There are 3 bugs that needs to be addressed before "shipping":
- To avoid a systematic bug, I have decided that items will be randomly scattered not just at boot, but also when an item is found. This wasn’t my intent, but there you go. If in doubt, make it random. Random is good.
- The ASCII graphics didn’t pass the UTF-8 test, and was botched. This just means I’ll have to hunt down the few symbols that aren’t from the first 127 characters of ASCII.
- If you hammer the keyboard like an idiot, when [R]oll is expecting 1 symbol, bash keeps that variable for the foreseeable future. But it also crashes. This is an easy fix, I just unset the key pressed once the procedure is in motion. I can’t fix BASH, but I should avoid crashing it.
- In order to get code out of the door, I have decided to skip the elaborate social media feature –announce, and instead just echo a message to the terminal which the user can share him or herself to the same effect.
- I want to adhere to good coding practices, which involves verbose commenting and coding style. Since my HTML days I enjoy writing everything in small case, but apparently that’s not considered good form. I will adhere to the BASH coding conventions of: variables in CAPS, functions in CamelCase and loop variables named likeTHIS.
The open question is, when will I have time to do ’em? The systematic bug is a bit hard, because it renders obsolete a different codebase (the diminishing item array). Thankfully, that can be ignored in version 1, because the code will work.
Biamin is playtested!
My brother Koew did some play-testing, and broke some of the loops by repeatedly hitting the key like an idiot. I think this comes from his upbringing using Windooze. In GNU/Linux (and thus, the terminal) you never hit the key repeatedly unless you want a broken system. You read what’s on the screen, and hit the desired key. Otherwise, you may end up uninstalling the kernel you’re currently running! Anyway, this is an easy fix, see the above ordered list.***
He also complained that my map interface used [N]orth [S]outh [E]ast and [W]est instead of the WASD keys that are prevalent in gaming. He’s got a good point there, but I’m not sure if fixing it to be [W]North, [A] East, [S] South, [D] West would put the rest of the game in peril stylewise. At the moment, I use the first letter of the command, which breaks convention but it looks good aesthetically and also reflects early console adventure games. I will probably release version 1 as is and change it if there’s a request (from anyone else).
Related to this he had some systematic issues, because he didn’t liked the forced ASCII banners when travelling that shows e.g. a forest road. I think they add atmosphere to the game, and I won’t change this because biamin wasn’t meant to be tic-tac-toe, but an interactive world. The ASCII banners add some colour to the world of MUSH/MUD and also gives you time to consider your next move. Koew just walked around fighting, but there are other important mechanics available.
Once the above is fixed, I will test it on Fedora, Slackware and Ubuntu.
In other news: I have started on a minigame for an as of yet unannounced sequel to Back in a minute! The sequel was planned this summer, when I was doing the remaining ASCII for biamin, and I look forward to coding it. The sequel will be just like Back in a minute, only better coded, and set in a completely different world.
*** EDIT Feb 24th: Sarcasm alert!
I realize I was a bit unclear about it in the text above with regards to uninstalling the kernel: I am joking!
There is no way biamin.sh will uninstall the kernel or do anything of the sort! The _only thing_ it tacitly removes are the temporary files and game files in $GAMEDIR that it created in the first place. The game isn’t meant to be run at root, but that shouldn’t pose a problem either.
In the text above, I was jokingly referring to an earlier GNU/Linux-related incident, where I was ssh’d into an ARM based embedded Linux in a screen session, where I managed to apt-get uninstall the kernel I was currently running. Luckily, I could still exit that screen session and re-install the kernel.. Which is amazing! But it was completely related to my not reading what was on the screen, and it is in NO WAY related to Back in a minute.