Giter Site home page Giter Site logo

dodgetodrums's Introduction

Dodge to Drums

Discord server: https://discord.gg/jKUd9Ny Pyinstaller build latest-release

What is this?

This is a game in development. It's planned to become something between "Just Shapes and Beats" and "Cuphead". That means it'll become a bullet hell with focus on music and rhythm and with an open Level selection menu.

Who made this?

You will also be able to see this in the ingame credits once they're implemented, but here's the crew so far:

Programming

  • Riedler
  • Philip Damianik

Sketches & Art:

  • Dark Rosemary

Playtesting:

  • Andreas S. (Windows)
  • Philip Damianik (dual-screen Windows)

Compiling:

  • Riedler (Linux)
  • Andreas S. (Windows)
  • Philip Damianik (build pipeline)

Music:

  • Riedler
  • Dark Rosemary

Levels:

  • Riedler

Compatibility

You don't need any special libraries to run it on Windows or Linux. MacOS is currently unsupported, so please refer to compiling and figure it out with the guides for Linux and/or Windows. This may improve in the future. It should run on all major Linux distributions, but only Ubuntu and Arch Linux are supported. It should also run on everything above including Windows XP, but only Windows 10 is supported. Feel free to file an issue for any incompatibilities.

Screenshots

No screenshots are yet available, because it's so early in development right now, but Dark Rosemary drew an amazing sketch of what it's going to look like: Sketch of DTD

Usage

Download the matching executable for your OS and save it somewhere where you'll easily find it again, e.g. in a new folder on your Desktop. Then download the level archive (base_levels.zip or base_levels.tar.xz) and the data archive (base_data.zip or base_data.tar.xz) and extract them into the executable folder as levels/ and data/. Make sure that your extraction program of choice doesn't pack those folders into new ones (base_levels and base_data). When you first start the program, all settings are assumed to be the defaults. A config file conf.json will be created after changing the settings and saving them. The menu is controllable with the mouse and a few keys. ESC is usually for going back and Enter for confirming stuff. In the main game, the character is controllable with WASD. You can pause with ESC. All of those controls can be changed in the settings, as well as various other stuff.

Adding resources

All resources are in the data/ subfolder. All textures are specified in data/sprites.json, in the format "sprite_name":["file_name",true], where "file_name" is the relative file path without file extension (only png is allowed) and true is a boolean that determines if the upscaling method is set as Nearest-Neighbour or Linear. Animations are also supported, and can be specified in the format "animation_name":[["file1","file2",…],[18,true]], where as many files as necessary can be specified and 18 is the number of frames one picture should last. Animations aren't supported in all objects, but in most. If they're not supported, the animation will stay at frame 0. All sound effects are specified in data/sfx.json, in the format "sfx_name":["file_name",false], where "file_name" is the relative file path without file extension in the opus format, and false is a boolean that determines if the file is streamed to playback or loaded on program startup. false is heavily recommended here, and true can lead to crashes in some circumstances. All levels are in seperate folders in levels/. A tutorial on how to create new levels will be made soon.

Compiling

on windows

You'll need python for this. Make sure to download the newest version. In the cmd: First run pip3 install -r requirements.txt Then run python3 setup.py. If this doesn't produce any output, try pyinstaller \args\, where \args\ is all the options that aren't commented out in setup.py. I haven't figured out why this happens in windows yet, if you know, please file an issue. After the command finished successfully, there should be a build/ and a dist/ directory. You can delete the build/ directory, and move the executable from the dist/ directory wherever you want. If you encounter any error that's not explained in this guide, please file an issue in the repo.

on Linux

In bash (or zsh probably too): First run pip3 install -r requirements.txt --user. Then run python3 setup.py, which, after a short wait, produces a build/ and a dist/ directory. You can delete the build/ directory, and move the executable from the dist/ directory wherever you want. If you encounter any error that's not explained in this guide, please file an issue in the repo.

dodgetodrums's People

Contributors

pdamianik avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

sagehayashi

dodgetodrums's Issues

From Sage (Dark Rosemary)'s Dad

Dear @RiedleroD and others,

Hello. My name is Soichi Hayashi I am the father of Sage Hayashi (Dark Rosemary) who passed away last Tuesday. I've been looking through Sage's computer and I've found some conversations that you were having with Sage. I believe you were the last friend that Sage has communicated on that regretful evening.

I just wanted to say thank you from the bottom of my heart, for letting Sage work with your project and your friendship. Sage showed me the game you are working on scratch, and let me play it a few days before Sage died. I've commented on how great this game was, and he was able to play it so well even though I could only survive for a very short time. You have not idea how much this game meant to Sage, how proud they were to be part of it, and how much they appreciated your friendship.

