2021-01-16 19:50:20

Hi all,
I've been working on this part of Earwax for a little while now, and it's *almost* at the point where regular folks can start having a bash with it.

The Earwax story maker lets you build interactive fiction without any code. You can add sounds, and you can add messages. You can build different rooms, and link them together.

When you've done, you can build the story file into a Python script that you can build with pyinstaller or whatever.

As a bonus, when you build a story file, the system brings all your sound files into the current directory, so you don't have to worry about your filenames not being portable.

This is still hugely experimental: I'm still making changes to it, and I've got more plans for stories. Chief among them being I need to write documentation for the builder program.

For anyone who doesn't mind playing about in an editor with only automatically generated help (shift / for the hotkeys menu), you can install earwax with pip, and use the

earwax story

command.

For now, I won't be providing any EXEs, since some of the requirements I'm using are a little fragile.

Also, don't try creating reverbs, unless you like crashes.

If anyone does have a look at this, please let me know how you get on.

The preferred way of reporting bugs is through the issue tracker, which is also available from the main menu of the editor.

For anyone who's still here, here's how you get started:

Install earwax with pip, preferably in a virtual environment:

pip install -U earwax

Next, create yourself a new story file:

earwax story new world.yaml

The filename can be changed from world.yaml to anything you want.

You should get the message "Created Untitled World."

Now go in and edit your world:

earwax story edit world.yaml

You will now be in the main menu. Mostly everything else is menu based, or the shortcut keys are lists with shift and /.

Instead of trying to guess what people will be confused by, I'll just let you all batter on with it, and answer any questions as they come up.

Have fun all, and I'm really looking forward to seeing what worlds you come up with, and what suggestions make their way to the issue tracker, so we can make this system something that people can make some amazing stuff with.

Take care,
Chris Norman
Selling my soul to andertons.co.uk since 2012.

2021-01-16 20:28:14

sounds cool.

best regards
never give up on what ever you are doing.

2021-01-16 20:51:36

ha ha, I will play with it.

“If you are not united,” Jamuka said in a low voice, “you can be broken by those of no importance, just like a single arrow. If you unite, you will be as solid as the five arrows and no person will break you.”

2021-01-17 02:12:24

How hard is it to add custom object types, non-player characters and other things?

Qapla' jatlu'be' ghotvam. may'rupchugh seng yIHbej.

Thumbs up

2021-01-17 03:09:31

I might check it out once other people have had a run through. One thing that bugs me is when I'm endeavoring in a creative process and things keep interrupting me. So like, if this thing is just getting started, it might be crashy and stuff, so I'll just wait a while and hopefully the stability will improve enough so that if it does crash, it's not often.

I'm so glad Reaper doesn't crash all that often. If it did, my sound design would suffer because I hate redoing things I've already done.

-------------------------------------------------------------------------------
Wake me up when the world has unfucked itself
Is time really linear?
You can find me on discord: ironcross#8090, though I don't know why you'd want to.

Thumbs up

2021-01-17 09:01:31

@4
If you mean so you could build with them, then I've no idea. I've not thought of it.

If you mean after the fact, then honestly, you could code the whole world in Python. Everything you need is in the earwax.story.world module. You can import everything from that world with

from earwax.story import StoryWorld, RoomObject, ...

.

You could always subclass

earwax.story.RoomObject

, to make it do cool stuff, or just add tasks to your game object.

I could work it so you can select an object type from a list of classes which could be added to a list somehwere. Then if there's only one entry in that list, the system would automatically choose the first one. That way you could just create subclasses, and add them to the list.

@5
I appreciate how annoying crashing can be. That said, if everyone took this approach, the bugs will never get ironed out, and you'd have a chicken and egg problem.

As it stands, the only time I personally get full on crashing, is if I try to add reverbs, which I already warned about. Other than that, it should be fairly robust. Even silly things like removing the hard drive with your sounds on it then loading the game should show an error list, rather than make it have a melt down. Just remember to control s your work.

Take care,
Chris Norman
Selling my soul to andertons.co.uk since 2012.

2021-01-18 15:24:45

the command doesn't work

I lost my only best friend. don't folow me.

2021-01-18 21:17:36

@7
I'm going to need more than that to help in any constructive way mate.

