GithubHelp home page GithubHelp logo

hurricangame / hurrican Goto Github PK

View Code? Open in Web Editor NEW
58.0 10.0 22.0 114.65 MB

Freeware jump and shoot game created by Poke53280, based on the Turrican game series by Manfred Trenz

License: MIT License

C++ 98.38% C 0.09% GLSL 0.37% Shell 0.05% Makefile 0.43% CMake 0.69%
turrican retrogaming sdl2 run-and-gun

hurrican's Introduction

CI build

A fork of Hurrican, freeware jump and shoot game created by Poke53280, with SDL2 enabled by default, support for libopenmpt and CRT simulation. Also uses XDG compliant data/config paths on UNIX. Additional userlevels from http://turricanforever.de included.

Original code by Eiswuxe (Poke53280) [Winterworks]
Further work by Pickle136, Stefan Schmidt (thrimbor) and Leandro Nini (drfiemost)
CRT simulation partially based on CRT effect - Shadertoy, Unity article from luka712's blog

screenshot


Dependencies

The code depends on SDL2 (or the old deprecated SDL) with the image and mixer components, and libepoxy. Optionally libopenmpt can be used for the music in place of the standard from SDL_mixer (see below). A compiler with c++17 support is required.

Building

The code can be built using cmake (tested on Linux and MinGW)

git clone --recurse-submodules https://github.com/HurricanGame/Hurrican.git
cd Hurrican/Hurrican
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .

The following build options are available:

Predefined platforms

  • -DPLATFORM=<RPI|GCW|RDU|RDU2|PANDORA> : Compile for the specified platform, setting the correct options

OpenGL Options

  • -DRENDERER=GL1 : Use the OpenGL 1.X code (fixed pipline)
  • -DRENDERER=GLES1 : Use the OpenGL 1.X code with ES compatible
  • -DRENDERER=GL2 : Use the OpenGL 2.0 code (programable pipline) [this is the default if not specified]
  • -DRENDERER=GLES2 : Use the OpenGL 2.0 code with ES compatible
  • -DRENDERER=GL3 : Use the OpenGL 3.0 code (programable pipline)
  • -DRENDERER=GLES3 : Use the OpenGL 3.0 code with ES compatible
  • -DFBO=ON : Add FBO support, allow screen to be scaled to arbitrary dimensions, available only with GL2 or GL3 and enabled by default
  • -DDEFAULT_SCREENBPP=<16|24|32> : Set the default screen depth, 32 if not specified

Sound

  • -DOPENMPT=ON : Use the libopenmpt code for music (SDL2_mixer uses libmodplug while SDL_mixer uses the lower quality mikmod engine)

Generic

  • -DFAST_RANDOM=OFF : Use standard C random function in place of the fast LCG
  • -DFAST_TRIG=ON : Use fast approximation for trigonometric functions
  • -DDISABLE_EXCEPTIONS=ON : Disable exception handling to reduce binary size
  • -DUSE_PRECOMPILED_HEADERS=ON : Enable pre-compiled headers for better compile time

Debug

  • -DDISABLE_MEMPOOLING=ON : Bypass pooled memory manager
  • -DCMAKE_BUILD_TYPE=<Asan|Ubsan>: Enable the Address or Undefined Behaviour Sanitizer

hurrican's People

Contributors

drfiemost avatar thrimbor avatar mia75owo avatar dulsi avatar s1eve-mcdichae1 avatar

Stargazers

 avatar Salvador Molina Moreno avatar Joshua Achermann avatar Oliver Kopp avatar Wouter Wijsman avatar Hendursaga avatar  avatar  avatar Mored4u avatar Andrea Stedile avatar Samuel Gomes avatar mohamad hani janaty avatar  avatar David Hoffmann avatar Trung Lê avatar Philip Braun avatar Yao avatar Akshay Chordiya avatar Stephen Wall avatar Alireza Khodabande avatar François Gallois avatar  avatar Juliano Henrique Foleiss avatar Garett PHG avatar Chris avatar  avatar  avatar  avatar  avatar  avatar Constantine Molchanov avatar  avatar  avatar Eduardo Javier Gómez Nieto avatar Leeor Dicker avatar  avatar Miguel de Dios Matias avatar Alexey Trifonov avatar Alexey Ugnichev avatar wvstolzing avatar  avatar Tobias Fleischer avatar  avatar Chris Pressey avatar Carsten Teibes avatar Zyxyx avatar  avatar Daniel Langner avatar  avatar Velocet avatar Lucas avatar Stefan avatar Dimitris Panokostas avatar Jens avatar Andrzej Bisewski avatar Alessio Garzi avatar Giorgioggì avatar  avatar

