larsiusprime / larsBounties

Open bounties for various tasks Lars needs to delegate to others
9 stars 2 forks source link

$250 -- Finish FlxActions feature, get it to pass code review & merged into HaxeFlixel #1

Closed larsiusprime closed 6 years ago

larsiusprime commented 6 years ago

Introductory Information:

HaxeFlixel is a popular Haxe game framework, maybe even the most popular? I dunno.

HaxeFlixel has robust Gamepad Support (documentation here), a feature I helped work on and organize.

The Project

In adding Steam Controller support to my game Defender's Quest, I created an abstraction layer that made it easy to let the developer define all their gameplay logic in terms of "actions", and then easily attach and detach specific "inputs" to these. An "action" is something like "jump" or "punch", or "move", whereas an "input" is something like, "On controller 3, which is an XBox 360 controller, the A button is currently pressed, but also it was not pressed last frame, which means it has JUST been pressed." Keeping these things separate makes code cleaner, simpler, and more flexible. This sort of abstraction is also absolutely required if you want to be able to implement Steam Input, via something like SteamWrap.

Prerequisites

You need to be familiar with Haxe and haxelib and have the ability to compile the latest released version of HaxeFlixel and the flixel-demos.

You must be familiar with writing and running unit tests and must be able to compile & run the HaxeFlixel unit tests on all supported targets.

You don't necessarily need access to all 3 C++ targets (Mac/Win/Linux) so long as you can get all the tests passing on at least one of them. You can rely on our travis integration to run the tests on Linux. But it would be a plus to be able to do manual tests on all three.

What's been done so far

The official PR for this branch is here.

The new API is feature complete.

It is fairly well tested in an actual live game on multiple platforms.

It has a demo PR for flixel-demos: https://github.com/HaxeFlixel/flixel-demos/pull/226

It has nearly (but not quite) complete test coverage.

It has rusted and is no longer up to date w/ the latest Flixel release.

It has not passed final review and has not been merged.

How Much can Lars help?

Since I designed this API, I am available for answering questions about what it's supposed to do, how it works, etc. This has been through several rounds of code review already and solved some unintuitive erros, so if something seems strange at first sight, rest assured there's almost certainly a good reason for it being there even if it's not immediately obvious. It's also currently being used in a shipping game (Defender's Quest) on Mac, Windows, Linux, and two console targets so far.

What remains to be done

Example games:

Budget/Timeline:

Time is hard to say, there doesn't seem like much actual work, but passing code review can be unpredictable and I don't want Gama11 to feel pressured to just let anything through -- if you make a good faith effort that doesn't result in a merge, rest assured you'll still be paid.

It feels subjectively like something someone smart could get done in a well-coordinated weekend or two.

Budget is $250 USD.

transmutrix commented 6 years ago

I am interested in doing this job. I've never done a bounty on GitHub so I'm not sure how this conversation goes...

larsiusprime commented 6 years ago

Cool! So if you think you have the skills and are ready and willing to attempt a good-faith effort on this, the way it goes is I'll mark this as "claimed" for now, and I'll give you some reasonable time frame to give it your best shot? Is a week long enough or do you need more? And then if you either got the issue finished (or just made a good solid effort) then I'll award the bounty after code review. If it winds up taking a lot longer than expected I can pay out in installments after the first chunk of work, or whatever.

If after a while you feel you haven't had the time to do it, or change your mind, just let me know and I can unclaim the bounty and give someone else a shot.

Sound good?

larsiusprime commented 6 years ago

As for technical stuff, probably best if you hop on a Slack or Discord channel where we're both subscribed and I can give you the details / answer questions over PM. Either that or email, whichever you prefer. You're allowed to ask as many questions as you want.

transmutrix commented 6 years ago

Ok, sounds good.

I would like to bump that time frame to at least 2 weeks as my schedule is currently a bit unreliable. I'll hit you up on Discord

larsiusprime commented 6 years ago

No problem! And feel free to ask a bunch of questions. I know there's a lot of surface area to this feature and it's not entirely intuitive at first (I'll have to derust myself and remember how it works!)

Pign commented 6 years ago

Hi @pennie-quinn are you still looking at this bounty? If you're not I may invest some time to have a closer look at it and see if I think I have the skills. If you still are I won't take it away from you. ;)

larsiusprime commented 6 years ago

Hi @Pign! I'm giving @pennie-quinn a few more days to try to solve this. If pennie still feels stumped/blocked at that point, I'll consider opening it up for someone like yourself :)

larsiusprime commented 6 years ago

Okay, @Pign, it's all yours. Thanks for the efforts @pennie-quinn , if you're interested in another one of these feel free to try again :)

Aurel300 commented 6 years ago

Hi! If the bounty is up for the taking still (since it is tagged Unclaimed), I'd be happy to help. If not, I just watch the repo for future bounties :)

larsiusprime commented 6 years ago

The bounty is still up for grabs as I haven't heard back from @Pign yet.

From now on, the standard I'll adopt for "claiming it" is someone posting some minor proof that they've started making progress, which can be as simple as posting some basic questions that indicate knowledge of the problem.

I'm also not against collaboration, if several people want to split the bounty. But if you're ready to start now @Aurel300 , once you make some minor headway I'll mark it as claimed for you.

Aurel300 commented 6 years ago

Cool! I'll get the project set up and see if there are any major obstacles in compiling. I don't know if a Vagrant box running a GUI-less Ubuntu will be enough to reliably test Linux builds? Other than that I'm on OS X and have access to Windows if needed for the C++ target. I'll let you know in a bit :)

larsiusprime commented 6 years ago

Okay @Aurel300 has been chatting with me over Discord to my satisfaction that work is underway. This bounty is claimed as of now.

kobi2187 commented 6 years ago

Can this issue be closed, or is the bounty still uncommitted?

larsiusprime commented 6 years ago

Thanks for the reminder.

Technically the feature is like 1% away from finished still, but I should go ahead and pay Aurel the bounty anyway, and then finish up the rest myself, and close this issue. Been meaning to do it for weeks and it keeps slipping my mind.

kobi2187 commented 6 years ago

Great, to be honest, I was wondering if it was still up to grabs. Happy that openfl is progressing so well :-)

larsiusprime commented 6 years ago

It's done!

https://github.com/HaxeFlixel/flixel/pull/1805