Try with the latest version of Earwax, and let me know how you get on. If you're going to tell me something doesn't work, you need to tell me exactly how: Tracebacks, error messages, what you experience.

Take care,
Chris Norman
Selling my soul to andertons.co.uk since 2012.

2021-01-19 13:13:23

I played around with the story thing, and it works well. keep up the good work...

best regards
never give up on what ever you are doing.

2021-01-19 13:20:46 (edited by Gaki_shonen 2021-01-19 13:26:24)

>>> earwax story new world.yaml                                                                                         
  File "<stdin>", line 1                                                                                               
    earwax story new world.yaml                                                                                         
           ^                                                                                                           
SyntaxError: invalid syntax

I lost my only best friend. don't folow me.

2021-01-19 13:58:52

are you in the command prompt?
You shouldn't be in the python command-line editor

best regards
never give up on what ever you are doing.

2021-01-19 22:58:17

@9
Glad you liked it.

@10, what @11 said. smile

Take care,
Chris Norman
Selling my soul to andertons.co.uk since 2012.

2021-01-20 03:29:52

I built up a little three room thingie. My goal is to have it where you have to kill a bear. So is that even possible right now? Does this thing have a stat based system that can handle health at the very least? Also, I would like the bear to automatically attack the player when they enter the room, perhaps with a slight time delay to allow them to read the description first. I also have an object which I'd like to allow it to restore a bit of health. I named a cluster of blueberries, and it's gatherable before you reach the monster room.

I don't know what to think of this thing yet. I don't dislike it, but I'm not sure if I like it either. I'll have to put the sounds in and all that. Then see what it's like to work my way through it in play mode rather than edit mode. One thing is for sure, I'm not really a fan of the interface. It's... interesting.

One thing I definitely think could help in that regard are sounds for hitting the edges of the menus and when navigating through objects, exits, etc. and there are no more in that direction. Maybe even one for when you land on a heading or an option that does nothing but indicates that you've entered a new section.

-------------------------------------------------------------------------------
Wake me up when the world has unfucked itself
Is time really linear?
You can find me on discord: ironcross#8090, though I don't know why you'd want to.

Thumbs up

2021-01-20 07:24:12

Yeah, i am also not a fan of the interface...
I think it would be a lot better to also enable some form of keyboard shortcuts mensioned while navigating the menu.
Though the actions menu has the keyboard shortcut, it takes time to get to know which shortcut does what.
For example, if i am in the menu and i click on the rename object item for example, i know it's not there, but just take this for example:
IT would be nice if it said something in the lines of quit (q).
just my 2 sents worth...

best regards
never give up on what ever you are doing.

2021-01-20 13:33:13

@13
Those are some great ideas.

Honestly, I'm not such a huge fan of the interface either. I'll update it so you can add empty section sounds, and end of line sounds or something... better names are welcome haha.

As for your bear: I haven't got anything combat related yet. There's been a few posts on the forum lately about there being lots of violent type games, so I kind of imagined a system where it would be for building quests that involved gathering things, more than killing stuff.

That said, if people really want violence, let me know how you think it could work from both a player and a editor's viewpoint, and I'll see what I can do.

What I will definitely be adding, is the ability for exits to allow or disallow based on black and white lists of objects. Probably add an object class too, so you could only get through a door if you were carrying a shovel, or a piece of fruit.

@14
You can code your own actions menu if you're not a fan of the ones I've made. I agree that the setup isn't great, but how would you include all the info? You could conceivably end up with entries like:

Turn left 90 degrees: MOD_SHIFT + A, left hat, joystick button 0, right mouse button

To my mind, that's just too much information. Especially since once people have memorised the hotkeys, they won't be refering back to those menus anyway.

A possible alternative would be to have separate menus: One for keyboard users, one for controller users, and one for mouse users. That seems even more arse-about-face to me, but it's a possibility.

What's your thoughts on this?

Take care,
Chris Norman
Selling my soul to andertons.co.uk since 2012.

2021-01-20 13:45:31

C:\WINDOWS\system32\CMD.exe  terminal  C:\Users\Adel Spence>                                                                                                   
C:\WINDOWS\system32\CMD.exe  terminal  focused  C:\Users\Adel Spence>                                                                                                   
C:\Users\Adel Spence>earwax story new world.yaml                                                                       
'earwax' is not recognized as an internal or external command,                                                         
operable program or batch file.                                                                                         
C:\Users\Adel Spence>

