Hitting the magic number, version 1.4 LEGACY and GPL-only released!

No Comments

This is a major milestone in the Biamin project! When I released 1.2 February 22nd 2014 after about a year of hacking away on it, I was pretty done with it, expecting a few feedback releases with bugfixes and suggestions from the Internet. I’m quoted as saying: «The ~2200 lines of code reflects a need for optimization, but I am not planning to do any major overhauls on the current game.» Enter our advanced Bash code side-kicker Kastian, who first pushes ahead some ideas I wasn’t able to implement myself, optimizes the entire codebase(!!!) in ~ 1.3, and then starts sending more suggestions for expanding the universe beyond my own mission statement.

While we were developing a more RPG-oriented branch of the project "2.0", I felt the original game needed to be moved somewhere safe. Then came the idea of "forking" it into the current subdivisions: code, legacy and gpl-only. Check them out on our gitorious project page. The first contains the full game, the second contains the current version 1.4 + bugfixes and the last one will follow the 2.0 series (full game) once we have reached stable. Read more about the different editions of Biamin on the About page.

So today we release version 1.4, meaning that we have successfully fulfilled the original game I created in 2013 plus optimizations. The LEGACY branch will only receive bugfixes from this point on. All active development and world expansion will continue in 2.0 and 3.0 etc. branches in the /code/ repository. I think it is safe to say that the LEGACY or original series of Biamin is a rogue-like adventure game made to encompass on-and-off playing, as a drop-in BASH replacement of games like e.g. solitaire. It features 4 playable races, 6 enemies, 8 items and 6 different scenarios in the 270 sections of the world map, as well as a map template generator and integrated update function for bugfixes. If you want to go beyond that, stay tuned for 2.0!

CHANGES in version 1.4

  • Changed the roll dice prompts in battles (work in progress)
  • Added re-seeder for more random dice rolls
  • REMOVED the separate update_biamin.sh files and ADDED integrated –update function
  • BUGFIX Player was still attacked the round s/he found an item. Fixed!
  • CHANGED the flee dynamics: You roll for flee, but successful flee requires that you’re not caught doing so by your enemy.
  • Compatibility fixes for MacOS (e.g. in map template creation)
  • And let’s not forget Kastian’s code optimizations:)

I have updated the Download and About pages to reflect the changes in the project layout.

I have also updated the GPL-only repository up to version 1.4!
Note: GPL-only will at some point diverge from LEGACY as it follows the full game "2.0" series. Stay tuned for more information about the new RPG-oriented Biamin series coming soon!

Biamin mentioned in Linux Voice #2 (May 2014)

No Comments

I was reading Linux Voice issue 2 last night, when my eyes stumbled upon a familiar ASCII image of Oldburg Castle on page 14! With the initial public release of Back in a Minute (1.2) I did e-mail the awesome guys at Linux Voice, notifying them of the release. I was not expecting to get anything in print, but seeing this was totally awesome! Click the thumbnail for a larger scan:)

Biamin in Linux Voice #2

Stable version 1.3.8, update_biamin.sh and new map released!

No Comments

Shortly after version 1.3.7.9, we had gathered enough bugfixes to call it 1.3.8. I also created an update script for biamin players to keep their game current, and also a new CUSTOM.map pasted below, so you’ll have something to do in the weekend:)

DOWNLOAD version 1.3.8
Download the latest release from the download page.
GPL-Only releases are available here.

CHANGES in 1.3.8
Several small bugfixes in ASCII and LoadGame function were handed in by Kastian, thank you!
We’re eeking closer to version 1.4 which will be LEGACY.

Notably, there is now a biamin update script available! It simply pulls the raw text of the current biamin.sh in our gitorious repository, checks the version numbers of the local and the remote file and if they are any different, asks the player if s/he’d like to update the local biamin.sh to the latest version. This makes things so much easier, especially on the blogging side! Please note that the update script is version 0.5. It has been tested, but since it assumes default config there may still be bugs worth ironing out. The update script does not destroy character sheets, highscore list or the current configurations.

WORK IN PROGRESS on version 2.0
We’ve already started developing the new features for version 2.0. This version goes beyond the original scope of Biamin, so when 2.0 is released, the current game (reaching 1.4) will be renamed to Biamin-LEGACY. I’ve also started working on some of the many new ASCII screens the new features require.