Watchers

Jens avatar David Bruchmann avatar  avatar  avatar  avatar  avatar Andrzej Bisewski avatar  avatar Marc Wegmann avatar  avatar

hurrican's Issues

FBO has issues with multi-monitor setups

#12 added back support for building with the FBO option, but there seems to be an issue with multi-monitor setups: The window seems stretched across two monitors but only renders on one.

Lighter CRT filter? (As previously)

Hi there, @drfiemost

Since the introduction of the additional CRT effects, performance on the Pi4 has decreased noticeably (I am not talking about my previous performance drop support, which comes from MESA).

So, would it be possible to have shaders without those additional effects? Something like --crt-light or similar.

Thanks

CI is broken

CI integration with Travis is broken. CI should probably get moved to GH actions, and the FBO support added by #12 should get build tested, too.

Game crashes when saving after first level

I played the game (latest flatpak) on Kubuntu 22.04 using keyboard. When finishing the first level, a list of empty entries for game saving appeared. I pressed the Return key to save the game. The game crashed which means it disappeared immediately without any error message.

This is the end of the game log:

-> Load Level : jungle.map successful ! <-

Loaded song file /app/share/hurrican//data/music/JungleBeats.it
Loaded song file /app/share/hurrican//data/music/boss_robofist.it
save games loaded
save games loaded
save games loaded
save games loaded
save games loaded
save games loaded
save games loaded
save games loaded
save games loaded
save games loaded

Update GLM

Version 1.0 has been released recently (now at 1.0.1)
Need a check if it's worth upgrading and that it doesn't break anything.

Hurrican No music => SDL 2.28.4 SDL2_mixer 2.6.3 NULL ptr returned from MUSIC_LoadSong() loading song file

Hello

Description

I'm running Hurrican on an odroid n2+ and I'm getting no music but I have sound_fx when running hurrican. When checking the error log I have this messages

NULL ptr returned from MUSIC_LoadSong() loading song file

Loaded texture bossbar

-> NULL ptr returned from MUSIC_LoadSong() loading song file
./data/music/credits.it

-> NULL ptr returned from MUSIC_LoadSong() loading song file
./data/music/stageclear.it

-> NULL ptr returned from MUSIC_LoadSong() loading song file
./data/music/gameover.it

-> NULL ptr returned from MUSIC_LoadSong() loading song file
./data/music/highscore.it
Loaded texture console

Pls I think is related to not support latest SDL2_mixer version. PLs can you update to support it? thx

Platform

EMUELEC 4.7 (Release Candidate version non public) The platform used is odroid n2+ . Hurrican has been built using Ubuntu 22.04 WSL2 gcc 12.1, cmake 3.27.5, SDL 2.28.4 SDL2_mixer 2.6.3 Emuelec Toolchain for amlogic-ng

I used latest Hurrican commit 18ecb8b

Log Files

Game_Log.txt

Music location.

image

Hurrican is ran from storage/roms/port/hurrican location

thx so much!!!

[Termux] Linker issue

Well - I don't know if anyone wants to help me :P

Termux is a Linux environment running on Android. I'd like to port the Hurrican game so that I can play the game (potentially) on Android, although it's probably a version mostly for nerds.

Unfortunately, I have a problem with the linker and don't know how to solve it. Maybe I should write to the Termux developers right away, but maybe it can be solved more easily.

https://bin.0xfc.de/?c727d88e0fca4079#7XwFP6JXebQ3AWMPHqPhydVzJyNnHSvg7DTpto6cVrEq

