Why and how I wrote my own slideshow presentation software

Slideshow meets Game Engine

I’m not too fond of Powerpoint

TL/DR:

  • user experience: bad, inconsistent across platforms
  • inconsistent format when changing computer or OS or app or version
  • low productivity compared to what I am used to
  • the typical style of presentations is dull
  • lacking presenting features, I would like to see

I want something different

My primary uses case and needs — let’s outline them with some bullet points:

  • simple slides with bullets
    - consistent formatting inside a presentation and across all platforms
    - easy slide creation with Markdown formatting
    - text files: enable version control tools such as git
  • complex animations to illustrate complicated stuff
  • easy to take with me and present
    - no Powerpoint, no “Player” software needed
    - better than a simple PDF
    - clicker support
    - virtual laser-pointer support
    - draw mode
  • easy to share
    - no Powerpoint should be required
    - better than mere PDF, with PDF as a fallback
  • INNOVATION: Multi remote presenter mode! (“multiplayer mode”)
  • Support for non-linear presentations

Jonathan Blow’s approach

So, a few years ago, I watched Jonathan Blow from Thekla, Inc. create his own slideshow program on Twitch, for reasons similar to mine. Wow, that was refreshing! Jonathan is an indie game developer with quite a following and gives lots of talks — he clearly has a need for great presentation software.

How to write your own slideshow?

But how would I go about writing my own presentation software then? This lead to many questions and considerations:

  • An executable?
    - For which platforms?
  • How to support multiple platforms?
    - Cross-compilation?
    - Or web?
    - Or both?
  • What programming language to use?
  • A framework or low level yet still cross-platform?
    - OpenGL? What about audio, then?
    - SDL?

Godot engine to the rescue

This is where the idea of using a game engine crossed my mind. A game engine is a framework, usually combined with a GUI editor, to create computer games. Typically, the most common platforms are supported.

Introducing: Bûllets

Here is what I came up with:

  • Bûllets is a slide show software powered by the Godot game engine
  • It helps you create beautiful presentations on all platforms (Windows, Mac, Linux) that are 100% self-contained and will look and feel the same on all platforms
  • Using plain text with optional easy markup for content makes slide creation a breeze
  • If you know how to code, you can create the most complex, interactive animations with sound effects - or even embed Tetris into your slides.
  • You can share Bûllets presentations either as native programs or publish them to the web
  • PNG/PDF export is supported, too if you need a PDF version
  • Bûllets presentations are version control friendly and allow for GitHub collaboration
  • And yes, it works with your favorite wireless clicker; it even comes with a laser pointer!
  • It is a proof-of-concept
  • It is also a hack
  • You create the slide contents, bullet points, etc. using Markdown
  • Yet, you have a graphical editor
  • The editor is the Godot editor, a tiny download that doesn’t need to be installed and runs on all platforms.
  • The editor is customized for slideshow presentation editing
  • When done, you export the presentation
    - into standalone executable programs for Windows, Mac, or Linux
    - or to HTML for use in the browser
    - if you know how to upload the HTML version, e.g., to GitHub (free), then you don’t even need to take the presentation with you

Showing off: Platformer with touch controls in the slideshow

With regards to interactive presentations and complex animations, this is where a game engine really shines. Below you see a demo of a fully functioning 2D platformer mini-game running inside a slide of a presentation. It even detects when you’re on a device with a touch screen — and displays touch controls:

Supporting clickers, controllers, and virtual laser pointers

Of course, Bûllets supports “clickers”, those little remote controls. Being inspired by the computer games context, you can also control your slides with your favorite gamepad or game controller.

Drawing on slides!

To add interactivity, and for illustrating areas of your slides, Bûllets lets you draw on slides:

Embedding audio and video

Here is an example screenshot of an embedded video:

The innovative finale: multiplayer mode!

This feature is part of the reason why I created Bûllets: Especially these days, where we have to present from home, I was faced by a struggle:

So, is this for everyone?

Probably not. Most people shy away from using anything but Microsoft Office and might not have my specific needs or have a higher pain threshold than I have. Also, as with all new tools, there’s a bit of a learning curve involved with it, you’d have to learn to get around in the Godot editor, and I cannot provide support for it.

--

--

Software engineer turned researcher, AI heavy data scientist with strong computer science and electronics skills.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Rene Schallner

Software engineer turned researcher, AI heavy data scientist with strong computer science and electronics skills.