This collaboration has forced me to learn how git is a developer’s tool and not just a fancy FTP put command. When I was coding alone there were few reasons to branch and merge code, since I was the only one who would face the consequences. But more than that, it has taught me how F/OSS projects grow and take on a life of their own. This is exactly why the concept of a LEGACY and a 2.0 version is important to me. The 2.0 would never have seen the light of day without Kastian! Cheers!

CUSTOM maps
I’m going to revisit this function to make sure it sanitizes the map file before loading it into the game, for version 1.3.9. In testing it out, I created this little kingdom so ya’ll have something to do in the weekend;)

       A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R 
   #=========================================================================#
 1 )   @   @   x   x   x   x   x   x   T   .   .   .   .   T   .   .   @   @ (
 2 )   .   .   H   x   @   @   x   .   .   x   x   x   x   @   @   .   T   @ (
 3 )   .   @   @   @   @   @   x   .   x   x   x   x   x   @   @   .   @   @ (
 4 )   .   @   @   @   @   x   x   .   .   x   x   x   x   @   @   .   @   @ (
 5 )   .   T   @   @   x   x   x   x   .   @   x   x   @   @   @   .   @   @ (
 6 )   .   @   @   @   @   x   x   x   .   @   @   @   @   @   @   .   @   x (
 7 )   .   .   @   T   @   x   x   x   .   @   @   @   @   @   @   .   @   x (
 8 )   @   .   .   .   @   @   x   x   .   @   @   @   @   @   .   .   .   . (
 9 )   @   @   @   .   .   @   @   .   .   @   @   @   @   .   .   @   x   . (
10 )   @   @   @   @   .   .   .   .   @   @   @   @   @   .   @   x   x   . (
11 )   @   @   @   @   .   @   @   @   @   @   @   @   @   .   @   x   T   . (
12 )   @   @   @   @   .   @   @   x   x   @   @   @   @   .   @   x   x   . (
13 )   @   T   .   .   .   @   x   x   x   x   x   @   @   .   @   x   C   . (
14 )   @   @   @   @   @   x   x   x   x   T   .   .   .   .   x   x   x   x (
15 )   @   @   @   @   x   x   x   x   x   x   x   x   x   x   x   x   x   x (
   #=========================================================================#
          LEGEND: x = Mountain, . = Road, T = Town, @ = Forest         N
                  H = Home (Heal Your Wounds) C = Oldburg Castle     W + E
                                                                       S

Back in a Minute Total Re-Write, version 1.3.7.9 released

No Comments

This release saw the total re-write of the entire Back in a minute codebase, for optimal performance, less I/O operations and greater compatibility with other *NIX systems (including MacOSX). This release is an intermediary release mostly done for the books, but includes Kastian’s optimizations and several bugfixes; not to mention GOOD NEWS for the continued development of the project!

DOWNLOAD version 1.3.7.9
Download the latest release from the download page.
Default game directory is ~/.biamin. Put biamin.sh in that folder, chmod+x it and run ./biamin -i to install an alias to your .bashrc file.
GPL-ONLY versions (without CC licensed graphics) is now available at the GPL-only repository!

CHANGES in version 1.3.7.9
As the ridiculous version number suggests, there have been quite a few additions since the last blog update. Let me first admit that this release has been a long time coming! I’ve had a vacation, stuff to do with the building I live in, been writing on my MA thesis and been ill with fever and allergies as summer struck Norway with a vengeance. Thankfully, Biamin’s now official collaborator Kastian has stepped up and has fixed some of the most annoying legacy code I had produced in working out this game.

I am not a programmer, more of a hobbyist hacker. So even though my code eventually worked, its logical architecture wasn’t where I wanted it to be. The first thing Kastian rewrote from scratch was the MapNav() function, which displays the interactive map in the game. Like I had wanted to do, he wrote it fully in awk, instead of using awk, echo and sed. While I went away on holiday in Barcelona, he took it upon himself to go through the entire code to improve it. And he completed it in version 1.3.7! While the game stayed the same, his optimization cut the code base down with 300 lines of code, which is quite a feat! His sparce changelog sounds as follows:

# kstn major rewrite CHANGES for 1.3.7
# remains of GPS_Fix() included in NewSector()
# CHANGES for 1.3.6.1. Also, I (sigg3) have made 1.3.7 first GPL-only release too..!
# NoWriteOnGamedir() replaced to Die() because was used only once
# CosmeticName() removed because was used only in Intro()
# LookForItem() removed because was used only in NewSector()
# ActionsBar() removed because was used only in NewSector()
# TranslatePosition() removed because used only in MapNav()
# TopMenu() removed because used only in MainMenu()
# HowTo() removed becouse used only in Credits()
# remains of GX_MapSight() included in GX_Map()
# all TodaysDate() moved to Intro() because need only once
# Fixed some little bugs (I'cant remember how many :) )

The last two weeks, we’ve corresponded semi-daily with bug reports and feature ideas. While I didn’t have too much planned for Back in a minute upon release, except bug fixes and architectural changes, Kastian’s game-related input has convinced me that there are many possibilities worth checking out. I added him as a collaborator on our gitorious page recently, to ensure that the project can move on even when I’m either writing on my MA or am otherwise occupied.

Current ROADMAP: 1.4 to be LEGACY
Without going into too much detail, since they’re still being worked out as I type, I have decided that the game will have to be split up at some point into: Biamin-LEGACY and Biamin 2.0. The legacy game will remain the quick-and-dirty game you know today, which originally gave the project its name, while the 2.0 release will see some really cool changes that makes the world of Back in a minute come alive!

The Biamin-LEGACY code will probably be stabilized and polished up until version 1.4, which will only receive occasional bugfixes from that point on. New features of the game, which changes game-related content and player experience, will all be directed to the Biamin-2.0 branch of the project. Don’t worry, you will still be able to play the version you want to, be it LEGACY, GPL-only or 2.0, from our repository and the download page. But the LEGACY code will soon have reached the original goals I had set out for it when I released it publicly. If anything, it protects my sense of nostalgia for all those hours hacking on it alone pre-publishing.

Quick note on the GPL-ONLY version
This version is included as a courtesy to the occasional License Feinschmecker who cannot abide mixed licensed code. The reason I did not opt for the GNU GPL v3 for the entire codebase is simply because the GNU GPL was never intended for the artistic content in games, and I don’t want to see my work used in commercial products, however small the chances are for that ever happening. The GPL-only repo will contain both LEGACY and 2.0 versions. We still recommend the standard version of the game, with dual GNU GPL v.3 and CC BY-NC-SA 4.0 International licensing, for the best gaming experience:)

