Philemon Troy and the Student Body Pageant
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.



Philemon Troy and the Student Body Pageant is a point´n´click adventure/dating game in the vein of Leisure suit Larry. The version on GitHub will be censored to comply with TOS, the code and functionality will be the same as the full version.

Disclaimer: THIS IS A VERY BAREBONES GAME PROTYPE RIGHT NOW. DON`T DOWNLOAD THIS EXPECTING A GAME ANYWHERE NEAR COMPLETION. It´s basically a cube gliding around on a board, talking to other cubes :) Project is currently on a bit of a backburner, developmentwise, waiting for Godot 3.0 docs to mature, so I can migrate the project. The code might still be interesting to you, if you want to make the same type of game, hence why I´m publishing it. To follow progress on art, go here:

Will not work on Godot 3.0! Tested and playing fine with 2.3 and 2.4 beta.

This Trello board is updated more frequently, if you want to track progress towards next release:


  • Replace testcube with actual meshes imported from Blender

  • Implement schoolbag, calendar and map UI´s

  • Implement event system

  • implement save/load system

  • more cleanup and reorganizing, as always...


  • code my own dialogue editor. Writing json manually gets heavy after awhile, and I can´t find a dialogue editor that fits me


  • Make sure that UI dialogues are really blocking



So I keep adding and refining the dialogue system to better accommodate the event system I have planned. I had a plan to follow, to have the event system done by the end of august, but I would honestly rather make a robust system than hurry this on..

There have been numerous small changes since the 20th. I just haven´t update the readme.

I have started to document my code, dialogue system docs below(incomplete, some parts not implemented yet):

Now I have two weeks off work. I want to mainly work on replacing placeholder graphics with something more presentable, but I will naturally have time to finish code functionality, too (finish dialogue system, code event system). The goal to have a playable demo to present to online communities by the end of september still stands. This will be the first official alpha release (0.1.0)


Functional map UI (clicking on map location will load respective scene)

2017/08/17 b (last update below was after midnight on the 16th:)

even more prepwork for events system

  • store eventData in eventOverride
  • added items to gameEvents.json for cancelling or not not showing up for event, to enable repercussions
  • added global gameVars dictionary to hold variables affected by dialogue decisions
  • added conditional to replies in to alter eventData
  • map_ui now emits a signal "exit_ui", which is emitted when clicking on a map item, closing the UI open
  • the above called for making a ui_exit() function in, as to not duplicate functionality

NEXT is making map selection actually load a new scene. Event system groundwork is really starting to look more robust. It really helps giving this alot of thought beforehand, then again it might fail miserably as soon as I hook everything up... but I´m sure I´ll be able to fixt it up, if that happens.. I think :P

all this is basically the result of a few boring hours at work :)


more prepwork for events system:

  • add global.eventOverride
  • created charData temp cache in, to be able to override charData without overwriting it
  • load gameEvents.json into global.eventData on ready
  • check if event or not when global.load_scene()

I really think I need to get loading new scenes from map working before I continue, so I have something to work with


Preparations toward event system

Been hard to focus, having to look for a new apartment. Luckily I was ahead of schedule before, so..

Alot of small changes in code, since my anxiety made it hard to work on bigger tasks. I did have the energy to think bout the upcoming events system though, and a good json structure for what I want to do.

Basically events system will be based on different types of json files, with default values and overrides which can also be modified by relationship to characters. I think this makes for a dynamic system without making it too complex, but we´ll see when I try to actually make this work well in the gamecode...

  • new events folder
  • all events have their own json
  • events can be one-offs or persistent
  • each character has 5 default dialogues, depending on relationship value in charData
  • charData holds default character dialogues
  • locationData can override default dialogue
  • eventData holds info on events that override default dialogue in both charData and locationData
  • events can then change default dialogue (and other stuff in game, of course) depending on outcome also
  • calendar json controls event notifier system that pops up to the left of the screen, and the calendar

all this is still very much preliminary and might be changed, although I think it´s mostly in place. NOTHING IS HOOKED UP TO GAMECODE YET, though. This is all prep work. That will be the task for this weekend.


all submenus now go away on ESC. made submenu UIs blocking, so game freezes when submenus are showing changes in, dialog is now dialogBox which is more descriptive found out that I´m being kicked out of apartment, yay...


Finally got the day/night cycle functionality working. When clicking on the calendar, NPCs and Objects (will) appear in positions based on location.json I´m sure some bug will creep up, but so far it looks good. Currently doesn´t really do much since location.json values are mostly copied from day to day, but Ellie will move position going from morning to noon, so - working good enough! ;P


Major (long overdue) reorganization of nodes and folder structure. Tedious job that needed to be done to make future additions easier. With this, I think I can get back to implementing the day/night cycle functionality.


Finished transferring NPCdialogue to global.charData

spent an hour chasing down a bug related to trying to set NPC identity data that wasn´t there...

Sanitized by creating two container vars for common dictionary searches

branch = talkData["dialogue"][global.charData[npc]["branch"]] replies = talkData["dialogue"][global.charData[npc]["branch"]]["replies"]

Looks a lot less convoluted now

next, make time progression actually do something, ie

  • reload scene with data from location.json (which characters present, position, dialogue, branch)

next challenge (which I should have thought about)

  • npcs should have different dialogues depending on time of day, meaning global.charData["dialogue"] should be a 4 item array. Needs to be referenced correctly in as well..


prepared for day/night cycle functionality

  • added "day", "month", "weekday", and "time" to gameData, which I moved to
  • date label now dynamically updates with gametime progression
  • click on calendar to progress time. Nothing happens, for now, except date label updating

created charData dictionary to hold json and branch info of all characters. Not hooked up to yet..

started working on schoolbag and map UI. Just placeholder graphics and they won´t exit on esc yet..

also moved load_json() func to as it won´t be used by the dialogue script only



  • start and settings menu
  • scene switching

Sanitized scene panel and script

  • renamed nodes to better reflect their function
  • grouped nodes under appropriate container
  • went through and renamed variables to follow camel case convention.


  • Moved all player script functions to from, further modularizing the game
  • Cleaned up code, renamed "ui_elements" node to just "ui"
  • created to handle higher level game functions, like quitting game/calling game menu/scene switching (for now)


The last week has been spent (apart from a weekend on the French riviera:)extracting the dialogue system used in PhilTroy, expanding and modularizing it (for easier reutilization in other games) and putting it back into PhilTroy. The end result is called "Ape´s Dynamic Dialogue System" (or ADDS for short) This is an important step, which at first glance doesn´t seem all that significant, but the new features of this system are:

  • NPCs remember what they´ve talked about before
  • You can flip through replies and select reply with the keyboard
  • You can alter game variables through dialogue choices
  • Dialogue paging allows for longer dialogues
  • custom talk animations per dialogue
  • custom backgrounds per dialogue
  • all dialogue functionality moved to its own script
  • code was cleaned up for better readability

You can check the junkheap repository > extended dialogue system for full feature list.

ADDS will be made into a plugin, but that´s for later.


Implemented simple turn and move towards functionality. still some polishing needed. Player should move towards NPC before talking. Turn speed should be relative to distance to target (with min and max speeds), and if close to target, player should turn without moving. Not hard to do, just need to take the time.


version 0.0.2 alpha

  • created a start_dialogue() function and moved over everything from load_json() that had nothing to do with actually loading a json (I might want to use it for other things tha dialogue...).
  • started implementing RMB look at-functionality
  • created a kill_dialogue() function since functionality is used more than once
  • finished converting Player, NPC´s and objects to instanced asset scenes
  • ESC to exit Phone UI and restore UI icons
  • General code cleanup and reorganizing


First alpha, let´s call it v0.0.1 :) Very basic functionality, and placeholder graphics (or programmer art if you will;)


Move player around with mouseclick (be the testcube!) UI hover effects Dialogue system based on json simple object and character collision


LMB-click to initiate conversation RMB-click to look at things, for more detalied descriptions ESC to exit all UI dialogs CTRL+Q to quit game