Platformer Engine - Bounty $300

Hi!

I really liked the idea of a bounty for making an open source project for Defold and I would love to set up a new one! My channel on YT managed to earn some money already:
image
and even though I don’t know yet how to withdraw money from YT :sweat_smile: I want to spent such a sum on a bounty for re-making a parametrized platformer from the Platformer Toolkit in Defold:

The bounty is available for the first person who publishes a project that manages to recreate a platformer example with all the features from the Platformer Toolkit by GMTK linked above and will meet the requirements below and will make it a public (github/gitlab/bb/whatever) repo as a Defold project and posts it here.

Anyone is eligible to take this bounty as long as I am able to pay you with PayPal. The bounty is set at $200. Additional tip may be applied :wink:

Requirements:

  • License of project must be MIT or CC0 when possible

  • Project should be a working Platformer example with all parameters as exposed in PTK available to be changed by user easily:

    • acceleration
    • deceleration
    • max speed
    • turn speed
    • instant movement flag
    • jump height
    • down gravity (I call it fall gravity, different gravity is applied when falling)
    • jump duration (so a parameter actually affecting gravity power)
    • air acceleration (horizontal)
    • air control (horizontal)
    • air brake
    • variable height flag
    • jump cutoff
    • double jumps (prefferably triple jumps, etc, so n-jumps should be possible)
    • (bonus would be for wall jumps and wall slides (are implemented in Platypus for example))
    • (double bonus if the controller would somehow support/offer possibility to have knockbacks/kickbacks with different vectors)
    • all assists (coyote time, jump buffer, terminal velocity, rounded corners)
  • I do NOT require to re-make anything from “Juice” tab, as I think it bounds different aspects of gamedev with platformer controller.

  • I do require though for the controller to have a possibility to be responsive to critical events allowing players to add those juice features, like sfx/pfx on jump/land, squish/squash, etc. Platypus for example sends messages to script when such events happens.

  • I do NOT require to make any animated intro like in PTK nor GUI for it, nor adding any graphical assets even (could be recatangles). Everything could be customisable from Lua code, as members (if OOP) or through function params and this is fine.

  • Camera settings are though required. For camera, Defold-Orthographic should support most of (maybe except not following vertically on jumps) the parameters:

    • id of a character to follow
    • zoom
    • following flag (in PTK there is a camera :lock: button)
    • ignore jumps flag
    • (additionally a min height and “fall-height”(?) to reanable following character)
    • lookahead (so an offset from origin position if character is facing left/right)
    • lookahead speed (so that how fast the camera looks ahead and gets back)
    • damping (x,y)
  • Clear and concise documentation for all parameters and functions (API) is required.

  • Platformer code should be applicable to more than one entity, so for example, more than 1 player (or enemies) is possible to be created with such platforming abilities. Different entities might have different dimensions and configurations of parameters.

  • As much as possible - Separate platformer movement controller code from camera, obstacle detection code and from input handling code (so, 4 Cs - Camera, Controller, Controls, Collisions). For example, Controller can expose functions for given directions (left, right, up, down, jump, dash?) that can be triggered in script by user. Then controller should most probably have some kind of input buffer inside anyway (for coyote time, jump buffer, etc), but it’s user who define which buttons/controls do what, so that it could work with keyboard, gamepad or with touch controls. Separated should be also functions to conveniently detect obstacles around character (so that users could use raycasts or other methods, e.g. DAABBCC). Minimum is 4 directions, but detecting what’s on edges might be needed.

  • Collisions handling should take into acount also slopes (of any degree most prefereably, but at least 45 degree is a minimum)

  • Gravity should be a direction vector defined by user and all entities using such engine should be affected (or if possible, only selected ones, so that each entity has it’s own gravity vector?)

  • (Bonus if it would work with dynamic collision shapes, e.g. moving “room/floor” so not only with static shapes (like from tilemaps))

Platypus is a great platformer engine, but it’s still missing possibility to set accelerations, deceleration, turn speed etc. You could definitely start from it as a base, but it would require some refactoring to allow it. DABBCC-Platformer is another great example and a good base to start with.

What do you think about it? I can redefine the scope, no problem - I just think it’s possible to make something similar to PTK already, by refactoring and improving Platypus for example.