I should probably go through and update the About page now… :P

Back in a Minute 3rd Feedback Release, version 1.3.6

No Comments

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:

  1. $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:)
  2. Players can now (F)lee during battle! Several players have pointed out how while enemies can flee, players cannot, is unfair.
  3. 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:

  1. ADDED a config file for game configuration! Users won’t need to look at the beautiful code:)
  2. FIXED the color config loop present in versions 1.3 and made it more simple
  3. ADDED automatic setup of $GAMEDIR instead of bugging users to create it
  4. FIXED a bug in the funeral date string when character dies
  5. 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!
  6. Kastian sent two code optimizations reducing my grep+sed invocations to just using sed. Much appreciated!
  7. ADDED –install argument which adds a biamin() function to your ~/.bashrc
  8. Removed erroneous select statements and swapped ‘em out with case statements

Preliminary TODO list:

  1. Add sensible configuration of gamedir (requires permanent file, atm)
  2. REPLACE all gawk instances with awk for compatibility.. easier said than done!
  3. TEST on OSX.. I don’t have any Apple products so any feedback is appreciated.
  4. Possibly add dungeons (would require more mapping:P)
  5. 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!

Back in a Minute 2nd Feedback Release, version 1.3

No Comments

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.

DOWNLOAD version 1.3
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.

CHANGELOG for version 1.3:

  1. FIXED a bug so now the Guardian Angel resurrection works as intended
  2. Removed all wget instances with curl for greater compatibility
  3. CODE: Consolidated Dice functions to one, thanks to kastian for code suggestion!
  4. 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.
  5. FIXED bug where player’s successful flee would constitute CTRL+C penalty
  6. ADDED a Howto instructional page on the Credits page

IMPORTANT GAME CHANGES for version 1.3:

  1. 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.)
  2. CHANGED the Move North, West, South and East buttons to W,A,S,D for gamer compatibility:)
  3. 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!

Back in a Minute 1st Feedback Release, version 1.2.3

