Korman Python Eureka moment
Posted: Fri Jun 15, 2018 1:41 am
This morning I awoke to a true lightbulb moment. I have always understood that in Uru is a doorway puzzle in a 3D environment, and as age builders both in Blender and 3DMax we build environments that have doorways.
Said environment gives us clues and puzzles that result in keys to open the doors of said environment.
Beyond each door there is an extension to the environment (perhaps a new age) where there is either a reward (clothing or some new feature for our Relto) a new set of puzzles that will lead to another as yet unseen or possibly a very visible door or doors.
This is true of even of the most basic 1st person shooter where in that case the door you need to pass is mobile and shooting back at you, and the tools/keys you have to open those doors are weapons with various levels of destruction.
When the only tool you have is a hammer everything looks like a nail.
One of the nice things about Uru is there are no guns and the tools are observation and intelligence and sometimes patience.
One of the simplest locks in this type of 3D world is the combination lock where there is some value that’s either written somewhere or is a value that can be gleaned from the environment. By inputting by some method that gleaned value you unlock or open the door
For my age Enobmort I had figured out the second part (that is my hidden value and how to embed it in the environment) and I have worked out the door placement I have even worked out how the player is going to enter this value and the actions needed to completely open the door.
Let us be clear here I am saying this is the door, this is how the player is going to open the door, but I have long been struggling to find a way build the lock the key, and for that matter how to make the door move within the game.
One of my primary problems was finding a way to add a variable into the environment to store the lock combination.
Here we come to my Eureka moment. One of the most basic elements in Blender that we export to the game is the Empty that we use as a place holder for a link in point.
That Empty consists of a Name and a value for its x, y, and z co-ordinates within our 3D environment.
As a link in point, it does not even have a physical appearance in your age it has no colour and no texture.
This makes it a prime candidate to store three variables EmptyX, EmptyY and EmptyZ.
There has to be a way of saying within the game set EmptyX to some value and then within Python and therefore also within the game increment or decrement EmptyY and then test if EmptyX is equal to EmptyY change EmptyZ to some value that represents the state of our door lock or even the door.
Once this is developed as a basic tool we could make lots of puzzles because we don’t even ned this to be a combination lock all this represents is a three value state and a basic test where EmptyX is some value that we want to test combined with some means of changing EmptyY to some new value be that a click or whatever and some test for equality between EmptyX and EmptyZ.
Now my second doorway in Enobmort requires following a route passing through a set number of locations in a particular order and for that I need to think about how I could possibly use this empty as a way of solving that one but that is going to have to wait on another Lightbulb.
[edit]
As a postscript and afterthought I was wondering if we could develop a way to manipulate this with nodes (that I know don't exist yet but could be Python nodes)
So for example in the Blend file we add an empty and give it a name.
Then a clickable node chain that leads to a python node where we select the object from a drop down and we can choose to increment or decrement the x, y or z value.
Then a test node that checks for equality where we can choose which attributes we will be testing.
We could link to a Message node that makes some change to the age.
I hope everyone realizes I am just kicking ideas around here to test the waters for what is possible.
[/edit]
Said environment gives us clues and puzzles that result in keys to open the doors of said environment.
Beyond each door there is an extension to the environment (perhaps a new age) where there is either a reward (clothing or some new feature for our Relto) a new set of puzzles that will lead to another as yet unseen or possibly a very visible door or doors.
This is true of even of the most basic 1st person shooter where in that case the door you need to pass is mobile and shooting back at you, and the tools/keys you have to open those doors are weapons with various levels of destruction.
When the only tool you have is a hammer everything looks like a nail.
One of the nice things about Uru is there are no guns and the tools are observation and intelligence and sometimes patience.
One of the simplest locks in this type of 3D world is the combination lock where there is some value that’s either written somewhere or is a value that can be gleaned from the environment. By inputting by some method that gleaned value you unlock or open the door
For my age Enobmort I had figured out the second part (that is my hidden value and how to embed it in the environment) and I have worked out the door placement I have even worked out how the player is going to enter this value and the actions needed to completely open the door.
Let us be clear here I am saying this is the door, this is how the player is going to open the door, but I have long been struggling to find a way build the lock the key, and for that matter how to make the door move within the game.
One of my primary problems was finding a way to add a variable into the environment to store the lock combination.
Here we come to my Eureka moment. One of the most basic elements in Blender that we export to the game is the Empty that we use as a place holder for a link in point.
That Empty consists of a Name and a value for its x, y, and z co-ordinates within our 3D environment.
As a link in point, it does not even have a physical appearance in your age it has no colour and no texture.
This makes it a prime candidate to store three variables EmptyX, EmptyY and EmptyZ.
There has to be a way of saying within the game set EmptyX to some value and then within Python and therefore also within the game increment or decrement EmptyY and then test if EmptyX is equal to EmptyY change EmptyZ to some value that represents the state of our door lock or even the door.
Once this is developed as a basic tool we could make lots of puzzles because we don’t even ned this to be a combination lock all this represents is a three value state and a basic test where EmptyX is some value that we want to test combined with some means of changing EmptyY to some new value be that a click or whatever and some test for equality between EmptyX and EmptyZ.
Now my second doorway in Enobmort requires following a route passing through a set number of locations in a particular order and for that I need to think about how I could possibly use this empty as a way of solving that one but that is going to have to wait on another Lightbulb.
[edit]
As a postscript and afterthought I was wondering if we could develop a way to manipulate this with nodes (that I know don't exist yet but could be Python nodes)
So for example in the Blend file we add an empty and give it a name.
Then a clickable node chain that leads to a python node where we select the object from a drop down and we can choose to increment or decrement the x, y or z value.
Then a test node that checks for equality where we can choose which attributes we will be testing.
We could link to a Message node that makes some change to the age.
I hope everyone realizes I am just kicking ideas around here to test the waters for what is possible.
[/edit]