ID:2573682
 
Applies to:DM Language
Status: Open

Issue hasn't been assigned a status value.
Would be nice to be able to set up an "Angle" for a map, any type of map, probably by creating a 3D representation of it, on the back end, by rotating the 2D map plane, the value would provide the angle that you wish to use and based on that anything above it, becomes a "Ceiling Map" and everything below it becomes a "Floor Map".

The reason being to make the presentation of "Mode 7" and "First Person View" simple. The "Ceiling Map" is sometimes called a "Skybox" also. Their purpose would only be to take an image, static or dynamic/scrolling.

As I see it, everything would stay the same because it would be a static angle set before runtime on a specific map, everything still follows the rules of the map and the default would be whatever angle you end up choosing as top down so as to keep current backwards compatibility support. And if hexagons become a thing, the same thing can be done equally.


The famous "Mode 7" is just a transform done to a 2D map, which BYOND can already do.
The affine transformation involved in Mode 7 is applied to each scanline. I wouldn't recommend simulating scanline rendering in BYOND, though. Too many objects.

The same effect can be done with a 3D transform applied to a single plane, which BYOND can't do.
Lummox JR wrote:
The famous "Mode 7" is just a transform done to a 2D map, which BYOND can already do.

All this time just for you to respond with your ego.

The minimum you could had done is point to where one can learn to do something like the "Map Angle", "Ceiling Map" and "Floor Map" in DM that I am talking about. And even then, you would still be wrong, because you ignored what I wrote. You ignored my request.

Then Nadrew shows up only to enforce your ego, since he did not pick up when you failed.

The two people that are supposed to matter in these forums, as far as I am aware, failed. One right after the other. Is reading comprehension not important anymore?

And I guess Kaiochao used the official term of the technique I'm referring to. I guess, and it does not matter if I guess. Because it does not have to do with my request. The reason I even wrote an idea of how it could probably be done, which I have seen no one bring up before, is because I already had read about how scanline or pixel or perspective rendering was not good in DM because of "too many objects".

I didn't ask for "Mode 7", I asked for something that makes the representation of it and First Person View games simpler. For instance Map Angle, Ceiling Map and Floor Map could be variables for Maps, while First Person View could be a Map Format. This would help speed up prototyping ideas.

Any by the replies above, this has to be so easy to implement that might as well just make it even easier for people to use and market it that it is.

And really, if you ever want to see anything similar to what I was talking about, then it's obvious why I said "Mode 7". But, I understand that your "CEO Mentality" is dirt, so I will let your hatred for the simplest way to show off dozens of examples of similar ideas, easily, slide. I shouldn't, no one should but it's acceptable in these current times.

In response to Kaiochao
Ah you're right, for some reason I blanked on the fact that it's a perspective transform, not affine.
In response to 2DExtremeProductions
Um... what?

I freely admit I misunderstood part of your request, but the logical response to that is to converse and work to clear up any confusion, not get insulting. I'm not even sure how you think ego entered the equation here. Also it appears Nadrew was correcting me.
In response to Lummox JR
Lummox JR wrote:
Um... what?

I freely admit I misunderstood part of your request, but the logical response to that is to converse and work to clear up any confusion, not get insulting. I'm not even sure how you think ego entered the equation here. Also it appears Nadrew was correcting me.

Your response was total misunderstanding of what I wrote and telling me that it can be done. Nothing else. You took the three possible variables and the 2 possible reasons and made it into one thing, told me it's possible and left.

And even if you could do all those things right now, AND you don't care about simplifying it for users, you could have pointed me towards the right direction. It's condescending. It's great that you know what your software can do. I don't, that's why I ask questions, make comments or requests.

If I can't find it on the guide, reference or see people showing projects with the features that I think would be nice or interesting, there is absolutely no way to know if it's possible. Could I had missed it? Yes. Did you help? No.

In clearer words, you insulted me with your reply. Look, maybe my standards are too high, but I expect better from you. A reply that bad must be on purpose. That is my mindset. I have to spend extra energy to reply that bad. If you don't understand something, ask questions.

The other part, "the logical response" of course is to converse. Your reply did not leave any room for that. If there was any confusion, it was on my part, for missing a capability of DM, which is why I started the thread. It was on you to clear it up. You did not.

That is why I wrote my reply above.

And I don't know what Nadrew was doing, if you drop a link and say nothing. It's pretty much, whatever. Useless. I don't play the assumptions game.

And now, is there anything that has to be cleared up?