I lost my only best friend. don't folow me.

2021-01-20 14:54:44 (edited by Phoenix009 2021-01-20 14:57:07)

Hi

How do I create a room?

Well, looks like android's better because of customization.
I'll switch to... Oh wait...
Google just nuked Multifinger gestures on my OnePlus! Mad! Mad! Mad! :(((
I'll just go back to my IPhone then.

2021-01-20 15:02:46

@16, do the following :
pip install earwax

best regards
never give up on what ever you are doing.

2021-01-20 17:29:47

@16
So I'm assuming earwax is installed, now you need to make sure the Python scripts directory is on your path.

So if you use a virtual environment, then A: The earwax.exe executable will be in the same directory as your virtualenv.exe one, and B: if you are already using a virtual environment, it should sort out the path for you anyways.

For reference, my scripts directory is:

c:\Python39\Scripts

. That's with Python installed with Chocolatey. If you installed the normal way, it could be

%localappdata%\programs\python\python39\scripts

.

@17
To create a room, once you're in your first room, press C for create. This brings up a menu with rooms, exits, and objects.

For reference, the help menu (shift and /) is where you'll find all the commands, along with their shortcut keys, joystick numbers, mouse buttons, and hat positions (where appropriate).

Take care,
Chris Norman
Selling my soul to andertons.co.uk since 2012.

2021-01-20 22:57:40

um, what do you mean by virtual environment?

I lost my only best friend. don't folow me.

2021-01-21 02:08:56

Any project that you do in python, it is highly recommended that you do it in a vritual environment. What this does is copies over the python interpreter to its own directory, as well as some base packages. When it's activated, any packages you install via pip will not be installed to your main python, but to this environment.

To set one up, create a directory and enter it, then on the command line, do the following:

python -m venv env

Give it a minute, you won't see any output, but when it's done, you'll get back to the prompt. Then you will type something like env\scripts\activate to start the thing. When it's started, you can use pip. If you are running something from git, and you create the environment for it, there's a good chance it will also have a requirements.txt file. Pip lets you get all the dependencies in one line like this

pip install -r requirements.txt

When done, you now should have everything required to run whatever it is you wanted to do. There may be other steps, such as setup.py build and then setup.py install, but those things are outside the scope of this particular question.

To get earwax up in a virtual environment, use the example above to create one, then simply pip install earwax. It'll grab everything else needed. But one optional package that it doesn't grab is pyperclip. I recommend this for the story builder, since you want text free of spelling errors. You can then create your text in an external editor, copy then paste into the story builder's description box. Without pyperclip, you wouldn't be able to do this.

-------------------------------------------------------------------------------
Wake me up when the world has unfucked itself
Is time really linear?
You can find me on discord: ironcross#8090, though I don't know why you'd want to.

Thumbs up

2021-01-21 10:22:19

@13
I've added the two sound options you wanted.

A simple

pip install -U earwax

should get you the latest version.

@21
I'm not sure whether to include pyperclip in the main requirements file or not. On the one hand it's invaluable for editors, but on the other hand, I feel like someone somewhere would complain that it's being dragged about when it doesn't need to be, because their game uses no editors.

Take care,
Chris Norman
Selling my soul to andertons.co.uk since 2012.

2021-01-21 10:26:14

@15 wrt showing shortcuts in menus. how about user gives their preference for what they use (keyboard, mouse, controller), and the menus show shortcuts for their preference. or maybe better, what if the game detects what the player is using and it shows shortcuts based on that?

Thumbs up

2021-01-21 11:41:12

@23
I like the idea of the preference. How would the game guess though? I mean, I might use a controller some of the time, then switch to the keyboard.

Plus, if you're looking for shortcuts, you might want an overview?

Any chance this could be opened as an issue? Much easier to track and have a meaningful conversation about it on there.

Take care,
Chris Norman
Selling my soul to andertons.co.uk since 2012.

2021-01-21 14:00:02

I don't think I was meant to use it, because I can't get it to work.

I lost my only best friend. don't folow me.