@ -6,8 +6,6 @@ A fantasy western RPG with an immersive and natural dynamic dialogue system powe
# Important Building Steps and Contribution Notes
# Important Building Steps and Contribution Notes
If you add new devtools functionality like a new keyboard button binding that prints stuff to help with debugging, or flycam features, or anything, MAKE SURE you add a description of that functionality and how to access it in the function make_devtools_help() so it's just clear what debugging tools there are. Document it please.
If you add new devtools functionality like a new keyboard button binding that prints stuff to help with debugging, or flycam features, or anything, MAKE SURE you add a description of that functionality and how to access it in the function make_devtools_help() so it's just clear what debugging tools there are. Document it please.
In order for exporting to work, the "exclude from view layer" tick to the left of the eyeball on each object has to be unticked, or else all animations will be frozen. @TODO fix this in the future
Every time you checkin/clone the project, make sure to call `blender_export.bat` at least once! This will auto-extract `art\art.blend` and run `art\Exporter.py`, thereby baking, validating, and exporting all the assets and the level.
Every time you checkin/clone the project, make sure to call `blender_export.bat` at least once! This will auto-extract `art\art.blend` and run `art\Exporter.py`, thereby baking, validating, and exporting all the assets and the level.
When editing Exporter.py in either the blender editor, or in a text editor in the repo, you have to continually make sure blender's internal version of the script doesn't go out of date with the actual script on disk, by either saving consistently from blender to disk if you're editing from blender, or by reloading from disk in the blend file before each commit.
When editing Exporter.py in either the blender editor, or in a text editor in the repo, you have to continually make sure blender's internal version of the script doesn't go out of date with the actual script on disk, by either saving consistently from blender to disk if you're editing from blender, or by reloading from disk in the blend file before each commit.
assertto_return==None,f"Duplicate thing that starts with '{starts_with}' found in {name_of_overarching_thing} called {thing.name}"
assertto_return==None,f"Duplicate thing that starts with '{starts_with}' found in {name_of_overarching_thing} called {thing.name}"
to_return=thing
to_return=thing
if required:assert to_return!=None,f"Couldn't find thing that starts with '{starts_with}' as a child of '{name_of_overarching_thing}', but one is required"
assert to_return!=None,f"Couldn't find thing that starts with '{starts_with}' as a child of '{name_of_overarching_thing}', but one is required"
#cProfile.run("export_everything") # gave up optimizing this because after reading this output I'm not sure what the best direction is, it seems like it's just a lot of data, specifically the images, is why it's slow... I could hash them and only write if the hash changes but whatever
{enum: Devil, dialog: "You will fall!", to: Angel}
{enum: Devil, dialog: "You will fall!", to: Angel}
{enum: Angel, dialog: "Perhaps. And then I will rise as He has, from the corpse and ashes, the sun rises.", to: Devil}
{enum: Angel, dialog: "Perhaps. And then I will rise as He has, from the corpse and ashes, the sun rises.", to: Devil}
{can_hear: [PreviousPlayer1, Tombstone]}
{enum: PreviousPlayer1, dialog: "What should I be doing? And where am I?", to: Tombstone}
{enum: Tombstone, dialog: "Daniel over there, the fat cowboy gluttonous on his own self image, must change his ways by nightfall or he'll perish.", to: PreviousPlayer1}
{enum: PreviousPlayer1, dialog: "good. Screw that guy", to: Tombstone}
{enum: Tombstone, dialog: "Then you shall relive this day forevermore. Yikes!", to: PreviousPlayer1}
{enum: PreviousPlayer1, dialog: "Who are you? Where am I?", to: Tombstone}
{enum: Tombstone, dialog: "Questions questions, answers answers.", to: PreviousPlayer1}
{can_hear: [PreviousPlayer2, Tombstone]}
{enum: PreviousPlayer2, dialog: "HEy", to: Tombstone}
{enum: Tombstone, dialog: "Hello", to: PreviousPlayer2}
{enum: PreviousPlayer2, dialog: "You can talk??? WTF", to: Tombstone}
{enum: Tombstone, dialog: "Can't you?", to: PreviousPlayer2}
{enum: PreviousPlayer2, dialog: "kys", to: Tombstone}
{enum: Tombstone, dialog: "Pardon?", to: PreviousPlayer2}
{can_hear: [PreviousPlayer1, Angel]}
{can_hear: [PreviousPlayer1, Angel]}
{enum: PreviousPlayer1, dialog: "fjdsklajf", to: Angel}
{enum: PreviousPlayer1, dialog: "fjdsklajf", to: Angel}
{enum: Angel, dialog: "Cryptic gibberish upon me, is casting a stone upon God", to: PreviousPlayer1}
{enum: Angel, dialog: "Cryptic gibberish upon me, is casting a stone upon God", to: PreviousPlayer1}
.prompt=CHARACTER_PROMPT_PREFIX("Previous Player 2")"random person, just passing by",
.prompt=CHARACTER_PROMPT_PREFIX("Previous Player 2")"random person, just passing by",
},
},
{
.name="Tombstone",
.enum_name="Tombstone",
.prompt=CHARACTER_PROMPT_PREFIX("Tombstone")"unassuming melodramatic poetic tombstone that unexpectly can speak with the player. Your goal is to instruct the player that in order for Daniel to survive by nightfall, the player must change his ways. The reason why he's going to die when night comes is because 'all things die in the end, don't they?'"
// @TODO unhardcode this, this will be a description of where the character is right now
// @TODO unhardcode this, this will be a description of where the character is right now
//AddFmt("You're currently standing in Daniel's farm's barn, a run-down structure that barely serves its purpose. Daniel's mighty protective of it though.\n");
AddFmt("You're currently standing in Daniel's farm's barn, a run-down structure that barely serves its purpose. Daniel's mighty protective of it though.\n");
AddFmt("You and everybody you're talking to is in a small sparse forest near Daniel's farm. There are some mysterious mechanical parts strewn about on the floor that Daniel seems relunctant and fearful to talk about.\n");
- Polygon and circle collision with cutec2 probably for the player being unable to collide with the camera bounds, and non axis aligned collision rects
- Polygon and circle collision with cutec2 probably for the player being unable to collide with the camera bounds, and non axis aligned collision rects
- set the game in oregon (suggestion by phillip)
- set the game in oregon (suggestion by phillip)
- Room system where characters can go to rooms. camera constrained to room bounds, and know which rooms are near them to go to
- Room system where characters can go to rooms. camera constrained to room bounds, and know which rooms are near them to go to