Tutorial content
Learn how to build a small arcade game while you’re playing it.
What you will learn
- The basics of Arrowized Functional Reactive Programming
- The concepts behind the livecoding framework “Essence of Livecoding”
- If time permits, how to combine different kinds of media into one program
What we will do
- Develop a small 2d minigolf video game
- Add sound to it
- Possibly add other functionality of your choice, e.g. a web server
How we will do it
- I’ll give a brief overview over the framework
- You’ll get started hands on with some simple tasks to write a game
- We’ll discuss the solutions together
- Depending on the number of participants, you’ll be assigned groups in breakout rooms where you will work together on harder tasks
- I’ll come to each group in a breakout room and support your progress
- We’ll have a lightning presentation (one minute each) of all the games you built
About the framework (preprint abstract)
One rarely encounters programming languages and frameworks that provide general-purpose and type-safe hot code swap. It is demonstrated here that this is entirely possible in Haskell, by faithfully following the motto of live coding: “Change the program, keep the state.”
With generic programming, one easily arrives at an automatic state migration function. The approach can be generalised to an arrowized Functional Reactive Programming framework that is parametrized by its side effects. It allows for building up complete live programs from reusable, modular components, and to separate data flow cleanly from control flow. Useful utilities for debugging and quickchecking are presented.
Your background
Required background
- Basic Haskell knowledge (Monads, data types, records, type classes, simple transformers like StateT and ReaderT)
- Basic Arrow notation (combinators such as >>>, *** and &&&, proc -> do - notation)
Optional, helpful background
- Grasp of basic concepts in Functional Reactive Programming (FRP) such as signals/behaviours, streams, events.
- Basic physics simulation (position, speed, simple collision detection)
- The
gloss
vector graphics library
Preparation
Mandatory
We will begin development from a scaffolding project. You will need to clone it and install certain software in order to participate.
The scaffolding project is found here: https://github.com/turion/essence-of-live-coding-tutorial/
Please complete the installation steps before attending the tutorial. If any of the steps fails, please leave an issue at https://github.com/turion/essence-of-live-coding-tutorial/issues so we can solve the problem before the tutorial starts.
You have successfully set up your environment once you see an interactive window with a ball that starts to move and bounce once you click in it. Please make sure that you complete all the steps until there.
Optional reading material
- https://www.manuelbaerenz.de/essence-of-live-coding/EssenceOfLiveCodingPresentation.html
- https://www.manuelbaerenz.de/essence-of-live-coding/EssenceOfLiveCoding.pdf
- https://github.com/ivanperez-keera/dunai/#reading
Contact
For any technical support or inquiries, please open an issue on https://github.com/turion/essence-of-live-coding-tutorial/issues.
Sun 23 AugDisplayed time zone: Eastern Time (US & Canada) change
09:00 - 12:30 | |||
09:00 3h30mTutorial | Audio, Video & Web Live Coding in Haskell Tutorials Manuel Bärenz sonnen eServices GmbH Pre-print |