Skip to content

A game, written in Bash, that is a somewhat retro-a-like shoot 'em up. Hopefully.

Notifications You must be signed in to change notification settings

wimpysworld/antsy-alien-attack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a8e16df · May 17, 2023
Jun 7, 2019
Jun 8, 2019
Jun 5, 2019
Jun 7, 2019
Jun 2, 2019
May 25, 2019
Jun 7, 2019
Jun 8, 2019
Dec 19, 2018
May 17, 2023
Jun 7, 2019
Jun 1, 2019

Repository files navigation

Antsy Alien Attack!
Antsy Alien Attack!

A game, written in Bash, that is a somewhat retro-a-like shoot 'em up. Hopefully.

Antsy Alien Attack!

Made with 💝 for

Building, Testing, and Installation

Ubuntu

You'll need the following dependencies:

  • coreutils for stty
  • joy2key (optional)
  • lolcat
  • mpg123
  • ncurses-bin
  • procps
  • vorbis-tools
sudo apt install coreutils lolcat mpg123 ncurses-bin procps vorbis-tools

Or with Nix:

nix shell nixpkgs#lolcat nixpkgs#mpg123 nixpkgs#ncurses nixpkgs#procps nixpkgs#vorbis-tools --command ./aaa.sh

Execute ./aaa.sh to run the game.

./aaa.sh

XBox controller support

This step is optional.

sudo apt install libx11-dev x11-utils
wget -c http://sourceforge.net/projects/joy2key/files/joy2key/1.6.3/joy2key-1.6.3.tar.bz2
wget -c http://sourceforge.net/p/joy2key/patches/_discuss/thread/e73f20a1/33d7/attachment/button_list_segfault.patch
tar xvf joy2key-1.6.3.tar.bz2
patch -p0 -i ../button_list_segfault.patch
cd joy2key-1.6.3
./configure --prefix=/usr/local
make
sudo make install

Steam Controller

Player 1 and Player 2 control profiles for sc-controller can be found in the cfg/ directory.

  • Antsy Alien Attack - P1.sccprofile
  • Antsy Alien Attack - P2.sccprofile

Plans

  • Tick
    • Hardware interrupt trap to govern the game loop via a subshell.
  • Input handler
    • Keyboard
    • Xbox360 Controller
  • Graphics
    • Framebuffer
    • Sprite engine
    • Sprite collision detection
    • Sprite overlays
    • Starfield
    • Performance metrics
  • Animators
    • Player thrust
    • Player roll
    • Explosion animations
  • Audio
    • Sound effects engine
    • Music engine
    • Disable audio for remote connections
  • Title screen engine
    • Main screen artwork
    • Game over artwork
    • Victory artwork
  • Enemies
    • Fighters
    • Hunter Fighter AI
    • Sniper Fighter AI
    • Boss ships
    • Boss ship AI
  • Power ups
    • Bonus points
    • Weapon upgrades
    • Shields
    • Smartbomb
    • Extra life
  • Level progression
    • Number of enemies rises
    • Enemy firepower increases
    • Enemy speed increases
    • Bonus spawn rate decreases
    • Bonus value increases
    • Canyon levels, narrow playable area
    • Level progression announcements
    • Level-up skill points
  • 2P
    • Local
    • Network
  • Title screen attract mode
    • High score
    • Configuration
    • Credits
  • Install
    • Script
    • PPA
    • Snap

Title Screens

The title graphics are using toilet and lolcat via tools/render-titles.sh. You can preview of all the toilet font styles using this:

for FONT in /usr/share/figlet/*.tlf; do echo $(basename $FONT) && toilet -t -f $(basename $FONT) --filter border "Antsy Alien Attack!" | lolcat -f -F 0.2; done

Game Assets

I found music and sound effects on Open Game Art. I ended up using Creative Commons licensed music from Patrick de Arteaga and sound effects from Kenney Vleugels and Viktor Hahn.

Fonts

Terminal fonts

ANSI & ASCII

Editors

Learnings

  • subshells and traps.
  • case is twice as fast as if, elif, else, fi.
  • echo -e is faster than tput and tput is faster that printf.
  • Arithmetic comparison are faster than tests
    • For example if ((HUNT_P1 == 1)); then is faster than if [ ${HUNT_P1} -eq 1]; then
  • Bash has C style loops
    • Like this for (( FIGHTER_LOOP=0; FIGHTER_LOOP < TOTAL_FIGHTERS; FIGHTER_LOOP++ )); do
  • I never knew about ((TOTAL_STARS++)) or ((TOTAL_STARS+=5)) or ((TOTAL_STARS+=MORE_STARS))
  • Px437 IBM VGA Regular at 16px is best font.

Slides from a presentation I gave at FOSS Talk Live 2019 as part of the Ubuntu Podcast live show are also available:

About

A game, written in Bash, that is a somewhat retro-a-like shoot 'em up. Hopefully.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages