Git Product home page Git Product logo

retro-carnage's Introduction

Go Bugs Code Smells Vulnerabilities Security Rating Maintainability Rating Technical Debt

RETRO CARNAGE

The goal of this project is to take you back to the best part of your childhood. To do this, we are building a modern multidirectional scrolling shooter. Once finished, Retro-Carnage is going to be a worthy successor of classic video games like Ikari Warriors by SNK, War Zone by Core Design, or Dogs of War by Elite Systems.

This game is currently in development and not ready to get played, yet.

Watch the video Development status as of 2021-08-09

Getting the latest release

You can find the latest builds for various platforms on the release page.

Run the game

  • Download the application archive for your platform
  • Unzip the application archive
  • On Linux only: make application executeable chmod +x retro-carnage
  • Double click on application or use terminal to run .\retro-carnage in application folder

Getting Started

Prerequisites

All platforms

  • git
  • Golang (>= 1.22)
  • PowerShell

On Ubuntu

Install the required libraries:

sudo apt-get install -y libgl1-mesa-dev xorg-dev libasound2-dev

On Fedora

Install the required libraries:

sudo dnf install libXcursor-devel libXrandr-devel libXinerama-devel libXi-devel mesa-libGL-devel xorg-x11-server-devel alsa-lib-devel libXxf86vm-devel

On Windows

Install tdm-gcc so that various go-bindings can be compiled. A installation with default option will do fine.

Installing

Get the code and assets

git clone https://github.com/Retro-Carnage-Team/retro-carnage.git
git clone https://github.com/Retro-Carnage-Team/retro-carnage-assets

Change into the src directory, install required modules, compile the application

cd retro-carnage
go get -d
go build

Start the game

./retro-carnage ../retro-carnage-assets

The repository contains IDE settings for Visual Studio Code to debug, run, and test the game.

Running the tests

Run the steps to install the development environment first (see previous chapter). Open a terminal, navigate into the application folder and run the test script:

pwsh .\test.ps1

Authors

License

This project is licensed under the MIT License. See the LICENSE.md file for details.

Acknowledgments

This game is based on the work of many great artists who share their work free of charge. See the ATTRIBUTION.md file for details.

retro-carnage's People

Contributors

dependabot[bot] avatar huddeldaddel avatar

Stargazers

 avatar

Watchers

 avatar

retro-carnage's Issues

Cheats

Implement cheat codes (for debugging only ๐Ÿ˜œ)

Implement spring-guns

There should be an enemy type for spring-guns. This type of enemy doesn't move and can only be killed with a grenade or RPG.

RpgSpriteSupplier

This class switches between 2 sprites at the speed of the display. Instead it should use a configured delay, like most other Sprite suppliers do.

A unit test is missing, too.

Panic when player 0 has no weapons

When player 0 exits the store without buying a single weapon a panic happens:

engine/characters/player#203:

var itemNames = p.getNamesOfWeaponsAndGrenadesInInventory()
selectedWeaponName = itemNames[0]

Options screen

There should be an "options" screen reachable from the title screen. This new screen should offer "options" to switch between windowed / fullscreen mode, change window size, change mappings for input devices.

Sprite missing

When changing directions rapidly (and throwing grenades like crazy) one can force a message that a player sprite is missing. This should not be visible to the user. Nevertheless it's an error:

2021/07/06 20:30:17.933611 /home/tom/Projekte/retro-carnage/src/engine/renderer.go:86: WARNING: Player spriteWithOffset missing for player 0

Implement spawn areas for enemies

Right now enemies just come from the level sections target direction. It would be nice to have spawn areas (off screen) that create enemies in certain intervalls (or timing patterns). It would be cool if these spawn areas have a minimum scroll offset - so that they don't create enemies right away.

Load music asynchronously

Right now the background music gets cached synchronously - increasing the loading time of the game.
Instead the music should be cached in the background.

Super Mario like save games

Game should offer 3 save games, like super Mario does. Auto save should be performed after each level, except the last one.

Additional properties for obstacles

When throwing grenades, some some obstacles (like hedgerows) should not stop the movement of grenades, others (like houses) should do that. This should be an additional property of the obstacle.

Send fatal errors to backend

Currently the backend is instantiated in the main form. From there on it has to be passed to other components to be usable. This should be refactored.

There should be a global variable for the backend - so that it is accessible from everywhere.
Then all places, where fatal or panic messages are logged, should be refactored to invoke the backend as well.

Landmines should explode when hit by grenade

Landmines should explode when they get hit be a grenade. Currently they just disappear.
This features allows for huge chain reactions of landmine explosions - if they are placed in a level accordingly.

Invincibility animation is not working

The invincibility toggle makes the player flicker with the frequency of the screen. That's way too fast and should be re-implemented with some more reasonable delay.

Enemies are activated too early

It seems that enemies are activated too early (before becoming visible).
The area likely to cause this issue is already marked with a TODO comment.

Bullet offset player 1

  • Bullet offset for player 1 (direction "UP") is wrong. It's too far on the right.
  • Bullet offset for player 1 (direction "RIGHT") is wrong. It's too low.

High score screen

There should be a screen that displays the high score table - and lets player 1 and two enter new entries when they've reached the required score.

Player can move even when "fire" has been pressed before movement

When the player gets moved and fire gets pressed afterwards, the player should be able to move and change direction.
If the fire button gets pressed before the movement, the player should stay where he is, just changing the viewing direction.

Currently this doesn't work as the player starts moving when changing direction - even when fire has been pressed first.

Scrolling ignores player position

When player moves the screen up and then moves down quickly, he can move out of the visible area.
Scrolling should consider the position of both players to never get them out of view.

Remove music from cache when level is finished

Music for certain levels gets cached when the level is selected on the world map. Since we should use one song per level, the cached music can be removed once the level has been finished.

Pause

Implement Pause button to be able to stop the game for toilet breaks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.