The Smorgasbord Project

Smorgasbord is the nickname I gave to the framework I built on my MSc. Computer Science course.

Smorgasbord is defined in Wikipedia as “an extensive array or variety presented together” – and this captures the spirit of the framework nicely. The purpose of the framework is the creation of games and simulations; in general this means many kinds of simulated objects – ‘smorgs’, contained within some kind of game world – a ‘bord’.

a screenshot of a smorgasbord demo
A screenshot of a smorgasbord demo

The subtitle of the project is:  “A framework for increasing the productivity in creating animations, simulations and games for use in online digital learning material’.  In the feedback from the final assessment, the second marker complained that this subtitle does not help explain the project, so I think a short explanation is necessary.

Demo or it didn’t happen!

To a learner struggling to understand a complex topic, there are many occasions, for example in understanding machinery or equipment, that an animation can show change over time, removing the need for explanations by using direct representation.

Simulations allow a learner to ‘play’ with a system to understand its behaviours. Games add goals and achievements which make learning engaging and vivid.

However, the individual tasked with developing learning material is likely to be working in a educational  organisation, quite possibly juggling creation of learning material with other job responsibilities (for example, our developer-user may work in a university department with a tight budget) and may only have rudimentary programming skills.

Simulations and Games take time and skills to make, and skills in devising good leaning material are often different from skills needed to produce them, however more often than not, one person is expected to perform both roles (I base this on extensive experience of working in the sector)

A screenshot of a camera tracking demo in smorgasbord
A screenshot of a camera tracking demo in smorgasbord

In their most generic use Game Engines are designed to help in the creation of interactive applications with real time graphical needs – but what are the specific design issues for a game engine designed to be used in an educational context by people who develop learning material and are (usually) short on time and resources?

The report submitted for assessment of the final project (1.9Mb pdf) goes into detail about how I approached solving this problem, designing a JavaScript game engine that is easy to install, can be delivered to desktop, tablet and mobile, is secure and can be programmed using a library of pre-made components and a simple JSON based domain specific language (DSL). The report also discussed the general issue of frameworks, the balance between productivity and specialisation, issues of performance and security on the web and the challenge of applying standard object orientated software engineering techniques to a weakly typed prototypical  language like JavaScript.

The most important outcome of the project for me, was an understanding of different developer paradigms which I examine in the conclusion. Here is an excerpt from the conclusion:

The goal for the framework has always been to increase developer productiveness, this goal however points to a simplification of the task, to enable the non-professional programmer to ‘program’ the final work.

This approach is known as ‘End User Development’ (EUD) and is a lively research area that combines software engineering and human computer interaction. EUD is a wide subject and there is far too much to cover in this report, a great introduction to the topic can be found at the Interaction Design Foundation website at http://www.interaction-design.org/encyclopedia/end-user_development.html.

One sub-component of EUD is End-user programming: A key quote from the above mentioned article is :
“End-user programming (EUP) is defined as “programming to achieve the result of a program, rather than the program itself” (Ko et al 2011). In EUP, the developer’s goal is to actually use the program; this contrasts with professional programming, where the goal is to create a program for other people to use, often in exchange for monetary compensation.”

This concept is, I believe, absolutely central to the problem that this project is aiming to solve. Individuals working in educational institutions need to be able to tailor software to their specific needs, they need to be able to be creative with the framework. They don’t however need to create a software with the rigour and correctness of a software engineer. They therefore require a different kind of development environment, one focussed on getting the end result quickly, and in short ‘getting the job done’. As learning becomes more and more computerised, digital and online, the gap between the skills of the creator of the learning material and the implementer of the material has begun to open up.

End User Development provides a direction developers working in the field could use and learn from to fill this gap.