Comments

Log in with itch.io to leave a comment.

(1 edit) (+1)

I'm really curious about this tile to 3d function and the first person camera. I wonder if it could be adapted to something like Daggerfall, without the procedural generation.

(1 edit)

What happens is that the tiles you draw on a tile layer are used to add 5 more squares on top of the one on the tile layer, and that repeated vertically a couple of times, to create a wall with a tiled texture. Only when squares should be visible to the player though.

The 3D camera is just your normal Game-Maker-way 3D camera, with some head movement and extra bells and whistles to have Wolfenstein 3D style shooting and interactions.

As for objects like doors and exits, those triangles are coded within the objects themselves and then given a more unique texture. 

So the principle to handle 3D walls with either repeated or unique textures is in here. As for something like Daggerfall (especially the dungeons), I would say this template if studied well can be a good staring point to understand how to do it. Keep in mind Daggerfall is absolutely massive, even without randomised worlds, and this is not such a template. Performance will be the harder problem to solve when you want something on the scale of Daggerfall in Game Maker, but part of me thinks it's not impossible.

(+1)

Something much smaller for sure!

I'm already making a 2d project actually, so I'm just looking into it while I take a break.

I've always liked the idea of making a billboarded first person RPG though.

Thanks.

(+1)

Definitely doable. This template already has multiple principles working for something like that. It would have to be heavily transformed though, like getting rid of the level structure and using more open ended connected rooms instead.

My advice to you would be to also look into .obj import. DragoniteSpam on Youtube has an excellent tutorial on it! With that you can include very complex 3D models as well (like pre-made houses and stuff).

As for billboarded sprites... The 8 directional type works so nicely for games in this style, but drawing them can be really hard. The original Doom for example used sculptures that they photographed from multiple angles while using something like stop-motion before converting them into sprites. I would love to figure out a nice trick to do sprites like that myself :D

(1 edit) (+1)

Hey, I bought this about a week ago but have been really busy and haven’t had a chance to explore it yet. 

Is it possible to create randomly generated levels using your FPS engine? Like if I had it create hallways, rooms, etc at the start of the room, would that work? Or does it require tiles to be placed in the editor for it to function?

Thanks!

(+1)

Hi!

This does not have a random level generator in it. What this does is convert layer tilemaps into 3D mazes, and use 3D billboard sprites for the items and enemies you place as instances in the room editor.

However, if you can code logical randomized tilemaps yourself, the conversion to 3D would apply as well.

A room is constructed mostly through 4 layers: Floor, Walls, Ceiling and "Wall pieces above doors". When you draw these layers in the room editor, these will be converted into the 3D maze. If you can figure out a way to consistently have these multiple 2D layers work together into creating a logical random maze, then that could theoretically work. Keep in mind that doors and key placement will probably be a bit tricky to setup.

Randomized levels is not in the scope of this template however since I am not too familiar with random level generation.

(+1)

Thanks for the quick response! I’ll have to try it out and let you know how it goes. 

I am looking for a hack and slash side scroller template with text box interaction with NPCs next.

(+1)

Hey, that looks really cool, congrats. :)

What method do you use for 3d world, the built-in 3d functions, or something old-scool, like raycasting?

Do you have some comments or notes in your engine how to extend it, eg. add own textures?

(1 edit) (+1)

All code is commented in the project.

What happens is that the tilemaps drawn in the room editor are sampled and turned into 3D cube shapes by constructing the 3D vertices when the level starts (but only if they should be visible). The tilemap itself is then used as a texture source for the generated polygons. The texture source is a surface on which the (animated) tilemap is drawn for each used layer.

The camera projection handles the rest.

It's done using Game Maker Studio 2's vertex/camera/matrix functions.


The hit detection is handled by checking collision boxes and collision lines (using Game Maker functions like for example collision_line).

There's also options where you can set the scale (in tile-size units) of walls, so you can make the walls higher or lower (same with ceiling,...).

As for how to add your own textures, once you understand how to assign texture coordinates to vertices, it should definitely be possible to add that yourself. In fact, the "exit" object, the "door" objects,... already do that!

(+1)

Wow, thanks for the detailed answer.

I was trying different methods of fake 3d solutions for different type of games, mainly as prototypes, like 

or

but yours seems to be really complex and ready to use for little games.

I am just wandering how you can increase the resolution (texture and/or entire game window) and how it is affecting performance.

Anyway, as I am curious, I plan to buy yours, maybe only for learning purposes, but with a chance to create a fun project. :)

(+1)

You should be able to change resolutions by going to the specific code blocks that sets the window size, application surface dimensions, and how those are resized in the fullscreen/window mode code block.

(+1)

is there anyway you can put head bobbing movement into this? Cheers

(1 edit)

I think you mean that the camera swivels up and down while walking? :)

That is in there, altough it's subtle, and can be adjusted.

(+2)

this is really good. im extremely satisfied with this purchase. There is a ton here to use and the project is put together very well.

(+1)

Glad to hear it! I certainly hope I made every line of code as clear as possible... I put a lot of effort in my templates, with more on the way!

Thank you, your comment made my day all the better :)