If you are willing, please contact me at [email protected] (me) or my wife [email protected] (sage's mom) so that we could send you more through message. Please let your parents/guardians know about this message, and if they are willing to allow us to thank you and your parents, and everyone who involved our personal tragedy, it means so much to our family and helps us with our grieving process.

If I don't hear from you, I totally understand, and please know that we will always remember you as Sage's precious last friends they had on earth, and if you could remember Sage, there is nothing more that I could wish for.

Thank you,

Sage's Dad
Soichi Hayashi

https://www.dignitymemorial.com/obituaries/bloomington-in/sage-hayashi-9318448

write Readme.md

what has to be in there:

  • what is it (from a perspective where it's finished)
  • compatibility stuff (what OSs are supported, what libraries are needed: planned is Linux & Windows & no special libraries)
  • who made it (who made what & thanks to testers)
  • screenshots (when finished)
  • how to install (portable executable for now)
  • how to add custom textures & audio (if implemented)
  • how to compile (nuitka is planned, but cython may be an alternative if nuitka doesn't work)
    should be progressively edited & finished before pre-testing release.

add life system

collision detection with projectiles is separate from this issue.

  • show life with a heart somewhere at the bottom of the screen (will get cleaned up later)
  • exit level when all lifes are used up (you have 4 lifes, when you hit 0 lifes, you're dead without having to get hit another time)
  • mute and fade in music when 'hit' (again, no collision detection, just do it on right click rn)

add volume settings

should be fairly easy implementing a slider widget and updating the volume on slider change.
I'll need volume sliders for:

  • global (master) volume
  • music
  • sound effects (sfx)

add texture/sprite support

This issue is ONLY for support of those things, the sprites needed for that will not be provided in the repo except for compressed graphics packs when releasing a new version. All of those features should be optional & a primitive should show up in place of the graphics if it isn't found

- [ ] the ground should support a repeating pattern Ground will be removed before 0.2

the player character should support

  • walking floating animation

- [ ] falling animation

  • idle animation
  • crouched walking (or crawling) floating animation

- [ ] crouched falling animation

  • crouched idle animation

  • with mirroring when facing the opposite direction

  • the buttons should support a pressed and unpressed sprite

  • the start menu should support a start menu banner (maybe even animated)

improve setup.py

  • add profiles (dev for --nowindowed option, nothing or dist for --windowed, etc.)
  • delete build/ and dist/ folders and spec file after moving the executable into the current folder
  • maybe a --verbose option?
  • disable upx with --noupx (enabled by default when found)
  • automatically search & add icon
  • maybe some other options too

add ingame credits

Something like this:

code: Riedler
graphics: Dark Rosemary
music: Riedler & Dark Rosemary (at least that's what's planned)
testing: ? (only include after testing phase)

should be implemented shortly before testing phase

add sfx

  • sfx for losing a life (depends on #17)
  • sfx for clicking a button

optimize the label/button render function

it currently sets the label position and anchors every render cycle even though it is only required when the position is changed (the anchor only has to be set once afaik). Optimal would also be a label.update function to reduce the number of calls on the label update function.

better music/actions syncronisation

every cycle,

  • read the current time from the music player
  • send the timestamp to any physical object that needs cycling
  • everything should move and react according to time, not amount of cycles.
    currently, low framerates slow down the game & desync projectiles from the music after they're spawned. My pentium machine likes to stay in sync, even with low framerates.

add no levels notice

when no levels are found, add a notice in the level selector instead of just exiting on startup & printing an error to the console.
and replace the ValueErrors in the Level loading function with just warnings, followed by not loading the specified level.

add a LICENSE

either a GNU general license or CC BY-SA would be fine, though I have to discuss this with Dark Rosemary first.

definitely add asap bc who knows what legally happens with the pre-licensed code.

add moar bullet types

  • Standard Projectile
  • Projectile with rotating hitbox
  • aiming missile
  • Homing Missile
  • rotating Projectile
  • bomb

upscaling method is unstable

it's still very much weighted random what upscaling method is used per sprite. Right now, the middle walking animation is still linear, and I have no idea why. The buttons might also be nearest-neighbour but I'm not sure as the testing sprite is ugly either way.

opening menu bgm in streaming mode causes decoding issues

this is a bug in pyglet, but I'll add it anyway so I can fix it if a workaround is found

code sample to reproduce:

import pyglet
from pyglet.media.codecs.ffmpeg import FFmpegDecoder
dec=FFmpegDecoder()
mus=pyglet.media.load("./mus.wav",streaming=True,decoder=dec)
pl=mus.play()
pl.loop=True
pyglet.app.run()

This only happens when FFmpegDecoder is selected in streaming mode and the player loops. Incredibly specific, but all of those are necessary, since:

  • only ffmpeg supports opus, Gstreamer is not compatible.
  • it's the menu bgm, ofc it should loop.
  • not streaming music causes long loading startup
    Since I don't have a choice here, I disabled streaming in the default datapack anyway.

integrate Dark Rosemarys new amazing character animations

that includes:

  • going sideways
  • going down
  • going up
    I don't have a system for differentiating between going up,down,left,right or any diagonal direction. Should be fairly easy to implement though. It should just be another change of (animated) sprites depending on the horizontal and vertical speed.

fps/ups label doesn't feel quite right

it says 20fps on my machine, but that aint 20fps my friend. Also it doesn't make sense that when I increased the fps limit from 60 to 120 that I suddenly had 30fps. like wtf.
anyway, investigation time just before release. yay.

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.