Giter VIP home page Giter VIP logo

goondash's Introduction

GoonDash

  • A C program with Lua scripting, that utilizes Tiled and Aseprite for the game "engine".
  • Build All Platforms Status Picture
  • Play the game here, or likely watch its "progress" Supergoon.com

Development

  • Mostly developed on macos apple silicon
  • Builds on Mac, Linux, Windows, Emscripten throughout development with github actions
  • Releases on tags with github actions

Goals

  • Better at C
  • Better at cross-platform building with cmake (Macos, Linux, Windows)
  • Learn github actions to build and publish outside developer environment
  • Create a simple "Geometry Dash" clone.

Stretch Goals

  • Game build on Mobile (IOS priority)

Building

  • If you have the libraries installed, just use the make rebuild command. Libraries required are in the libraries section
  • Otherwise, use the full builds in the makefile for your platform as that clones all the dependencies and builds them locally, this just takes a bit longer.

Current State

  • Loads a tilemap from tiled
  • Sound implemented, loops over and over.
  • Basic 2d AABB Physics implemented
  • TTF loads on all platforms
  • Builds on all platforms in runners.

Requirements

  • Cmake will install all of the required libraries with all of the rebuild commands in make except "rebuild".

Components

  • SDL2: Low Level handling of windowing, events, input
  • OpenAL: Cross-Platform sound abstraction
  • Emscripten: Build for web
  • Lua: Embedded Scripting
  • Make: Streamlining building with one command
  • CMake: The actual cross-platform build system.
  • cppclean: Tests
  • Terraform: s3 website for emscripten

Documentation

  • Hosted on docs.supergoon.com, generated by doxygen. Not created yet.

Licenses

Full Game

  • MIT

Libraries

  • SDL - ZLIB - Low level Windowing / Eventing
  • SDL_Image - ZLIB - Loads Different picture types into SDL_Textures
  • SDL_Ttf - ZLIB - Loads True type fonts multi-platform with Freetype and Harfbuzz
  • doxygen - GPL | Automatic documentation
  • Lua - MIT - Scripting
  • Supergoon Sound - ZLIB | OpenAL implementation - Mojoal wrapper
  • Supergoon Physics - MIT | Simple AABB physics simulation

ZeroBrane Debugging notes

  • Had to build luasocket from source, as the one from luarocks didn't build right for arm
  • Had to get the build command from the mac.cmd file, and use that
  • Had to remove -bundle and use these changes: -LDFLAGS_macosx= -bundle -undefined dynamic_lookup -o -LDFLAGS_macosx= -undefined dynamic_lookup -dynamiclib -o
  • Had to rename the files and put in a shared lib local location, as for some reason it references core in different places (socket-3.0.0)
  • Now when you run (with make run) it will trigger breakpoints set in zerobrane after you start the server.

Valgrind

valgrind --track-origins=yes --leak-check=yes --leak-resolution=low --show-leak-kinds=definite ./SupergoonDash 2>&1 | tee memcheck.txt

goondash's People

Contributors

kjblanchard avatar

Watchers

 avatar

goondash's Issues

Convert lua files to binary and embed

For Obfuscation and increased runtime speed, we should create a python script that uses luac to convert the lua files to binary, and then use xxc to convert those to a C header file, and then load those instead.

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.