It seems to me that Hurrican uses SDL2 and there should be no problems. If it uses SDL1.2 then there could potentially be problems because (if I'm not mistaken) SDL1.2 is provided by the SDL2 compatibility layer (sdl12-compat).

But maybe someone has a better understanding of C++ code configuration and compilation than I do.

Configure gamepad on Linux

I tried to install the fantastic Hurrican game on Kubuntu 22.04 via flatpak. The game seems to run fine but I'm unable to configure my game pad (I tried two completely different pads) in a usable way.

I could select all my desired mappings just fine. This includes using the right trigger button (displayed as button 8 in the game settings) as fire button (this mapping is important for me).

The configuration works completely. However whenever I press the selected fire button the game exits to the main menu like when pressing the escape button. It appears to me that the trigger button now has two functions: Fire (as selected by myself) and some pause/exit/escape function (I could not find a way to modify this function).

Is this a bug? Is there a workaround?

BTW In case of keyboard configuration I noticed that I can not select 'x' as a fire button at all. I simply don't get any reaction. I can use virtually any key... except 'x'. Maybe this is connected to the game pad issue?

Comments translation

Just a suggestion:

It would be easier for everyone that doesn't speak German to have the comments in English (note: not my first language).
I'd do it if I knew German but...

Black screen on Raspberry Pi 4

Hi there again, @drfiemost

Since you did some final touches to the shader effect splitting code yesterday, I have rebuilt latest sources on the Pi4, and now, if I add --crt, -C or any of the CRT effects (like --colorbleed, --scanlines, etc) I get a black screen.

With no CRT effects, the game runs normally.

Remove obsolete Unrar support

Hi. I noticed that in the Hurrican source code there is code responsible for unpacking RAR files. I'm wondering if this code is needed or if it's code that should be removed, as I haven't seen any RAR files in the project. In addition, I moved the source files of the code responsible for unpacking to another location and the code built without issue and works without problem.

I suspect it is some old, unused code that can be removed from the repository, but you guys have more knowledge about this (I suspect).

Suspicious warning when building for GLES

In file included from /mnt/devel/projects/Hurrican/Hurrican/src/SDLPort/SDL_port.hpp:41,
                 from /mnt/devel/projects/Hurrican/Hurrican/src/GegnerClass.hpp:19,
                 from /mnt/devel/projects/Hurrican/Hurrican/src/triggers/Trigger_Spikelift.hpp:4,
                 from /mnt/devel/projects/Hurrican/Hurrican/src/triggers/Trigger_Spikelift.cpp:8:
/mnt/devel/projects/Hurrican/Hurrican/src/SDLPort/opengl.hpp:20: warning: "glClearDepth" redefined
   20 | #define glClearDepth glClearDepthf
      | 
In file included from /usr/include/epoxy/gl.h:89,
                 from /mnt/devel/projects/Hurrican/Hurrican/src/SDLPort/opengl.hpp:4:
/usr/include/epoxy/gl_generated.h:16870: note: this is the location of the previous definition
16870 | #define glClearDepth epoxy_glClearDepth
      | 

DisplayLoadInfo slows down loading.

I am currently working on a small level editor for Hurrican.
I noticed that it loads a level within ~0.5 seconds so i tried to find the cause of Hurrican taking so long to load.
Hurrican takes ~8 seconds for me to load on startup, but when i placed an early return at the top of the DisplayLoadInfo
function (Gameplay.cpp:902), this time got cut down to ~1 second. I will maybe try to fix this issue when I have time for the Game again.

Boss_MetalHead actions

The actions defined in the header are not used consistently but mixed with GEGNER actions.

#define SK_PAUSE 0 // Short Pause
#define SK_AUSGANG 1 // Starting position at the top left
#define SK_AUSHOLEN 2 // Going out for headbanging
#define SK_BANGEN 3 // Headbanging, in other words, banging head to the right
#define SK_CHASING 4 // Track player
#define SK_TURBINE 5 // Prepare for turbine suction
#define SK_WACKELN 6 // Head wobbles up and down and hits the ceiling
#define SK_SPUCKEN 7 // Head spits fireballs from the turbine

// FIXME
// Akt is initialized to SK_AUSGANG
// and then only assigned values GEGNER::OEFFNEN, GEGNER::SCHLIESSEN and GEGNER::SCHIESSEN
// Something's broken here...
if (Akt == SK_BANGEN) {
if (KieferPos < 60.0f)
KieferPos += Timer.sync(5.0f);
else
KieferPos = 60.0f;
}

Using STL

I've been taking a look at the code and I'm asking, why use the "C list" way instead of using STL containers? First example is in GegnerClass. I think it would make the code easier (and shorter?) to maintain using STL.

Move to SDL3

The SDL3 release is getting near, maybe it's time to consider dropping SDL1 support and move to the new API.

Conflicting licenses

In the root of the repo, the LICENSE file is for the MIT license, however the Hurrican/readme.txt file states:

1.2 Enduser license agreement

This program is freeware and may be used for free by anyone.
All content is copyright by the author (poke53280).
You may not sell this program. It may be freely distributed and offered for download
as long as all original content remains included and unmodified and a reference to the author is given.

For distribution on any data storage medium, a written permission of the author is required.
Please contact [email protected] for further information.

Poke53280 can not be made responsible for any damage that is caused by this installer or the program itself.

These are two conflicting licenses, and what's worse is that the second is not a free software license at all.

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.