#Untitled OneShot Fan Project

1 messages · Page 1 of 1 (latest)

devout badge
#

The project is another recreation of OneShot in HaxeFlixel, I have no intention to open-source this since I have plans to turn it into a real project and I don't wanna risk being sent an email on accident.

I started this project a bit of a week ago, copying some reusable backend code from Undertale Purple which shares a similar genre to this one as well.

The batch of images/videos I'm showing are progress I made in the last week, so I want to sync up progress where it's at.

#

The instructions page was done with a sequence system that I made; this system is plenty reusable and flexible for many other cases like a dialogue, message, or even pictures like the one I show below.

    // Helper to cast the inherited `public var data:Dynamic` from Sequence.hx
    private var seqData(get, never):PictureSequenceData;

    private inline function get_seqData():PictureSequenceData
        return data;

    private var currentIndex:Int = 0;

    // Two sprites are utilized to seamlessly cross-fade between images
    private var backSprite:NikoSprite;
    private var frontSprite:NikoSprite;

    private var isTransitioning:Bool = false;
    private var slideTimer:Float = 0.0;
    private var isAutoAdvance:Bool = false;

    public var onSlideTransition(default, null):FlxTypedSignal<Int->Void>;
    public var onSlideReady(default, null):FlxTypedSignal<Int->Void>;
    public var onWaitInput(default, null):FlxTypedSignal<Int->Void>;

    public function new(sequenceData:PictureSequenceData)
    {
        super("picture_viewer", "Picture Sequence");

        this.data = sequenceData;

        this.blocksInput = true;

        onSlideTransition = new FlxTypedSignal<Int->Void>();
        onSlideReady = new FlxTypedSignal<Int->Void>();
        onWaitInput = new FlxTypedSignal<Int->Void>();
    }

    override public function loadScript(path:String):Void
    {
        super.loadScript(path);
        if (script != null)
        {
            script.bindSignal(onSlideTransition, "onSlideTransition");
            script.bindSignal(onSlideReady, "onSlideReady");
            script.bindSignal(onWaitInput, "onWaitInput");
        }
    }

...
#

Data-oriented design is very fun to play with as well

#

You can also put a sequence on top of a sequence, similar to states but I've abstracted it this way as a form of preference

marsh belfry
#

nice

#

@nimble wadi

devout badge
#

I did implement the player sprite, with some inspiration from ECS architecture, but I chose to take the "EC" only, meaning components also act as their own system

#

ECS is kind of tricky to implement but this way is more simpler and doesn't necessarily generate much excitement when the game is this lightweight

devout badge
#

For tilemaps, I used a ton of Aseprite to inspire myself to learn how they de-duplicate tiles

nimble wadi
#

Do you have a dialogue system?

devout badge
#

This is not the actual tilemap, this is actually the tileset

devout badge
#

Haven't even gone to implement a parser for it

#

I've always thought it was something that would be "Tier 2-ish" level of priority to tackle

#

Coming back to the topic, as of today, I have both tilesets, tilemaps, decals, and entities working all in one place, so we have a minimally playable game

nimble wadi
devout badge
nimble wadi
devout badge
#

What's the format looking like?

devout badge
#

Oh nice

#

I'll see what I can plug-n-play and make my own changes

nimble wadi
# nimble wadi

I've been doing this for a fnf mod I want to make based on OneShot. This is part of my Pancakes Engine (it's just Psych Engine xd)

devout badge
#

there is a funny secret about this oneshot engine i've showcased

#

there's some traces of psych in it, but it's stretching the definition here

nimble wadi
devout badge
#

some of the code originates from undertale purple, which i then used for a psych fork, and then went through evolution

#

and ended up here

devout badge
#

you know i think i might just be "that guy"

#

recreating things

nimble wadi
#

Honestly, good luck with that.
Especially with the idea of the overworld and all that... It caught my attention a little for my mod, but I don't mind because I can't get people for that project, haha.

But this will definitely be a project that I'll be interested in

devout badge
#

i think the next step is some editor

#

it's like a self-punish for me, i create a new proprietary format for myself but i am also responsible for making the tools to make said format

#

i may have had a missed opportunity to name the head directory "twm" instead of "niko"

nimble wadi
#

As for me, I'd like to share with you the implementation I have for obtaining the username... After all, I think it's the first special mechanic we see in the game, heh

devout badge
#

since i'm basing this version slightly off of WME

devout badge
#

I've had to rework the options screen a little to be more modular in particular

marsh belfry
#

peak

nimble wadi
#

Interesting

devout badge
#

might take a while

#

i'm really fighting flixel itself to get a ui cxamera rendering

#

over writing the actual logic

devout badge
#

wow... memory leaks, and i'm not even doing anything

marsh belfry
#

me when texts

devout badge
#

some poor code was causing some comparison checks regarding the text to fail and was setting the text every frame

#