No Comments

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:

  1. Fixed the $GAMEDIR variable to use $HOME global variable
  2. POSIX: I’ve changed all arithmetic expressions to use (( format ))
  3. POSIX: NO MORE BACKTICKS! Changed to proper $(encapsulation)
  4. All expr calls have been substituted with echo
  5. Fixed bug where enemy could flee even if he has negative health
  6. Fixed bug where fight would continue after resurrection even if enemy health was 0
  7. Fixed a bug with the date
  8. Fixed a horrible map bug I had introduced in code cleaning
  9. I have changed all SETs to READs use $1 $2 .. variables where applicable

GAME CHANGES in version 1.2.3:

  1. Increased risk of being attacked while Resting
  2. Added penalty for CTRL+Chickening out during battles (-20HP & -20EXP)
  3. Removed Rolls for events on first move after loading a new or saved character
  4. 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!

Add a launcher in your .bashrc

No Comments

You can add a biamin launcher at the bottom of your (hidden) .bashrc file that resides in your home directory, to allow you to just run “biamin” in the terminal without having to remember the full path.
$ nano ~/.bashrc
# Biamin launcher
biamin() {
/path/to/your/biamin.sh "$@"
}
CTRL+X and hit ENTER

Close the terminal and open a new one to enable the launcher. Done!

Back In a Minute First Public Release, Version 1.2!

1 Comment

After about a year of accidental coding and 2196 LOC, I’m proud to announce the first public release of Back in a minute or biamin; version 1.2! This game is dedicated to the Free and Open Source Software community. Please share it.

To get the software, you can either download it directly from my server or clone the git repository up at gitorious.org; follow the instructions on the download page.

The game has a dual license, GNU GPL 3 for code and CC BY-NC-SA Int. 4.0 for artwork, click here for licensing details. A GPL-only version without art is planned, but not ready at the moment.

The game requires BASH, and is UTF-8 compatible and POSIX compliant to the best of my admittedly humble knowledge. It looks best in a white on black colored terminal emulator with 80×24 "resolution". The game has been tested in xfce4-terminal and gnome-terminal on Slackware 14 and Fedora 17. It works in console too, but since the game presupposes 80×24 it doesn’t very nice. For some as of yet unknown reason, the terminal emulator may act funny if the game crashes. Please don’t play biamin in a window you cannot close.

Back in a minute needs a directory to store files, the default being:
/home/$(whoami)/Games/biamin/
but this is easily changed on LINE 10 in the CONFIGURATION header of the script. The game stores character sheets (.sheet files), a highscore file, a color configuration file and some temporary files in that directory. If you want to have several players access the same game (e.g. competing for the best highscore) you need to change LINE 10 accordingly and make sure every user has read/write access to that folder.

Usage: biamin or ./biamin.sh
(NO ARGUMENTS) display this usage text and exit
--play PLAY the game "Back in a minute"
--announce DISPLAY an adventure summary for social media and exit
--map CREATE custom map template with instructions and exit
--help display help text and exit
--usage display this usage text and exit
--version display version and licensing info and exit

The game features a number of "screens" that have several options. Use the keyboard keys indicated, e.g. (M)ap or (C)haracter, to navigate the screens. There are 8 secret items randomly hidden in the world. When you find the first one, you will be able to see one of the remaining 7 on the map. If you get that far..

The four races you can play as are Human, Elf, Dwarf and Hobbit. The Human provides the normal difficulty, whereas the other three gives you different advantages and drawbacks. I recommend playing as Human first to get the hang of it. The races’ characteristics are subject to change depending on feedback from you guys.

There are many monsters and villains in the Old World, so expect to perish. However, you can (R)est anywhere in the map to regain health points, and you may find magical items that give you special powers!

If you get sick and tired of the default map, you may create your own for re-playability ./biamin.sh --map will create a map template in your game directory, and follow the instructions provided on the screen.

If you’re into social media and want to brag about your highscore, running: ./biamin.sh --announce will create a short adventure summary for the masses! Since this feature only applies to heroes that have already reached the top 10 of the highscore, you cannot "announce" a living character.

I hope you have as much fun playing it as I did creating it. I’ve also played it a lot. Feel free to submit bug reports on https://gitorious.org/back-in-a-minute or on my bugs page. I will look at them ASAP. Feel free to e-mail me feedback through the form provided on the Feedback and donations page. Thank you and have fun!