Obviously my main inspiration is Diablo and Diablo 2, but I want to do some things I liked in Baldur’s Gate, Temple of Elemental Evil and Arcanum (even some Torment).
I have been playing between pre-rendered and full 3d for a while trying to figure out what to do and I have decided I am going full 3d, with an almost isometric perspective, because the amount of new tech (shaders mostly) I would need to make to achieve the result I wanted was too much – especially since I am both programming and making the art for this (and the writing and some of the voices).
A few months ago experiments in dungeon generation were successful, so I’m going to have random and custom dungeons and a dungeon builder in the game that will be easily shareable by the community.
Anyway now that I have a more defined set of requirements for art I am moving ahead with building props and level tiles, rigging my characters and making demo environments to test it all in.
I was thinking about Dungeons and dungeon generation and also about how to give players the ability to make their own Dungeons and share them with each other.
Well a map can be saved as a 2D matrix, I have even done it with a list of values or 1D matrix.
Here you can see an example I made for a platformer, using a 1D matrix to make square levels (you can edit the level during runtime, play it, save it and load it):
But how does someone edit, share and transfer those easily? How could I make a quick editor or even edit maps outside the game? How could I send new maps to my players fast and make sure they don’t break the game no matter the version?
Well an image is a matrix and we can have RGBA info, so we can hold multiple values in one image for one map and also edit and also transfer them easily.
What do we see here:
This is basically a couple of hours worth of work as a proof of concept.
I made a script that takes an image as input, identifies what each pixel represents and instantiates it. It makes levels of arbitrary sizes, it can spawn empty, floors, walls, columns, enemies and the player.
I also wanted to be able to make sure to use NavMesh and even though Unity is going to add runtime generation in 2017, this was done to prove that if you don’t fight Unity you can even do things it’s not supposed to do.
So the enemies have a NavMesh Agent and the NavMesh is carved using NavMesh Obstacles and as you can see from the delayed generation mode below they can follow you upon spawning even if the level hasn’t finished yet.
I added a delayed generation version because generation was so fast I couldn’t see my work in action, it was hit play, see level, so I put my code in a coroutine and added a small delay to see things being built.
What will I do with this:
I don’t think I am going to use it for Dominus Infernus, I have another game idea it might be more useful for, since in Dominus Infernus I want a higher standard of graphics, which will be achieved using 3D pre-rendered backgrounds.
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies.
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
Cookie
Duration
Description
cookielawinfo-checkbox-analytics
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional
11 months
The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
viewed_cookie_policy
11 months
The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.