Cross-posted from tumblr

I’ve started git tracking my work on metamorphoser v2 so I can keep a record of how much work I’ve done and when. It’s been super useful to keep my motivation up! I’ve been tweeting about my work on v2 over on my twitter but I think I might start doing more long form updates here - so here’s the first one!

I started git tracking the new version of the script on 14/11/17 and it was the best decision I ever made. Now whenever I add new writing (or purge unneeded writing) I will always have a record of the changes I’ve made. Since I started git tracking the project I’ve made 90 commits! And the word count has increased to nearly 40k.

So, this week I re-added all the game files from v1 to the new repo that housed all my planning files and new game script so those can be git tracked as well. I also set up a remote repo hosted on gitlab so that when I move development back to my PC (I’ve been working on my Macbook since starting my coding course in March) I’ll be able to synchronise development between my devices (provided I can figure out the Windows command line…).

So in terms of actual writing that’s been finished, I’ve almost completed the doctor route. I’m just working on a short timeskip epilogue (for which I will need aged up sprites for the doc and Carter!!!) and then it’ll be done. On a whim today I added some 4th wall breaking features to a scene in the doctor route where the doc telepathically links with Carter:

When he controls Carter’s arm with his mind, the mouse will move across the game screen. If playing on android, the device will vibrate.

N "I feel more tingling, spreading through my whole arm. It’s not painful, but it feels strange."
# move the cursor to these coords with a duration of 0.5 sec
$ renpy.set_mouse_pos(550, 400, 0.5)
# make the device vibrate for 0.5 sec (if the device supports it)
$ renpy.vibrate(0.5)
N "Then, my arm starts to move."
$ renpy.set_mouse_pos(500, 200, 0.5)
$ renpy.vibrate(0.5)

Then, if you’ve played through his route before you’ll get this bit of dialogue:

# persistent variable we set when doctor route is completed
if persistent.doctor_end:
    Hamzah "I sense something that has been here before…"
    Hamzah "But how is that possible?"
    Hamzah "Are the wormholes also gateways to another timeline…?"
    N "Doc, what the hell are you talking about?"

Today I also did something I hadn’t thought to do before and that’s to split the script up into multiple files!! Since the script has had a lot of new additions it grew to over 5000 lines and was very annoying to navigate. Since renpy compiles your script before running you can just split it up into multiple files without having to do any other config since it looks for any file ending in .rpy in your game directory. I ended up splitting it up roughly according to which route each segment was for.

Another neat thing I hadn’t thought to add before is changing the colour of text depending on whether the player has seen that text already or not. It’s done by simply adding this code to your screens.rpy:

window:
   id "window"
   has vbox:
       style "say_vbox"
   if who:
       text who id "who"
   # change the colour of the text if seen
   if renpy.is_seen():
       text what id "what" color "#ffdada"
   # otherwise, use the default colour specified in options.rpy
   else:
       text what id "what"

Finally, a bit more on git. Since today was the first time I’d pushed a renpy project to a remote repo I learned a few things about what to put in the .gitignore, mainly by checking the renpy repo on github. Renpy makes a bunch of cached files that you don’t need and probably don’t want to commit to version control so I added this to my .gitignore to exclude them from future commits:

*.rpyc
*.rpyb
*.rpymc
*.pyc
*.pyo
*.bak
.DS_Store
log.txt
errors.txt
traceback.txt
game/cache
game/saves

.DS_Store isn’t actually specific to renpy - it’s a file made by macOS: “In the Apple macOS operating system, .DS_Store is a file that stores custom attributes of its containing folder, such as the position of icons or the choice of a background image. The name is an abbreviation of Desktop Services Store, reflecting its purpose” from wikipedia. Since it’s system-specific you shouldn’t include it in a remote git repo especially when collaborating with others.

And that’s it for this week! I’ll see if I can get into the habit of writing up my work here every week or so!