Giter Club home page Giter Club logo

super-haxagon's Introduction

Banner Render

Icon Super-Haxagon

Super Haxagon is a cross platform, open source Super Hexagon clone for the Nintendo 3DS, Nintendo Switch, Windows, Linux, and the TI-Nspire (yes, the calculator). It is developed in C++ and uses no additional libraries for the core logic, making it easy (in theory) to port to new platforms. It also has a GUI based level editor called Haxa Editor.

Download

You can download the latest build on the releases page to the right.

Warning: The windows/linux versions requires a graphics adapter with OpenGL 3.2 or higher. Super Haxagon may be unsupported on first generation Intel processors, Remote Desktop sessions, or VMs with no hardware acceleration. See #22 for details.

Features

  • Cross Platform
  • Widescreen support
  • High Refresh Rate support
  • Custom Levels
  • OGG decoder for BGM
  • High Score Saving

Building

Super Haxagon targets the 3DS, Switch, Windows (MinGW + MSVC), and Linux. For desktop platforms, it uses a cross platform library called SFML, so it will probably also compile on other platforms that support it.

  1. Clone this repository with git clone https://github.com/RedTopper/Super-Haxagon.git --recursive

3DS Build

  1. Get MinGW and DevkitPro and install dependencies listed in the Makefile
  2. Use the provided Makefile with the command make TARGET:=3DS
  3. Install either the CIA or 3DSX on your 3DS

Switch Build

  1. Get MinGW and DevkitPro and install dependencies listed in the Makefile
  2. Use the provided Makefile with the command make TARGET:=SWITCH
  3. Copy the .nro to sdmc:/switch/SuperHaxagon/SuperHaxagon.nro and launch it from the hbmenu

TI-Nspire Build

  1. On Linux (I use WSL/Ubuntu), get and build Ndless
  2. Use the provided Makefile.nspire with the command make -f Makefile.nspire
  3. Copy haxagon.tns to the ndless folder
  4. Rename levels.haxagon to levels.haxagon.tns and copy it to the ndless folder

PC Build

... with MSVC on Windows

  1. Note: you may need the Visual C++ Runtime
  2. Download SFML for your MSVC version
  3. Rename the SFML folder to SFML-MSVC and place it in libraries
  4. Use Visual Studio to open a folder with the CMake file
  5. Build the game
  6. Press play

... with MinGW/msys on Windows

  1. Note: you may need the Visual C++ Runtime
  2. Download SFML for your MinGW version
  3. Rename the SFML folder to SFML-MinGW and place it in libraries
  4. Use the provided Makefile with the command make TARGET:=WIN64 OR use the CMake file
  5. Copy the romfs folder and SFML/bin/openal32.dll library next to the built executable (only needed with Makefile)
  6. Launch the executable

... with GCC on Linux

  1. Install SFML through your distro's package manager
  2. Clone this repository
  3. Use the CMake file or Makefile make TARGET:=LINUX64 to build it
  4. Launch the executable

Credits

Thanks everyone for:

Music Attribution

Werq by Kevin MacLeod
Link: https://incompetech.filmmusic.io/song/4616-werq
License: http://creativecommons.org/licenses/by/4.0/

Screen Saver by Kevin MacLeod
Link: https://incompetech.filmmusic.io/song/5715-screen-saver
License: http://creativecommons.org/licenses/by/4.0/

Call Me Katla, Baby by Dunderpatrullen
Captain Cool by Bossfight
Commando Steve by Bossfight
Dr. Finkelfracken's Cure by Bossfight
Jack Russel by Bossfight
The Maze Of Mayonnaise by Bossfight
Link: https://github.com/SuperV1234/SSVOpenHexagonAssets
License: ᵖˡᵉᵃˢᵉ ᵈᵒⁿ'ᵗ ˢᵘᵉ ᵐᵉ

Cross Platform

Below are a few screenshots featuring the various platforms that Super Haxagon compiles on. The 3DS version is packaged with a custom 3D banner to make it look official. Additionally, the gif was recorded on actual Nintendo Switch hardware.

3D Banner

In Game Windows

In Game 3DS

In Game Switch (GIF)

TI-Nspire

Hardware

More Screenshots

Title Screen Windows Title Screen 3DS Death Spiral Windows Death Spiral 3DS

Proof of Concept

Humble Beginnings Humble Beginnings

(Signature Verification)

super-haxagon's People

Contributors

crackedp0t avatar daniel-tp avatar flarn2006 avatar mathieudel avatar redtopper avatar videah avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