had to redo the UI since flexbox is a bit tricky

marsh belfry
#

damn

devout badge
#

Goodness!

devout badge
#

features undo/redo, more tools, and more modes

#

i still have issues with UI layouts which is absolute pain

nimble wadi
#

Hmm...
I have a question: how do you go about using the original game’s assets in HaxeFlixel?
I wanted to recreate, even if it’s just an image, the exterior of the house where Niko appears , but I have no idea how to do it; I’m not actually looking for something functional that you can walk around in, just having a background would be enough for me.
But the truth is, I don’t understand RPG Maker XP’s assets xd..

#

I don't know how to use it in Tiled either, though the thought of having to recreate that is definitely a pain for me lol

devout badge
#

for other things, i believe the idea is to "eyeball" it and guesstimate how things work to adapt for HaxeFlixel

#

the assets are free to dissect and take anyway

nimble wadi
#

Hmm...
I think I get it.
Because, well, the room where Niko appears... I was able to use it right away because the final version (after setting the sun, for example) is already there as a complete image, and that was enough for me, but I have no idea about the rest xD

devout badge
#

though in that case, you'd still have to set the collisions and nodes (triggers or interaction boxes)

devout badge
#

able to handle mixed fields

devout badge
#

Amazing!

#

There's more!

devout badge
#

Entities

devout badge
#

some visualizer to tell direction of the player

devout badge
#

Hard working

#

All the modes have been implemented afaik

#

tiles, decals, collisions, nodes, and entities

#

layer ui still works despite changing tons of things, so that's fun

#

i still need to fix some ui issues still

devout badge
#

sometimes i feel like i might be going too far

devout badge
#

The editor is almost feature-complete, you can save/load rooms, edit the room data, and manage them well.

Job's not done though, I still have to implement some UX for the layers tab, since not being able to toggle visibility for layers can be a pain - ideally it should be inspired by how art programs do layers

#

Gotta think about the background too

#

I've started the editor way back in the beginning of this month, so I should feel proud of myself

#

I will say I think this was very fast, because this is 12K lines of code

devout badge
#

Almost done!

#

rushed so far, since i neglected the layer visibility

devout badge
#

AHAHAHA nope

#

even though I am pretty close, turns out I need to make changeable tileset sizes

#

16x16, 8x8, 20x20 (UTDR)

devout badge
#

UI is scuffed but

#

sub-grid tilesets implemented, though it can get weird that the real tile sheets have to be placed in a 2x2 grid, must be my system though

devout badge
#

Implemented those delete buttons late

devout badge
#

testing out my new acquisition

#

it's all coming together!

#

Amazing!

devout badge
#

Might need some work

devout badge
#

New drip!

#

There is this issue obviously, but not sure if I like my priorities doing that

devout badge
#

You can rotate

devout badge
#

Absolute cinema

devout badge
#

Success

devout badge
#

Not that easy I'm afraid

#

I guess I haven't been writing the overworld state to be 1:1 with the editor as much

devout badge
#

oh I see the issue now

#

i wasn't saving their full path

devout badge
#

wrong color but

#

got simple color blocks working

#

collisions are done

#

well, only the level part of it, i haven't gotten around to making entities collide with them

devout badge
#

I can finally put my attention on systems I haven't been touched or started yet, like dialogue, transitions, or menus.

devout badge
devout badge
#

dialogue!

nimble wadi
devout badge
#

i won't be publishing it to the marketplace or the dialogue parser just yet, there are still some changes i want to make

#

for example, i would like it if the the formatting is very strict so it requires you to make sure you're not leaving anything behind

#

like speed= being the wrong type

#

if you're still interested, you can use vsce package so that it generates a .vsix file and have VS Code install it from there

devout badge
#

had a bit of an interesting day so i slowed down, but i got something here

devout badge
devout badge
#

implemented own bitmap text so that per-character effects are possible

#

can't seem to get the right size though...

#

well this one's bad

#

alright well, BMFont might be a no-go

#

i think a better option might be to create an in-house bitmap font converter

#

rendering that font in openfl/flixel, and then putting those results into a bitmap font

#

well, i found the right config with BMFont

devout badge
#

per-character effects work greatly

#

we are getting funny memory cliffs

#

i'll have to investigate that later, not sure if i'm in the mood for addressing performance issues today

devout badge
tacit trench
devout badge
nimble wadi
nimble wadi
devout badge
devout badge
#

Trying that TWM message design

#

had to modularize the dialogue screen

devout badge
devout badge
#

alternate left side portrait, if you're an undertale person

nimble wadi
devout badge
#

Nice scripting

devout badge
#

my architecture's definitely degrading in quality of sorts, i'm getting more desperate and desperate by day

#

i'm going to focus more on quick implementation

#

this project exploded to around 40K lines really quickly

devout badge
#

IM HAVING FUN MAKING DSLS DUDE

devout badge
devout badge