I am working on a project called Night Sky.
Being unsure since we are supposed to hold the game page hidden, if actually can share any information about the project at all. So i removed a clip i uploaded and some early background story text.
I am using a text adventure engine that I have written myself during the last month, called ConText.
I have built it around the idea of providing the player with suggestions for valid input instead of guessing words.
Simply put I don't want guessing input to be the challange for the player.
The engine also support the concept of adventure books from the start, so all books are their own folders with my scripts and a internal logic structure.
By simply adding a new structure and the necessary base files, it will appear in the list of playable books on startup.
Here is a simple test when simply walking between the predefined regions in a the game, while not covering anything of the actual gameplay itself, just some early text output
It's always interesting when people use their own self-created engines rather than one of the big established ones, and this looks pretty innovative and exciting. Anything to make it easier for the player to interact with the game is a positive development. I'm looking forward to seeing the end result.
XD That's the story of all of us creating our own system. No matter the result, for sure the joy was there just creating them.
One thing I i thik i learned doing mine, is that trying to stick to an existing program language instead of creating your own from scratch is easyer for you to create and easyer for others to learn.
I have seen your "pastebin" and i can get the concept of external .txt files for each room, isn't it? Do we have a public definition for that ConTextEngine or just private? I'm just curious about systems :)
using a existing language would mean a larger interperter to a larger degree i would say, I am not after making an entire programing language after all.
There is not public defenition since I am not done defining it for my self.
I just added the idea of enter, exit blocks. where I can place script that should run when I load a new room, exit script is run for the old room, enter is run for the new, mean i could trigger the effects like a look action on the room i am entering automatically from any room, rather then being dependant on showing the right text from the action in the room previous room that I just left.
But quick break down.
The engine builds around a few basic ideas.
1. each row contain it's own full Script logic.
2. a tab means the current script is a child to the previous script.
3. before execute each script do a Eval() to determine if its the children should be executed.
4. when a script is executed, all its children will be executed in order if the Eval pass.
5. Each time you load a scene the old scene is released, and the new one, with a new input context is created.
Action(Free text, each word is converted to a context with the previous word as a parent, when your input match the action text and you press enter, all childscripts are executed)
"look boots", "open top cabinet"
Command (defined system commands like present, set, load, inc/dec, system)
* present combines text and when to show it to the user.
* load the scene from the specified folder by parsing the Logic.txt within. "command load Living/CentralCorridor"
* set will set the namedstate type to the value "command set (bool)MyBoolStateName true"
* inc/dec increase or decrease a int state by 1 "command inc (int)MyIntStateName"
* system( back to book menu, exit, debug)
Condition(compare state to value, or state to state)
* will only Eval to true if condtion is true, and only execute childscripts if thats the case.
Automatic Enter/Exit
* Exit will execute before you load the next scene if a exit is declare in the script.
* Enter will execute after a load if the newly loaded scene have it declared in the script.
using a existing language would mean a larger interperter to a larger degree i would say, I am not after making an entire programing language after all.
Oh, it was just an idea that works for me :) During development I had to take many decissions, some of which I would not make now, but i'm happy with the choice I took about stay stick to an existing languaje. ParserCommander that I developed has about 3.000 lines of code, so it's not very large I think.
There is not public defenition since I am not done defining it for my self.
The same works for me. I started to make external documentation about how to use it, and finally I realize that it would take almost more time to do and maintain it than programming it :D
It's nice to make parsers, but also games, so here we are! ;)
Yeah. I am putting a lot of energy into that working. Right now you can't "tab" to autocomplete a word, but I am considering adding that before release. I also considered a way to step between the suggestions.
The idea if I can deliver upon it, we will see further on, is to have more details in the scene you need to notice to solve puzzles by turning dials or fill in some values, information that is accessible trough looking at things in the scene.
There would still be a few use A on B things as well.
But the most important part for me, was to have noone guess words in a given context.
This is not the game I am making for the comp, this is the test project I started ages ago and used the text from that project in my new text engine.
The projects text is in Swedish so most people probably won't get that much from it.
It's a playtrough of one of the paths and this game was designed lika a "Two chocies" style of game play.
While the one I am working for the comp is actually more explore interact style.
One change I am going to fix right now, is a piece of script that executes when you enter a new area.
Previously I had to handle that by adding all the events that should happen on the action in the previous room, but if you can enter a room from four different ones, its four files with almost identical script, I could provide the room one comes from as a parameter as well so I could still adapt the script to directional information or other things.
Here is a pastebin of my current script structure, but it's a living structure and things are not set in stone.
https://pastebin.com/uJpXLAnK
Ok people. There have been much going on, on my end.
Mostly due to the fact that the .Net C# console is slow and terrible that I had to create a Interface for the console logic I have been using, and create my own console implementaiton, the current one is in wpf and thats not great. (passed trough winform in the middle but that had update issues of the components) :S But it is what it is.
LATER i might create my own proper console handler properly using some good rendering opimzation i know. But thats not here or now.
On the good news I managed to create the ui for a optional treadmill you can interact with in game.
With this I have changed so I can print variables into my description files using € tokens to mark their position in the text, and give them different colors, convert them to distances or time.
The next step to put this behind me is to add extension of the set command in my code.
So the easy previous
cmd set (int)Exericise.CurrentDistance 53435
I will extend it to use modifers.
cmd set (int)Exericise.CurrentDistance = 53435
cmd set (int)Exericise.CurrentDistance += 53435
So I have overhauled the engine part that handles presenting text from files to the user. It is becoming better and less confusing, less contradictions.
There is still a issue where I add to many characters in some case and cause a overflow but that should be fixed by tonight.
And then some validation that it turns pages and changes to the next manuscript at the right tome, re adding override of parameters.
But should be kinda fast, in the end this will be faster then trying to fix the original error I had because I ended up in a circular fix, error loop.
After that I can go back to fixing up more details. Doing the mcguffin playtrough, where i randomly pick a room where i have to do macguffin to trigger the flags to end the current night. Then I will figure out the details and form the story and add optionals.
I am not 100% percent sure my self yet.
Except that you are at a research base in the arctics.
I was considering 5 days where you end each day by sleeping, and where you get a ending depending on some of the choices you have done.
But we will see how much I manage to get in to game before the deadline.
Trying to track down a new bugg I am having, and also doing some design decisions in regard of the actual scripting itself.
Changing a few bools to a item keeping a int state to make it possible to know exactly what state the object is in without having to check multiple values
#Codeside
So the press to continue works again, you won't instalty pass on to the first page in the next manuscript when you reach the last page in the previous.
#Gameside.
The logic is comming together, changed the type of some scriptvariables to be int instead of bools, that mean that a object that can only be in one state, in room, carried, locker, worn. Only have one parameter and one name and i check towards the value, this decreased the levels of checks needed to be done. Now if something should not be in the locker, i just need to check that, without also checking if its not in the room, not being carried, not being worn. The problem is that the numbers are not clear. Fortunatly I added the possibility to comment my scripts so I can list the states needed so i can cross referense the numbers with the intended statename. I have considered implementing [const] values essentially declaring them in one place [worn] = 2 and later in script just be able to reference [worn]
But that would require more changes to the engine and I am not there yes.
Also I am going to properly push all code to github, I have forgotten about that, and it would be a damn shame to loose all the code up to this point.
Also I am going to properly push all code to github, I have forgotten about that, and it would be a damn shame to loose all the code up to this point.
Be careful about that. I suppose it is not considered a "public release of the game" if you upload only the code to a public GIT, but ask organization before!
All that things sound exciting and itriguing. I will for sure check also the code if available some time @.@
Git allows a free amount of private repositories these days, so only people invited would have access at this point.
This is more to allow me to be able to back changes or test thing in a different branch and return to the previous state if things doesnt work out as intended. So its in no way a public release. :)
Cool!
At work we use TFS for Visual Studio projects, and sometimes paying Git Lab things.
Many, many time ago I tried GitHub but it only was free for public projects (or at least I didn't found other way), so it doesn't fit for me at that moment and I didn't return there again.
That's a very good idea and professional approach ^.^
So I added one of the more important nodes to keep things interesting.
con rnd 5 in 10 essentially any combination works and can be defined to make a certain piece of code or script run by chance.
If you want to describe the lights flickering 1% of the times a room is visited.
´cmd p add ./Desc/Description.txt
´con rnd 1 in 100
´ cmd p add ./Desc/FlickeringLights.txt
Things are seldom this easy, I had to rewrite a central part handling how i process my scripts, now the validation was done each time a scene was loaded, and each time you tried to execute the command. So it had a 1 in 100 chance to be added to begin with, then 1 in 100 chance to execute if it was added.
Now validation is just done on scene reload, and that is done as soon as any state is changed in the scene. Essentially any action you do.
As soon as you post a snipet of text to someone, instantly you realize 10 different things that are wrong, spelling, structure, personal assumption.
I spent a more time then I want to admit writing the descriptiontext for if you decide to just "eat food" in the pantry, rather then "get food", "prepare food", "serve", "eat food". ^^
I have been very vague about the story and gameplay.
Thats because I haven't known myself, but the things that are here to remain och fixed, are currently this.
You work for a larger company conducting research in the arctics, its a small base with living module areas och a work module, connected with the main hub.
The current workperiod is over and the majority of the crew has left for the mainland, still in the base is you and your coworker Pekka, forming a 24 hour skeleton crew. Due to some disagrement between you in the past, you have decided it was best that one of you work during a 12 hour day period and the other during the 12 hour night period and the rest of the time just stay out of each others way. You flipped a coin and you ended up on the night shift.
The game is essentially walking around the base, solving tasks that are part of your job (data entry from readings in the lab) and handling things that need to be looked after. Like making sure the plumping is ok, that the radio is aligned, that everything is clean before the crew return and so forth.
The idea is to slowly increase a level of paranoia and weird, based on different trigger and random events. But we will see where it ends up. Not much time left.
So on a personal side. I am trying to get into balance with my ADHD medication with support of the doctor and nurse at the clinic. To figure out that my dose is right it has been lowered, and I am now back in the position where I know what I should do but am mentally unable to do it. It's really frustrating.
I will contact them on monday, talking about the effect and if I should return to the old dose.
So progress has not gone as far as I wanted. In theory, I am roughly done with four rooms, but I don't have much in the way of puzzles, and I am still not really sure where I am heading at the moment.
I feel like I should have stayed with my orginal idea "The Addventure" (ADD being the "used in talk" non hyper version of ADHD, in actually called ADHD:Primarly Unfocused)
The idea for that one was simply about trying to find the way to do the things you need to do in everyday situations, but being unable to do them simply because there is no text prompt to do them, untill you can find a game world interaction by looking and doing stuff that catch your attention back to the thing so it come back into focus.
It would have been a really real and personal game, but I feelt it would just be to frustrating to people without these difficulties that it would not be funny to play, get poorly rated, get complaints about being illogical, and in reality it shouldn't be funny, it should just be super frustrating and just make you angry that you can't do something as simple as "cook egg" even if you are in the kitchen and you managed to put the eggs on the table, but for some reason you are now only able to sort trough some old magazines, and cleaning the dishwasher. Before a 2 your youtube binge with out even reflecting on the eggs
:D
Take it easy with that stuff of making the game and take care of you!
About the room numbers, the absence of puzzles, being tempted by other ideas of game, and the sensation of being unfocused not getting clear where is the game heading on, I’m in the same situation and I think that many of those silent writers of this jam (hey, you, yes you!) are also there.
Let’s do what we can with our time, and try to have a good time doing it!
About the game, I told you I like the artic isolated atmosphere, and the best advice I can give you If you ask me, is “stick to the plan”.
It does not matter that at some point there is an option that seems better (which surely there will be). Our most valuable resource here is time, and sticking to the plan is the most careful approach with it.
There will be other opportunities to develop other ideas, and this new one that you have seems cool. It's nice to receive recognition from others for our work, but not at the cost of doing what we don't want just because others don't understand or like.
Yeah I know its to late to change. And I won't I just feelt like it might have been a better decission early on.
I just have no idea how to complete this on time at the moment.
I have added so theoretical endings but not sure how the player should get there since they would need so much logic and choices to end up in those situations. I tried to stay away from a "fixed path" mentality and more that you are a bit more free to do things, but it effects overall states and descriptions.
I think I might have spent to much time on micro actions, where I should add time on major actions, as in,
instead of doing things like "enter data", "review entry" "validate and send", it could simply be the action "work" with textbased feedback.
I know I should not "cry" over this, it's my firstly full designed more complex text adventure, and I don't think any game designer delivered gold on day one.
I also look forward to converting part of this system to a graphical system onwards. You got some config settings, and based on those it can parse space quest esq games or early limted computer point and click, where you have a room view but no clear character like Deja Vu and Shadowgate.
Ok. Being unable to get a handle on writing game logic, I found i still manage to write engine logic. The mind is a mysterious thing.
So I just added the possibility to use states in script for random ranges and target range, so now I can increase a value in script and increase the chance of something happening.
I also add something I wanted for a while the "call" cmd, that allows me to call a specific file and validate, then execute all commands in it.
That makes it possible to make some shared logic for things that might happen in different locations.
Doing some restructuring I finaly added in a state where there is a "end" to the game.
Adding this opened up the idea on how you can reach it and things that might affect the path there.
It now feels like I have a complete product before the deadline.
It won't exactly be what I imagined, but I feel good about it.
It gave me some possibilities to move onwards, the game is now a lot shorter then I intended.
Or the possibility atleast to be short based on player choices, it will still contain multiple possible endings.
Not so much gameplay puzzles as i intended but more clear player choices.
We will see how it turns out.
So...
Done some redesign to be able to release something on time, really slimmed a lot of things down.
That also ment that the exercise machine gameplay logic doesn't make sense anymore.
So now I am in a "kill your darling" moment. A lot of time went into being able to control the levels of the treadmill, visual feedback, energy levels etc, but now it doesn't fit with the easier system aproach implemented. It would just feel like a forced minigame, with not enough clear feedback.
I will remove the scripts as they are now and replace it with some clearer choices you do.
I will keep a back up just like with the insanity system. But that will not make the current the cut either.
The way I look at it now is that this game in comparison is essentially a 7 year olds first atempt to draw with water colors.
I should not demand to much of myself counting in the fact that I wrote the engine, and rewrote the console connection 3 times, had a major cold and other setbacks.
This will make it possible to write the last few things required for the game to be completed by a player, while removing a really big set of potential bugs related to design changes, and possible classing naming conventions that happend due to misstakes in planning.
So this will for instance convert a currently 134 line script with conditions, into something that could be done in maybe 20 or 30 lines.
The functionality behind it still remains to be expanded on in future games, but it will not be part of this game.