Not giving you a lengthy reply is not insulting; it's just brief. I simply misunderstood what you wanted and thought existing capabilities would suffice. If I was right and you had questions about it you could have followed up with said questions, or otherwise (as turned out to be the case) you could have pointed out that I was mistaken and why. And if you weren't sure which of us, if either, was right, you could have said you weren't sure if we were on the same page because I seemed to be talking about something else.

A short reply does not imply condescension. You read that into the response your own self.
You see. You just ignored everything I wrote once again.

A short reply is not my complaint.

The content, lack of direction and helpfulness in your reply is the complaint.

I even pointed out that even if your reply was correct and if you had not misunderstood, you still did not point me to the right direction.

I saw this thread a little bit earlier, and felt obligated to respond. I don't say much here anymore, but as someone who has done exactly this with the engine, I feel a little bit called out by this:

If I can't find it on the guide, reference or see people showing projects with the features that I think would be nice or interesting, there is absolutely no way to know if it's possible.

Now I know that I wasn't being called out here. I'm pointing to the fact that I'm one of the people who is not sharing this information, and I have good reasons to not share it.



It's possible already, but it's never going to be a foundation of any actual playable game projects in BYOND with the current feature set.

I achieved this using vertical scanline stretching and manual raycasting using the same technique I used in Dawncaster.

This is nothing new. It's an ancient technique for faking 3D rendering, and there are plenty of tutorials for how to do it, like this one: https://lodev.org/cgtutor/raycasting.html

Now, you might be asking yourself: "Why are you linking to something that's written in C, and not something written in DM?! We should have these resources in DM if this is possible, and the developer should care enough that we don't have them to tap someone to make these resources!"

This isn't how any engine developer works. DM is a reasonably documented language, and many of the new features that have been added since the 500 series began have been logical, and highly flexible. There is no possible way to document every single thing you could do with the language. Could we have better tutorials? Absolutely. But why is this item something that there shouldn't be a tutorial for?

Because my technique for achieving this abuses my deep knowledge of the engine so heavily, that the fact that it even works for a pointless tech demo is amazing. The engine all but crumbles under the weight of the most minimal solution to pull this off that even someone like me and conceive of.

BYOND is not a 3D engine. Turning it into one is non-trivial. If you aren't willing to do the heavy lifting, you should go use an engine suited to doing 3D games, because BYOND will, for innumerable very damn good reasons, never be the best choice for that use-case.

"But you just want the engine to grow, what's wrong with that?"

Well, it's a one man shop. If Lummox spent every day working on tutorials to spoonfeed people who aren't already making any effort to teach themselves ancient, and obsolete algorithms, we might as well pack it in and kill off support for the engine, because that's what would happen in effect.

On to the feature request you made:

Designating three map layers as sky, floor, and foreground, and adding client.angle isn't enough, and it's not even a good way to go about this.

For starters, the physical map shouldn't factor into rendering in a 3D game other than informing the renderer what is where. The entire way that BYOND works at a deep level makes adding this feature backward.

Nearly everything you want here, I've already done in the engine. The only thing that would make it a feasible feature request would be affine transformations. That's literally all we need to do the grunt work ourselves, do first-person rendering, as well as solve a huge number of other really cool graphical effects developers who aren't making first-person games could actually harness.



--As one of a handful of people who have done exactly what you want to do, I can say confidently that this feature request is one of, if not the worst methods of going about it that you could come up with, and this whole thread is a huge example of personal entitlement to other peoples' time and attention that was completely unwarranted and frankly man, the fact that you got a response at all for this half-assed, poorly thought through feature request, is more time dedicated to a terrible idea than was warranted.

You should apologize to everyone involved, because you misread the hell out of what everyone here was saying to you, and accused even the people that were on your side of being dicks to you, when they were actually backing you up.
In response to Ter13
Ter13 wrote:
if not the worst methods of going about it that you could come up with

Not one person even mentioned anything about the "method" I mentioned.

You should apologize to everyone involved, because you misread the hell out of what everyone here was saying to you, and accused even the people that were on your side of being dicks to you, when they were actually backing you up.

I will not apologize because the only person who actually responded something to me was Lummox JR. What part did I misread? I called out Lummox JR for not reading my posts and responding about things that I did not even talk about.

Why don't you actually show some honor and see that instead? Because clearly I did not complain about the length of his reply and since that is true, the rest probably is. And it is. I did no wrong, only pointed out that he failed in his replies to me.



On the other hand, you are the only one that actually provided information that I could actually ask more about. Thanks for the help, I disagree with your conclusion of what happened tho.