ID:102827
 
Keywords: 3d, byond
What would it actually take to have 3D graphics in BYOND?

It could take a lot of work to make a BYOND client that draws 3D graphics but that's really all it would take. A lot of the built-in stuff (tile-based maps and movement, density, etc.) would translate easily to 3D.

This post explains what modifications (i.e. what additional built-in variables) BYOND would need to be able to display simple 2D games like Spies in 3D. Obviously you could do much more to extend BYOND's 3D capabilities than what I mention here but I'm looking for a bare minimum feature set - only what you need to convert existing games to 3D. We can worry about how to extend the system later.


Tiles

Tiles can now have height. This height can be a single setting for a whole tile. For example:



The brick walls have a height of 32. This makes them appear raised.

Height could be specified for a whole tile, a side of a tile, or a corner of a tile. The most specific value that you've defined is used. If you set the height to 32 for the whole tile then each corner inherits that height. If you set the height to 32 but the left side's height to 0 then the top-left and bottom-left corners inherit the zero height and the other corners are 32 (this could be used for creating stairs and ramps).

You could also include a setting for the bottom of a tile so that objects could appear raised in the air. This could be handled by pixel_z because the behavior is similar but there might be reasons to differentiate.

You might also want the sides of a tile to have a different texture than the top. You'd need settings for the sides as a whole and as individuals. This would work similar to the height settings where the most specific setting is inherited.

By combining these settings you could create tiles that appear to have a wall on only one side (like a fence). The built-in density system could be extended to also include per-side density settings. You could have a tile whose north side is dense. You can only enter/exit the tile from the east, south, or west.


Sprites

You'd need different display settings for sprites. Some should appear standing up, some should appear flat, some should always face the camera. For example:



You want the player to stand up but the footprints to be flat. Combined with an atom.angle type of variable this should allow for almost anything you'd need.

You might also want an object to be shown as a cube (like how I represented turfs). The settings I described for turfs could belong to /atom/movable too and you'd have a variable to determine whether the atom is drawn as a sprite or a cube. This could just be part of the display options (standing, flat, billboard, or cube).


Camera

The client's eye would need more settings too. The exact variables needed would depend on how much flexibility is given to the programmer. It could be as simple as setting a couple of angles and the amount of zoom.


What You Get For Free

Dynamic colored lighting (image)

Isometric view (image)

First-person view (image)

Custom camera control - rotate the camera, zoom in, zoom out, etc.

Z-buffering


Concerns

Some existing features might be hard to translate to 3D. I'm not sure how layering would work (the built-in layer variable) because 3D gives you z-buffering for free. I'm not sure that everything you can currently do with layers could be easily done in 3D, but I'm also not sure that you'd need to or want to.

Is there anything else you can think of that would need to be added to BYOND to support a 3D display mode?
Very interesting. Although I believe it would be easier just to scrap dreamseeker altogether and start something like this anew, using modern development techniques to streamline the process. In fact the old dreamseeker was a lot like a really good learning experience leading to 4.0 I suppose.
I suspect that I can't find much discussion about a 3D mode for BYOND because the discussion ends abruptly when people assume that the 3D mode would be super complicated. What I'm trying to show here is that the change could be fairly simple so I'd like to avoid phrases like* "scrap dreamseeker altogether and start something like this anew" =)

Dreamseeker already does a lot of things that wouldn't be affected by this change (keyboard input, network communication, interface controls, etc.). What's important about this change is that it's not as monumental as people might think. It's just a new way of drawing the map control. That's it. In some ways the addition of interface controls and skins may have been a larger change.

* Note: I agree that BYOND would turn out better if they started over, but when time is not a factor any project will turn out better if it was started over. Time certainly is a factor here. It would be nice to bring BYOND's graphical capabilities up to 1996's standards while there are still BYOND users that remember 1996 =)
I'd like to see some situations where this would actually be useful. Right now it seems like you're trying to pretty up a 2D world, which is wasted time and effort on BYOND's part.
C_Dawg_S wrote:
I'd like to see some situations where this would actually be useful

3D graphics look nicer. BYOND looks like a more capable and more appealing platform for developing games if it supports 3D graphics.

3D graphics allow for perspective. Perspective lets objects be drawn differently depending on your point of view. This has many benefits.

Players can stand on top of a hill and look out over a vast landscape. The only way to accomplish this now is to increase the client's view size, but that's not quite the same. With perspective more distant objects appear smaller.