Additionally, for anyone who would commit to take on the challenge, I will share my own platformer code (and camera and input handling modules) that I used in Red Raging Wolf, which already has a lot of features and parameters, like acceleration, deceleration, different jump settings), so using this would be way easier as a base.

14 Likes

Just want to remind you that this is a very old example project from 2016. I was just starting to learn Defold back then. I can or anyone can make it better.
Also:

If this is going to be something new, I highly recommend using the build-in camera now on.

3 Likes

This is something very old and not good😂
Use dabbcc)
Also we have bump.lua and HardonCollider

4 Likes

I precisely did the very same approach. I have a Lua module for simplifying using built in component, which I find great and could be orthographic or perspective and most importantly - you can see it in Editor.

1 Like

Bump is also great.
But I must say; none of these solutions are beginner friendly.
Very well known reference for platformers: The guide to implementing 2D platformers | Higher-Order Fun

3 Likes

I have also an idea - if you want to work on something else like that and this bounty not really match it - then write about it and either I could support it in similar way or maybe even some other people from community will be interested :wink:

3 Likes

Increasing bounty to $300 :money_with_wings: :partying_face:

4 Likes

I think there’s a problem here. I don’t like the idea of “first come wins the prize.”

I’m not sure if someone has already started working on this, but it’s not a small project. It requires a lot of time and effort to build something proper, and no one wants to waste their time and energy.

Let me explain: let’s say I’m slower because I want to build something solid and thoroughly test it before sharing. Meanwhile, someone else might complete a relatively inferior project :slight_smile: and still win the bounty, leaving me to discard all the time and effort I’ve put in.

This would make me lose the motivation to continue working on my “perfect” project, and the community would miss out on the chance for a “perfect” solution.(I know there’s no such thing, but you get my point.)

I’m not sure what the best approach is, but maybe projects should be chosen based on their quality(just an idea…). There shouldn’t be a strict time limit, but people should announce when they’ve started working on this.

Just wanted to share my thoughts on this, because it benefits the entire community.

P.S. I’m not interested in cause I don’t want to waste my time to chasing the ghosts.

5 Likes

I imagine, similarly to how @Pkeod set up the bounty, as soon as someone takes on it, the prize is locked in and either me or the one who wants to do it writes here before actually starting it :smiley: So it’s not that much like a “competition with a prize”, what do you think?

Yeah, I actually have similar feeling, that’s why I tried to cut down the requirements to the minimum, but if someone would like to make it better, I think it should be rewarded better as well. Also, the prize might not really reflect the amount of work needed / hourly rate of different people, so I don’t actually know how to set the prize.

It might be that I selected a topic that is not much suitable for such a bounty, in comparison to the previously announced ones?

I would just really love if something like this appears for Defold :smiley: I just wanted with it to ignite a spark to be honest :sweat_smile: The bounty is not that much, but what I imagine is making it a really useful asset for many, could attract developers that could support the author?

Ok, so it would be a competition then, right? I personally would feel really bad, if someone would start doing it and won’t get any money for it. On the other side, as you say, we might get a “perfect” solution thanks to such approach. But I would like all the competitors to be rewarded then, if they submit something meeting criteria. I don’t think I could bet that much in, create a pool or something like this, but perhaps with community effort it might be possible?

On this I totally agree, but carefully with time limit (as it also shouldn’t last infintely, right? just, reasonable period)

If you think so, I think other people might think same, so it may not be worth the hassle :frowning:

1 Like

I’ll do it. If it’s still available.

3 Likes

@Gregory_Dixon it’s still available, you’re the first one! Thank you for taking up on this! :heart_eyes: Keep us updated :wink:

Will do! thank you.

1 Like


Getting started

5 Likes

I am curious what is the goal of the Platformer Engine?

To replicate the “Platformer Toolkit” to serve as an example how to do it in Lua? Or to prove that Defold can do it too? Or as a promotional tool for Defold? Or to have a “plug and play” platformer engine to “copy and paste” into one’s project?

Replication would be a great goal, but the Toolkit is an interactive video for learning rather than an asset to be used in Defold.

Platformer code implementations like this are pretty much engine agnostic :smiley:

And here, I think, this is definitely something this toolkit might end up being :wink:

1 Like