From d5ec750c7fdf0b166fec28db77848f4b27669d2b Mon Sep 17 00:00:00 2001 From: Dane Johnson Date: Mon, 24 Jan 2022 11:24:04 -0600 Subject: [PATCH] Update worklog 1-24-22 --- spec.txt | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/spec.txt b/spec.txt index 3ef09de..c2c787c 100644 --- a/spec.txt +++ b/spec.txt @@ -61,7 +61,7 @@ be a decision made on how this will work. I'm leaning towards one of three optio Maybe in the future we can make a frontend for making and playing stories as a web interface, but we could make the interface pluggable as far as the backend is concerned. 2) I build this non-traditional game in a traditional game engine (Godot probably). This ensures cross-platform -availibility. I'm not 100% sure about my ability to use parsers in Godot, but this looks like a good option. +availability. I'm not 100% sure about my ability to use parsers in Godot, but this looks like a good option. 3) I build this as a reactive web page. I know this sounds like a terrible idea, but there are actually a lot of cool image and text transition libraries out there. It does mean setting up something like React tho, which like, just kill me now @@ -70,7 +70,7 @@ Out of the three of these I think the Java thing would be the easiest and I thin 12/26/21 Merry Christmas! Forgot to update this for a bit, but let's talk turkey about what's been done so far. I decided to -implement this as a C++ project for portibility. I know Java might have technically been more portible, but I'm +implement this as a C++ project for portability. I know Java might have technically been more portable, but I'm thinking Godot is in the near future for this and Javascript has something like a FFI so I went for a C project called "peg/leg" (`man peg` weirdly...) to implement the language. I can't recommend the project, it is not copyleft and although the "leg" tool provides a lex/yacc-like interface but it does a terrible job of documenting the peg semantic @@ -78,13 +78,13 @@ actions, (like how the fuck the * operator works or how to properly use the pred up missing (%nterm, $1, yyin). I like PEGs, but if I could do this again I'd just use flex/bison. Where to go from here? I could just start integrating this into a Godot project. Right now I'm making a little command -line driver to test it out. Portibility? This project is gonna be small and I could just use submodules, or just little +line driver to test it out. Portability? This project is gonna be small and I could just use submodules, or just little subprojects in the same project for each interface (Web/Godot/Whatever else). At this point I've written so little code that I think I could just port it to each project as well. For Godot I'm pretty sure I'll have to integrate it with the SCons build that they provide on their website, so I probably can't link to a .so file. 12/30/21 -I tried to migrate to a library "pegtl", which is pegs implemented using the C++ standard template libray. It was a bit +I tried to migrate to a library "pegtl", which is pegs implemented using the C++ standard template library. It was a bit of a bust. The project was very deep, very academic and hard to pick up, especially since I'm not really a C++ guy. Guess I'll just keep chugging with what I've got. @@ -108,7 +108,7 @@ action in the optional as well. Oh well lesson learned. Maybe some day I'll writ Next up is definitely the Godot Native module. I've already read a bit about how to do it, but I know there will be a few hitches here and there. Also I want to convert the base module to use entirely c++ semantics, with the exception of printf since I'm not sure if there is a c++ parallel, which is a bit odd. C++ is weird, no wonder I've avoided using it until now. It seems like c++ -developers spend a lot of time coming up with new ways to do things, then declaring them unidomatic and banning them. I guess +developers spend a lot of time coming up with new ways to do things, then declaring them unidiomatic and banning them. I guess that's kind of a trend with higher level languages as they get older cough Java cough. Regardless, I need to learn it and this is as good of a project as any. @@ -134,3 +134,18 @@ Okay this project is taking a really long time. At this point it was really just to make this into a game! Up next is GODOT, it's that time now. Really got to take care of business. Rust stuff is done and somewhat in, I've left the old library for now. Also the "rust-ffi-demo" should really just be the CLI program now, but it's missing the game logic. I've decided the library won't handle that anyway, I'll try and make the library just read the stories and handle the pages. + +1/24/22 + +So putting the whole project into a C-ABI compatible library was pretty exhausting but it's done now, and I was about half way +through translating that into a Godot Nativescript module when I found the Rust "gdnative" package. It just does almost +everything for you. On one hand I'm upset that I spent so much time on the C stuff but whatever. Rust apparently lets you +add submodules right into your project, so that's all done. + +Do we want to call it a day? Nope. Here's a list of changes +1. Titles and authorship should be in the file. This means that a book is no longer a list of pages. Good thing I changed to +a more flexible peg parser. +2. Options with stat checks and changes should only happen the first time. That or ban circular stories altogether. (Let's hold off on this for now...) +3. Multiple stat check and change blocks per option should be permitted. + +I should really show this to Pam soon, I just want to get one example working that isn't totally embarrassing.