super-haxagon's Issues

Can you please make BGM/no BGM builds with different titleIDs?

Currently you have a shared title ID on both of these builds, they really should be different since they're different releases. It's hard to keep things properly indexed in the 3DS Homebrew Title Database when they're not unique.

Also, currently your SMDH Name is set as "Super" and the description is set as "A" so you probably need to add some quotes around those names in the the Makefile.

If you make a new github release, the TitleDB will automatically pick up the corrections within about 5 minutes.

Occasional freeze on old 3DS upon app exit

Sometimes the app will freeze when pressing the home menu button and then clicking the close button. My 3DS gets stuck on the informational popup menu that appears when an app closes (telling you that the app is closing). If this occurs I must force power-off the console by holding the power button for 15 seconds or so.

It can happen when exiting via the Start button too, but instead it will cause the screens to stay black and, again, force a power off.

It's not very common and probably happens around 10% of the time I play it and this is the only app I have seen exhibit this issue. I installed the .cia version via the Universal updater app if that matters.

Windows 7: Game crashes almost immediately

When using Windows 7, the game crashes almost immediately after launch.
The game launches, (blank) window is created, "Open Haxagon" voice is played. Then it crashes. I think I have all the necessary libraries, but I'm not completely sure to be honest.

obrazek

ARM Linux port

Hi, some foss game such as VVVVVV and Cave Story get lot of love for being ported to handheld emulation device (Miyoo Mini). Super Hexagon is among my all time favorite, thus I would love to see your game ported as well. Hopefully this is possible, I can test the binary if needed. Thank you

"New Record!" display

It would be cool if, when you surpassed your old time, the game informed you. I was thinking maybe print the text under the time when playing, and in the game over screen when you beat your record.

It doesn't look hard to implement; I'd be happy to do it

Build Error Linux ARM Chromebook Duet

Hi,
I just tried compiling the project by downloading the repo, creating a build dir within the folder running 'cmake ..' and then 'make'.
I got this error:

