This is a locked discussion. Devlog will be uploaded here.

Explora un reino divino en constante cambio en este RPG 3D donde cada batalla pone a prueba tu alma · By
I initially planned to use a 3D raycasting system with the d3d library, but due to its removal in GMS2, I’m no longer able to use it. Instead, I will experiment with perspectives to create a 3D-like view. In the future, raycasting will be used to hide parts of the dungeon that the player cannot see.
The concept behind this is to allow the player to choose a seed from the main menu and play the game with that seed, or let the game generate a random seed.
The game will pass some data to the function, which will fully customize and generate the dungeon based on that data.
Starting with basic parameters like width and height, as not every dungeon has the same size.

And the content of the dungeon:

Once the data is sent, the function will begin generating the dungeon.
Here’s the procedural method it follows:
The result looks something like this:
[ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ]
[ 1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1 ]
[ 1,1,0,0,0,0,1,5,0,0,1,0,1,1,1,0,1,1,2,1 ]
[ 1,0,1,0,0,0,0,4,0,0,0,0,0,0,4,1,0,0,0,1 ]
[ 1,0,0,0,3,1,1,1,0,0,1,0,1,1,0,1,0,1,0,1 ]
[ 1,0,0,0,0,1,0,0,0,1,0,0,1,0,0,1,4,1,0,1 ]
[ 1,0,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,1,0,1 ]
[ 1,0,1,1,4,0,0,0,0,0,1,0,1,1,0,0,0,0,1,1 ]
[ 1,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,1 ]
[ 1,0,1,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,1 ]
[ 1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,1,1 ]
[ 1,1,0,0,1,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1 ]
[ 1,0,0,4,0,1,1,1,0,4,0,0,0,0,1,0,0,0,0,1 ]
[ 1,0,1,0,0,0,1,0,1,0,1,1,0,0,0,0,0,0,1,1 ]
[ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ]
Note: The wall placement is not perfect yet—currently, walls are placed randomly (using the seed) rather than following a pattern that reflects how a real wall would work.
In this iteration, I decided to completely rewrite the dungeon system from scratch, once again using JavaScript as a development base. This allowed me to test ideas quickly before attempting to port the system to GameMaker. However, when I tried to implement it in GameMaker, I realized that it would be a massive resource drain and quite challenging to achieve due to GameMaker’s limitations and coding style.
The current system works as follos:
true for walls (impassable zones) and false for the floor (walkable zones).startPos).Once the rooms and terrain are generated, the system:
Given the inefficiency of directly porting this system to GameMaker, I decided to take a different approach:
objects) in their respective positions.
This offloads all the heavy processing to the server, while GameMaker focuses purely on rendering and gameplay.In the next iteration, I plan to:
The menu system has been overhauled to be fully dynamic. It adapts to the available options and primarily server as a navigation tool for development rooms, where I test new mechanics and features.

One of these new rooms focuses on lighting and is essentially a copy of the dungeon generator.
However, it now includes a fully functional lighting system to test and refine interactions.

The new lighting system allows for:
The lighting system is inspired by GrizzliusMaximus’s 2020 post and shares similarities with Mike Daily’s Real-Time 2D Lighting but includes several optimizations for efficiency.
The system heavily relies on shaders to shift shadow calculations from the CPU to the GPU, improving performance and reducing lag. Here’s a breakdown of how it works:
This approach allows all lights and shadows to be drawn on a single surface, significantly reducing texture swap overhead.

Game name Updates: The game name formerly known as Blasphemous is now officially titled Shadows and Sorcery. The new name encapsulates the magical, mysterious, and light-driven themes of the game.
The magic system now features three unique abilities that are core to the gameplay:



This enemy operates through five states and showcases dynamic behaviours based on player interaction:

This mysterious being has a more restricted AI but still poses a significant threat:
Following:
Following_Lost:
Idle:
Patrolling:
