Giter Club home page Giter Club logo

moloch's Introduction

Moloch

logo

In any system optimizing for X, the opportunity arises to throw any value under the bus for optimized X.

Moloch is the roguelike of all the horrible futures. Instead of health points, the player's human (or otherwise applicable) conditions are (somewhat) simulated to make for a fleshly experience. Fell from too high? I sure hope you don't need those knees!

You are a child who was sacrificed by your parents to the god at the top of The Ancient Tower. The tradeoff is simple: Throw away what you love most, and I can give you power. You refuse to let yourself be murdered by the people and the creatures inhabiting the tower, and in a desperate attempt to survive, you begin your ascent.

If you like this project you can join it's Discord Server

Please scroll to the bottom if you're a Mac user and you're getting the "file is broken you should throw it to the bin" error

Controls

  • Movement: WASD
  • Jump: Space
  • Open chests, pick up items: S
  • Hold onto poles: W, S
  • Use wand: Left click
  • Organize inventory: Left click; right click to throw away
  • Change selected wand: Numbers from 1 to 6; Scroll wheel
  • Display extra item information: Shift
  • Instantly die: G
  • Cover bleeding wounds: R
  • Pause: Escape

Controller

  • Movement: Left Stick
  • Jump: L1
  • Open chests, pick up items: Left Stick Down
  • Hold onto poles: Xbox A, Sony X, DS B
  • Use wand: R1
  • Move In Inventory: D-PAD
  • Select Wand/Spell: L2
  • Drop Wand/Spell: R2
  • Instantly die: Select and Pause at the same time
  • Cover bleeding wounds: Xbox B, Sony Circle, DS A
  • Pause: Pause

Features

A fleshly health system

Instead of health points, Moloch's health system is based on different kinds of conditions, some of which might not even kill you, but can make the game impossible to play. The clearest example is fall damage: In Moloch, when you fall from dangerous heights, you can lose your legs, rendering you unable to walk or jump for the rest of the run, and depending on how the run was going, this might mean you have to restart.

This is done for every entity, not only the player.

Fuck Around And Find Out

In Moloch, the only permanent upgrade you have between runs is knowledge about the consequences of your actions. Also the consequences of actions that are unrelated to you. One way to learn is by having other people help you understand things. The other is messing with things and seeing what your brand new kind of death looks like.

Custom wands

Moloch allows you to collect spells, letting you move them from wands and create your ultimate weapon of mass destruction. Careful, though! Some spells generate heat, which might give you a heat stroke. There are also different modifiers that let you make your wands more powerful and more dangerous, just place one before the spells it'll affect and watch chaos unfold.

Destructible levels

Mostly everything can be destroyed if you have the right spells for it. Mostly. This means that, with the right equipment, nothing stops you from skipping rooms entirely or digging out of the world and miserably ending your run by falling to the void.

Code Documentation

Under the hood, Moloch does weird stuff with classes to keep everything tidy and separate (this kind of thing is why spells and wands can be used by entities other than the player). If you want to know how this weird stuff works, here's a hopefully-not-so-outdated documentation: https://hackmd.io/@katie-and/HJlqEQMVK/https%3A%2F%2Fhackmd.io%2F%40katie-and%2FBJ4uZQMVF

License

The MIT license only applies to the source code. The visual assets are licensed under CC-BY-NC-SA 4.0. Licenses for the sound effects are stated in AUDIO-LICENSES.md.

Help, I'm having this weird issue on Mac

So, since apple sucks, it'll flag apps downloaded form the internet with an extended attribute so it can ask you if you trust the file you're about to run. And then fail to ask you if you want to run it. Simply run xattr -cr [path to moloch] in the command line and that should do the trick.

moloch's People

Contributors

lilith-in-starlight avatar

Stargazers

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

Watchers

 avatar  avatar

Forkers

houkime

moloch's Issues

Move the world generation to a separate thread

Currently, the world generation uses a code that tries to adapt to the computer's resources to generate the world, with other optimizations. Using threading would be ideal, but I seem unable to get it to work.

Sound after death

Describe the bug
After dying, clicking on the death screen appears to make the sound of firing the wand. It was not captured in this recording, but I was also able to hear enemies firing their wands.

To Reproduce

  1. Die with a wand
  2. Left-click on the death screen

Expected behavior
The game should not continue running behind the death screen

Screen capture
https://github.com/Lilith-In-Starlight/Moloch-New/assets/989883/1a92e887-1ec9-4269-925c-0489513c63ab

Additional context

  • Tested on 0.16.0-dev2
  • Screen capture includes microphone audio so the mouse click can be heard

Rage can pass through objects

Describe the bug
Rage can sometimes pass through objects without harming them

Additional context
This is caused by the fact that this spell simply uses a bunch of RayCasts to detect collissions. It is possible for something to slip through those RayCasts.

Reference-count wands

Is your feature request related to a problem? Please describe.
Before a recent commit, it was possible for Wands to be instanced but never added to the node tree, but there is still the issue of wands that are nowhere in the world still existing in memory. This shouldn't be too much of a problem, but it still would be better to get rid of these wands.

Describe the solution you'd like
Turn wands into a Reference again. They only use the _ready() function and get_tree(), it seems like it should be possible to somehow implement these in non-nodes in some way.

Describe alternatives you've considered
It would be possible to create a system that allows us to manually reference-count wands, but it would be possible to miscount due to this.

Cursor outside window bounds

Describe the bug
Moving the mouse cursor outside the window bounds can allow the player to see beyond what was intended

To Reproduce

  1. Play the game in a window that is significantly smaller than the available desktop space
  2. Move the mouse cursor to the far part of the desktop
  3. Observe that the camera moves significantly farther than it does when only moving to the edge of the window

Expected behavior
I assume you would want to cap the distance that can be observed by clamping the mouse's position to the window bounds before moving the camera

Screen capture
https://github.com/Lilith-In-Starlight/Moloch-New/assets/989883/88b17b3c-21e0-483a-8d84-e863a8244c8f

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.