ID:1861429
 
Applies to:Dream Maker
Status: Open

Issue hasn't been assigned a status value.
I really don't know how to suggest that beside "BYOND needs to be able to create better platformer games and EASIER than it is at the moment."

Forum_account does have a library but you have to fuse it with so much other stuff (Keyboard library for example) and it's far from easy to understand for average programmers, I'm sure if BYOND had it own pre-made physics engine, platformers could be created more easily. + BYOND seems to be the perfect engine focuses solely on creating 2D games.

Unity has this thing where when you create a project you can pick the environment to be either 2D or 3D. I was wondering if BYOND could have something like this but for platformers. So like you could pick "overworld-2D", "platformer-2D" or "Isometric". Picking the platformer-2D would create a 2D environment with a pre-made physics engine in which users could edit and change gravity and camera movement etc.... BYOND should be capable of creating platformers far more easily than it is at the moment.


I would like to see this, but with certain functions.

I'd imagine the map would have to be adjusted depending on how this is achieved.

Built in variables would need to be considered as well.
You're talking about gravity strength, jump height (because the North() movement would be altered), walk_to() would have to account for the newly added "y-layers" so walk_to() wouldn't have you walk through air and kick in the gravity.

I don't think it's something that's easily added since a lot of the already existing var/procs would have to be altered to accompany the new format.
The vars/procs wouldnt need to be altered. They just shouldnt be used. Just like Bump() isn't used anymore with pixel-movement but insted we use Crossed() because its more accurate.

Yes indeed, it will require new vars/procs but we'd see alot more platformer games if BYOND could help the devs. I'm sure it's feasible. Maybe it needs some time but I want to know what Lummox thinks of this. Would he be willing to add these new procs/vars? Or is he too busy with other stuff...
There are way too many factors to consider for BYOND to handle platformer physics. How much gravity is there? How far and how high can you jump? Do mobs land on the bounding boxes of other objects, or inside of them? How many directions can you jump on the map? What if the mob is gliding or flying and you want aerodynamics? How do you handle buoyancy if they are in water? How does it all work in the many different map formats?

I could go on and on like this. You are underestimating the complexity of platformers. If it was kept simple, it would not be worth doing, but if it actually was a general solution, it would be so complex that it would result in a relatively large amount of lag for what might otherwise be a very simple game. That's not to mention the huge amount of time and effort that would be required to develop any kind of general solution, which would most likely fail to work for every case, and would be far slower than simply writing your own system in softcode.

Basically, until everyone has supercomputers, there just isn't an ideal solution to this paradox.
What on earth?... I think you're creating problems out of nothing.

With built-in variables, you could easily calculate how much gravity you want, how high a player jumps, bounding boxes already exists etc, etc... That really isn't the problem.

Why would it be easier to write your own system in "softcode" that doesn't make sense and I'm sorry the rest didn't either.

If there are any problems at all in this request it would be as mentionned by Maximus_alex, there are a lot of new vars/proc that would need to be created but then again this doesn't mean its not feasible. The only question remaining is lummox willing to put time and work unto a BYOND physics engine?
For the time being I have enough other items on my plate that a physics engine isn't on my horizon at this time. I can't say that it's never going to happen, but even a simple physics engine would require a lot of customization like Multiverse7 talked about. I think if it were to come to that, I'd hook up the engine to something like Box2D so I wasn't reinventing the wheel.
In response to Kidpaddle45
Kidpaddle45 wrote:
What on earth?
You should also be asking, "What not on Earth?". The scope of BYOND is not that narrow.

I think you're creating problems out of nothing.
No, you just haven't thought about what the problems actually are.

With built-in variables, you could easily calculate how much gravity you want, how high a player jumps, bounding boxes already exists etc, etc... That really isn't the problem.
If that's not the problem, then I don't know what is.

Why would it be easier to write your own system in "softcode" that doesn't make sense and I'm sorry the rest didn't either.
It would be easier because the physics engine would only have to cover a single type of game, but what you seem to be requesting is for BYOND to handle the entire spectrum of platformer games.

If there are any problems at all in this request it would be as mentionned by Maximus_alex, there are a lot of new vars/proc that would need to be created but then again this doesn't mean its not feasible. The only question remaining is lummox willing to put time and work unto a BYOND physics engine?
Do you really think the number of procs or vars is the problem here? I wish it was that simple, but it isn't. You seem to be forgetting that this is BYOND, not the Unreal Engine. Right now, there is exactly one developer that would have to make all of this happen, which could take years!

Honestly, I would much rather have built-in support for rendering vector graphics and 3D models, than any kind of physics engine. I don't think physics handling is the best direction for BYOND to go. Simulating physics is the magic of a game, and is best left up to the developer.
In response to Lummox JR
Box2D is nice. Transformice, a successful physics-based game, runs on it.
In response to Multiverse7
Multiverse7 wrote:
Kidpaddle45 wrote:
What on earth?
You should also be asking, "What not on Earth?". The scope of BYOND is not that narrow.

