Giter VIP home page Giter VIP logo

schmovin's Introduction

Schmovin' Logo, \

Schmovin' (FNF Modcharting Submodule)

Note: This project is no longer being maintained.

I kind of lost the motivation to work on this project any further. I also forgot how to mod FNF.

Initially, I was going to release this once I made a tutorial on how to use Schmovin' or how to design modcharts (lest people make unreadable modcharts), but I didn't really find the time to do that.

Instead, I just waited until people stopped asking me about it. I'm silently releasing this now to see if anyone notices.

There's also... NO DOCUMENTATION ...so have fun!

In fact, a lot of this codebase was written while I was a junior in high school and probably reflects opinions that have changed since then or implements things differently than how I would implement things now, so keep that in mind when trying to browse through this repo's commit history...

Original, Not Up-to-Date README

"Those arrows are schmovin'!"

Based heavily on NotITG

Schmovin' is basically an attempt at recreating (and porting) some features of NotITG into Friday Night Funkin' while having its own original code structure.

If you're already familiar with making NotITG files, it's essentially an ease reader and playfield renderer for FNF that comes with a few debug features!

This repository is also meant to be a Git submodule for Groovin' Mod Framework, but it can also be used in other engines! Just make sure to give appropriate credit.

Credits

4mbr0s3 2 - Did the project

XeroOl - Created Mirin Template, which this project's interface is loosely based on

TaroNuke - Inspiration; really cool rhythm game developer who pioneered NotITG

Roxor Games, Inc. - In the Groove 2 creators who introduced more arrow modifiers and mines to Dance Dance Revolution

Shoutouts

Nebula The Zorua - Recreated Schmovin' in their own FNF engine before the source code was even released (very impressive)

gedehari/sqirra-rng - Very epic

Aikoyori - Some bugtesting

haya3218 - Beta Psych Engine implementation of Schmovin'

Shadowfi1385 - Very epic

KadeDeveloper - Very epic

The Gist

There's a class called SchmovinClient. Subclasses of it should contain all the actual modchart implementation. To load in a modchart, pass an instance of a subclass of SchmovinClient into SchmovinInstance with setClient(cli:SchmovinClient).

"Porting" to Other Engines

Since Groovin' Mod Framework decouples mod code into separate submodules (like this whole repository), you can easily use it in other engines by instantiating the base class as a singleton (in this case, Schmovin) and calling its methods in the base game's code.

Plugging in the Modchart (In Groovin')

In SchmovinInstance, you'll see a method that sends a "cross mod call" to all other loaded Groovin' mods. The mod that actually implements the modchart calls the setClient(cli:SchmovinClient) method in the SchmovinInstance parameter.

In your main mod class, which should be loaded after Schmovin', use the following code as a base to instantiate the SchmovinClient.

override function receiveCrossModCall(command:String, sender:Mod, args:Array<Dynamic>)
{
    // Here, you'd actually check the song and pass in the respective modchart
    // If the number of songs with modcharts gets too unwieldy and this code gets too long,
    // use a switch case or a map or some other collection thing 
    if (PlayState.SONG.song == 'false-paradise' && shouldRun())
    {
        switch (command)
        {
            case 'SchmovinSetClient':
                var instance:SchmovinInstance = cast args[0];
                var cli = new FalseParadiseSchmovinClient(instance, args[1], args[2]);
                instance.setClient(cli);
                
                // Optional if you want to use debug tools
                // sendCrossModCall('SchmovinPrepareDebug', [cli]);
        }
    }
}

Plugging in the Modchart (In a Standalone / Other Engine)

If you're not using Groovin' and are using the standalone version of Schmovin' in another engine, you can just pass the client in after SchmovinInstance is instantiated... somewhere. Each engine will probably have their own way of doing that.

Making the Modchart

In your SchmovinClient subclass, override initialize() and define every timeline event there. Add events to the SchmovinTimeline by using the ease, set, function, and tween methods defined in the superclass. For the ease functions, use FlxEase.

You can also make some cooler custom-defined stuff by overriding the update() class. For the list of note mods at your disposal, look in the Registry class.

schmovin's People

Contributors

4mbr0s3-2 avatar

Stargazers

 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  avatar  avatar

Forkers

sanicbtw stilic

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.