With a top-down view everything always looks the same. For example, in this image there is a secret passage hidden behind some bushes. The top-down view makes the secret area appear the same no matter where the player is standing. A first person view would allow for the secret passage to be more difficult to see when the player is further away because it is smaller. Having perspective also means that the camera can be facing a direction - the player could walk right by the secret passage without looking directly at it.

Edit: Perspective also lets you sneak up behind a player without using clunky client.eye tricks like Murder Mansion does.

Things like dynamic colored lighting and more advanced camera control have already been requested for BYOND's 2D top-down view. These would be trivial to implement in 3D.
Trying to build 3D into BYOND at this point is a complete waste of time. Not only has it been discussed to the nth degree already, but it's clear that it would take a lot more than just a redesign to do well enough. It's not just a matter of making the pseudo 3D projections on your screen, but also making it all client-side. That's what Gakumerasera had to do for Vengeance 56, and it took more work than it's worth. BYOND has enough to work on as it is, and Schnitzelnagler's little movement proved that something like a redesign to make BYOND more client-side and whatnot isn't going to happen any time soon.

Fugsnarf wrote:
It's not just a matter of making the pseudo 3D projections on your screen, but also making it all client-side. That's what Gakumerasera had to do for Vengeance 56

Vengeance 56 uses a renderer made with DM so how it operates is irrelevant. I'm not talking about how to make a 3D renderer in DM, I'm talking about what changes would need to be made to BYOND (i.e. what built-in variables need to be added) to support a built-in 3D mode. Dreamseeker already draws the map on the client-side. The drawing process for 3D is a little more complex but this isn't a new type of processing for the client to do.

Not only has it been discussed to the nth degree already

I haven't had much luck finding discussions about this, just a few forum posts that were very old. Do you have links to some of these discussions? I'm curious what the conclusions were.

but it's clear that it would take a lot more than just a redesign to do well enough.

If you believe a redesign is necessary I'd like to hear why you think so. The purpose of this post is to explain why the change to 3D graphics is more minor than you might think and would not require a redesign. I gave a ~600 word explanation of why this is the case. If you believe that I am wrong I'd certainly appreciate it if you could explain why.
You're right that the change to 3D is minor. It doesn't take much. Heck, it can even be done now. The problem lies in the impact it has on the server, even in single player. Unless you can make all of this "3D" rendering client-side, it won't be nearly as feasible. That's where the redesign comes in, however. This pseudo 3D you talk about isn't hard to do, but it just isn't practical to do on the current BYOND whether built-in or not.
Of course your idea of dynamic lighting in 3d excludes stencil shadows. Man just accept shadows.
D4RK3 54B3R wrote:
Of course your idea of dynamic lighting in 3d excludes stencil shadows. Man just accept shadows.

As I said in the post: "I'm looking for a bare minimum feature set - only what you need to convert existing games to 3D. We can worry about how to extend the system later."

Fugsnarf wrote:
You're right that the change to 3D is minor. It doesn't take much. Heck, it can even be done now. The problem lies in the impact it has on the server, even in single player. Unless you can make all of this "3D" rendering client-side, it won't be nearly as feasible.

The current drawing is done client-side, if this was a built-in feature the 3D drawing would be done client-side too (I have no idea why you would think otherwise). The only impact on performance is the additional variables that need to be sent to the client to manage the additional display properties of atoms. As the post outlines there aren't many more variables that would be needed.
I like how you covered the bare minimum for 3D, rather than full blown models (which most people seem to think when talking about 3D). If Tom and Lummox were to start adding so many features, though, I'd definitely hope for some shader support, too!
Jeff8500 wrote:
I like how you covered the bare minimum for 3D, rather than full blown models

Yay! Someone understands this!

Just going for the bare minimum gives you some benefits (camera control being the big one) and doesn't change the development process or tools. The developer just needs to set some additional variables to control the way atoms are displayed and the icon/map editors are still sufficient.

If Tom and Lummox were to start adding so many features, though, I'd definitely hope for some shader support, too!

This change certainly opens up a lot of doors, shaders being one of them. I would also expect that support for 3D models would be added sometime down the line too. The important thing is that even with no extra fancy features there are benefits to having 3D support. The fancy features can be added later but the initial switch to 3D is still worthwhile.
Certain types of shaders could even be added now; I made a feature request for them a while ago.
Makes you wonder why these things haven't been added.