I think you're creating problems out of nothing.
No, you just haven't thought about what the problems actually are.

With built-in variables, you could easily calculate how much gravity you want, how high a player jumps, bounding boxes already exists etc, etc... That really isn't the problem.
If that's not the problem, then I don't know what is.

Why would it be easier to write your own system in "softcode" that doesn't make sense and I'm sorry the rest didn't either.
It would be easier because the physics engine would only have to cover a single type of game, but what you seem to be requesting is for BYOND to handle the entire spectrum of platformer games.

If there are any problems at all in this request it would be as mentionned by Maximus_alex, there are a lot of new vars/proc that would need to be created but then again this doesn't mean its not feasible. The only question remaining is lummox willing to put time and work unto a BYOND physics engine?
Do you really think the number of procs or vars is the problem here? I wish it was that simple, but it isn't. You seem to be forgetting that this is BYOND, not the Unreal Engine. Right now, there is exactly one developer that would have to make all of this happen, which could take years!

Honestly, I would much rather have built-in support for rendering vector graphics and 3D models, than any kind of physics engine. I don't think physics handling is the best direction for BYOND to go. Simulating physics is the magic of a game, and is best left up to the developer.

And rendering vector graphics and 3D models is more feasible on BYOND? Anyways, if you think so, that is your opinion, I don't see any reasons on arguing who has the best one if none of that stuff is happening anyways :P

I got the answer I've been looking for. The topic can be closed.
In response to Kidpaddle45
Kidpaddle45 wrote:
And rendering vector graphics and 3D models is more feasible on BYOND?
I would say that vector and 3D graphics are only feasible if implemented as a new feature. They are basically impossible to implement as softcode in BYOND, unlike physics systems. I just prefer features that let you do things that are not already possible.

I got the answer I've been looking for. The topic can be closed.
I don't think this should be closed, because I'm sure that in the future, someone will start another topic just like this one.
Just to be clear, while this suggestion is ambitious I'm not necessarily against it. Mainly though, I suspect that Box2D is too much muscle for a standard platformer (it might actually make platformers hard to make in some ways), and platformers all tend to have such different interpretations of world physics that I'm not certain a standardized solution could ever work. I'm open to being convinced otherwise.
In response to Lummox JR
Lummox JR wrote:
... so I wasn't reinventing the wheel.

But that's the fun part!
Bump() is totally used in pixel movement.

I don't understand requests like this. You can't use a library because it's hard? Are you expecting a built-in implementation to be easy to use? Is there a difference between using something "built-in" vs a library that does the same thing (ignoring the performance because that isn't at issue in this thread)? Do libraries seem hard to work with because you can actually see the code that makes them work? If you could see the source code of the BYOND engine, wouldn't you all just leave?
In response to Kaiochao
Kaiochao wrote:
If you could see the source code of the BYOND engine, wouldn't you all just leave?

Probably... I've heard it's pretty scary.

I've seen it, and it was terrifying. Lummox has probably cleaned up a ton and it's probably still terrifying.
In response to Nadrew
Some parts are a lot cleaner, some slightly less so owing to new features. One of the early things I did was to try changing a lot of types like u2c and u4c (2-byte and 4-byte, respectively, both unsigned) to the aliases we already had: DMObjId, etc. Eventually I was able to make the change from 2-byte to 4-byte limits on a lot of things just because of that change.
the only good thing that has come from this thread is the mention of box2D. i've had a lot of discussions with other programmers in the past that are essentially "hey do you think [x] is possible in byond?" "no, you'd need box2d for that"

there are a lot of cases where i wish i could have rotated bounding boxes but i'm limited by BYOND. rotated bounding boxes would be awesome.
In response to Yut Put
I kind of agree... the only other mentions of Box2D on this forum are by me. Platformer physics can be very simple to make and very light on the CPU (same for pixel movement in general, as it was before the native implementation), compared to 2D rigid body physics with polygon colliders.

Separating Axis Theorem is as efficient as it gets, yet softcode DM can't handle it at a reasonable level. And that's just for collision detection; collision resolution is just more stuff to pile on the CPU, although it's called on much less frequently. It might just be too much to handle for your average BYONDer... physical properties like restitution/bounciness and friction, and events more in-depth than your basic "on-contact".

The closest thing to polygon collision detection I've seen on BYOND is inside Hobnob's vector demos, which may have just spread the misconception that vector math and trigonometry are only for elite programmers who are good at math. Really, a basic understanding of physics and trig is essential when you want to escape the limitations of tile-based worlds.
In response to Yut Put
rotated bounding boxes would be awesome.

this.

Also, shapes - like capsule, circle, triangle(or polygon) - for bounding boxes would be a nice improvement.