/usr/bin/ld: CMakeFiles/SuperHaxagon.dir/source/States/Load.cpp.o: in function `SuperHaxagon::Load::enter()':
Load.cpp:(.text+0x1364): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator*() const'
/usr/bin/ld: Load.cpp:(.text+0x14d8): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator++()'
/usr/bin/ld: CMakeFiles/SuperHaxagon.dir/source/States/Load.cpp.o: in function `std::filesystem::__cxx11::path::path(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, std::filesystem::__cxx11::path::format)':
Load.cpp:(.text._ZNSt10filesystem7__cxx114pathC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_6formatE[_ZNSt10filesystem7__cxx114pathC5EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_6formatE]+0x4c): undefined reference to `std::filesystem::__cxx11::path::_M_split_cmpts()'
/usr/bin/ld: CMakeFiles/SuperHaxagon.dir/source/States/Load.cpp.o: in function `std::filesystem::__cxx11::operator==(std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&)':
Load.cpp:(.text._ZNSt10filesystem7__cxx11eqERKNS0_4pathES3_[_ZNSt10filesystem7__cxx11eqERKNS0_4pathES3_]+0x18): undefined reference to `std::filesystem::__cxx11::path::compare(std::filesystem::__cxx11::path const&) const'
/usr/bin/ld: CMakeFiles/SuperHaxagon.dir/source/States/Load.cpp.o: in function `std::filesystem::__cxx11::path::extension() const':
Load.cpp:(.text._ZNKSt10filesystem7__cxx114path9extensionEv[_ZNKSt10filesystem7__cxx114path9extensionEv]+0x18): undefined reference to `std::filesystem::__cxx11::path::_M_find_extension() const'
/usr/bin/ld: CMakeFiles/SuperHaxagon.dir/source/States/Load.cpp.o: in function `std::filesystem::__cxx11::directory_iterator::directory_iterator(std::filesystem::__cxx11::path const&)':
Load.cpp:(.text._ZNSt10filesystem7__cxx1118directory_iteratorC2ERKNS0_4pathE[_ZNSt10filesystem7__cxx1118directory_iteratorC5ERKNS0_4pathE]+0x20): undefined reference to `std::filesystem::__cxx11::directory_iterator::directory_iterator(std::filesystem::__cxx11::path const&, std::filesystem::directory_options, std::error_code*)'
/usr/bin/ld: CMakeFiles/SuperHaxagon.dir/source/States/Load.cpp.o: in function `std::filesystem::__cxx11::path::path<char [9], std::filesystem::__cxx11::path>(char const (&) [9], std::filesystem::__cxx11::path::format)':
Load.cpp:(.text._ZNSt10filesystem7__cxx114pathC2IA9_cS1_EERKT_NS1_6formatE[_ZNSt10filesystem7__cxx114pathC5IA9_cS1_EERKT_NS1_6formatE]+0x5c): undefined reference to `std::filesystem::__cxx11::path::_M_split_cmpts()'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/SuperHaxagon.dir/build.make:373: SuperHaxagon] Error 1
make[1]: *** [CMakeFiles/Makefile2:73: CMakeFiles/SuperHaxagon.dir/all] Error 2
make: *** [Makefile:130: all] Error 2

Don't know what I did wrong :/

Tasks

done

  • Base engine
  • Base render
  • Main menu
  • Score system
  • BGM
  • Sound Effects
  • Fonts and text rendering
  • Copy CIA to owncloud for fast development
  • Have a flag for BGM so you can build two versions.
  • Load levels from a file
  • Make walls move
  • Add collision to the game
  • Rewrite Polygon code to use the GPU
  • Make sure there are no memory leaks
  • Improve level editor
  • Game is 5% more trippy
  • Levels can have their own unique pattern now
  • Figure out why every 6th ish launch of the game causes it to hang on the Nintendo 3ds logo.
  • Graphical Editor
  • Contemplate what license I should use
  • More dynamic level loading
  • Level Up
  • Save score data
  • Use OGG for sound files
  • Pulse to the beat

Sleep mode bug

Their is a bug in which if you leave the 3ds in sleep mode on the game for 15+ minutes, you will actually never die.
Or ever stop gaining points. and their is no way to stop it without closing the application, and crashing the 3ds.
HNI_0008

Specifications for custom music?

I'm probably blind but I've tried exporting custom wavs in both 32bit and 16bit pcm and none of them play at all. I know it isn't my DSP as when I put the default music it plays fine. What do I need to do in order for them to play in Super Haxagon?

If I'm being an Idiot I'm sorry.

Also I'm trying to replace the music for the default levels if your wondering.

windows problem:

I can't open the game, it say me "the file VCRRUNTIME140_1.dll is missing.
Please help me,
thanks.

Issues on Linux

Using the native Linux release doesn't necessarily work. Upon opening the application file, the game crashes, and I get an alert that the process had crashed:
image

However, I can force the game open using my terminal, though that causes the game audio to fail:
image

I used wine to load the Windows release of the game, and in doing so there were no problems:
image

My guess is that it's an issue of the permission locked sdmc directory in the Linux release, the contents cannot even be seen unless you use ls with root permissions, as the folder locked from read/write access to the user.
image
image

I forcefully deleted the pre-made sdmc directory, remade it, and then tried reloading Super Haxagon. The process did not instantly crash after loading, but it was not responding, it eventually crashes, however. The same thing were to happen if I use the scores.db from the Windows release.

Here is my system information, if it is needed:
image

I really hope I worded this well, it seems to just be a small little mistake that was made, and was unsure if you were aware of this.

compilation problem

image
I installed all ressources and I have that when I try to compile on 3ds...
can you help me?
thanks.

Audio doesn't play on linux

When I run the Linux build (Ubuntu 20.10), the Game plays fine, but sound is nonexistent. I can play the selected mode fine, but when I scroll through the menus the game just crashes. I've pasted part of the terminal output.

Expression:
   alGetSourcei(m_source, AL_SOURCE_STATE, &status)
Error description:
   AL_INVALID_OPERATION
   The specified operation is not allowed in the current state.

An internal OpenAL call failed in SoundStream.cpp(317).
Expression:
   alSourcePlay(m_source)
Error description:
   AL_INVALID_OPERATION
   The specified operation is not allowed in the current state.

An internal OpenAL call failed in SoundStream.cpp(329).
Expression:
   alGetSourcei(m_source, AL_BUFFERS_PROCESSED, &nbProcessed)
Error description:
   AL_INVALID_OPERATION
   The specified operation is not allowed in the current state.

Also, this isn't related but is it normal to run the game as superuser?

This isn't really a real issue but..

WHERE DID AUDIO.WAV (the banner tune) COME FROM I can't place it in the original soundtrack. Please post a link to wherever you got this? it's too damn catchy

compilation problem2

hello, I tryied with msys2 and it worked for 3ds examples but not for super haxagon:
image
here is the error. Can you help me?
thanks.

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.