BYOND would seem a lot more impressive if you could create a maze game (like this) with less than 15 lines of code (with a built-in first person view setting most of the code is for defining the turfs). It would certainly be more impressive than the two line chat program they seem so proud of.
Honestly I don't find a great appeal in 3D. I like the current 2D system, and 3D is much easier to botch. Others may think differently but I don't care much at all for this. I would much rather see the language changes you discussed in an earlier post.
Toadfish wrote:
Honestly I don't find a great appeal in 3D. I like the current 2D system

The point is that the system wouldn't change very much at all. To the programmer there are just a few new built-in variables that you can use. The tools are all the same (map and icon editors). The difference is that when you run the game you could have a first person view.

I'm not sure why you don't find it appealing but 3D should be appealing to most game developers. Many things just aren't possible in 2D (especially such a restricted 2D environment).

3D is much easier to botch.

I don't know what this means. Easier to botch than what? And easy for who - the implementation of 3D graphics is easy for the staff to botch? Or the use of BYOND's 3D capabilities is easy for a DM developer to botch?

I would much rather see the language changes you discussed in an earlier post.

At this point I'd settle for any update that's more than "the last update introduced a server crashing bug, here's another update."

It's hard to say what would make for a better update. 3D graphics is obviously the glitzier update and would attract more people. Fixing up some language quirks makes the language more tolerable and could help make people stick around. It's a shame that Tom has such a "closed doors" development style. If the community had even the slightest inkling of what direction BYOND was headed in we could help.
My post was in response to 'Makes you wonder why these things haven't been added.' I explained why I wouldn't, were it in my power, put priority on 3D. To answer your question:

3D is much easier to botch.

I meant 3D is easy to make ugly if you're not careful.

I'm not sure why you don't find it appealing but 3D should be appealing to most game developers.

More options are always appealing, but I don't necessarily think a 3D game environment is superior to a 2D one, especially not in the hands of indie developers. The reasoning is a bit complex. I can talk about this more if you like but I am not sure it's relevant to this post.

The meaning of my post is really just that I don't find it so urgent to implement 3D. There is the habit of yours to make "Much Ado About Nothing" like Shakespeare. =p
It's not that I find it urgent to implement 3D graphics*, it's just something I thought of. Like the feature requests in my previous blog post these are ideas I came up with and I wonder why they haven't been added. Some have obvious reasons, some don't. For the features that don't have obvious reasons, perhaps it never crossed anyone's mind. Or maybe people have it in their heads that a feature is not feasible without really considering it.

I think the second point is more often the case. Many people have it in their heads that BYOND can't make sidescrollers but my sidescroller demo seems to work okay. In defense of those ignorant clods, recent improvements to BYOND's network communication (in v463 maybe?) made sidescrollers and other action games viable. But this is exactly what you have to keep in mind: BYOND is evolving. A feature that was considered infeasible years ago may eventually become feasible.

I believe that a 3D mode is an example of a feature that has become feasible. It looks like BYOND switched to using OpenGL for its graphics display in 2007 (id:568549). Prior to this a 3D mode would require switching to OpenGL (or DirectX) *then* adding a 3D mode. That's a lot to ask for. Because the switch to OpenGL has been made a 3D mode is very feasible. I suspect that this feature isn't often considered because it had been dismissed as infeasible in the past.

* Okay, I do find it urgent. But honestly, BYOND is behind the times and its niche is shrinking. Even if it corners the market on being the easy-to-use game creator, who wants to create games that look like they're from 1992? The switch to 3D wouldn't be mandatory, you could still make 2D games. The switch would also not complicate things much at all, it would just add a few built-in variables. BYOND would be as easy to use after the switch as it is now.

Edit:
Toadfish wrote:
I meant 3D is easy to make ugly if you're not careful.

I'm still not entirely sure what you mean. People make ugly 2D games now. Potential misuse is not a good reason to exclude a feature.

As far as I know, Vengeance 56 is the nicest looking first-person game on BYOND. Something like this would be trivial if BYOND had a 3D mode. Not only would it look nicer, it wouldn't require server-to-server communication to make it multiplayer.
I think 3D on BYOND would be nice, but the majority of the people, for some awkward reason, oppose it. I don't see the fucking problem with it. If the programmers ever decide to do some stuff like this, by all means, do it. Everyone gets frustrated for no apparent reason whenever this topic is discussed like a gang of morons. Theres nothing wrong with wishing BYOND had more features.
I don't oppose it, I just don't think BYOND can support it at this time. It's easily possible to implement, but it's not practical. Wish all you want, reality is reality.

I don't necessarily think 2D is "behind the times" either. Both 2D and 3D have a place in gaming, even to this day. Both have a certain look and feel to them and neither is superior.
Page: 1 2 3 4