Adamara: Harsh Waters
May 2021 - Ongoing
Made for cultures interactive
Role: Lead Programmer / Freelance Full-stack TypeScript/WebGL Developer
Web Development, JavaScript, TypeScript, WebGL, PixiJS, Frontend, React, Styled Components, Node.js, Express, Sequelize, MobX, mobx-keystone, Socket.IO, HTML / HTML5, CSS, Mobile Development, Network Programming, Databases, MySQL, DevOps, DigitalOcean, Docker, CapRover, Heroku, Sentry, Monitoring, New Relic
Adamara: Harsh Waters is a real-time collaborative game editor and an isometric RPG/adventure game. In combination, they are used in workshops for political education with young people.
As the lead programmer I planned and set up the technical foundation and architecture of the project, worked on almost all parts of it, distributed tasks to a team of 3 other programmers, regularly reviewed code on pull requests and served as a bridge for production and other teams.
In a bit more detail, some of my tasks included:
- Leading the programming team:
- Planning and distribution of tasks for a team of 3 other programmers.
- Regularly reviewing code on pull requests.
- Choosing which technologies and libraries to use.
- Setting up a lot of project architecture/infrastructure, including:
- Base project for both client and server.
- The base versions of the map editor and the game.
- The networked data pipelines for realtime-collaborative editing.
- Undo/Redo.
- Localization.
- Optimization in all parts of the project, e.g. game performance, editor performance, preloading, loading times and thumbnail generation.
- Implementing isometric depth sorting for arbitarily-sized entities on the game map, including moving, overlapping and flat entities.
- Adding features to all sub-editors and the game.
- Bugfixing in all parts of the code.
Key features of the editor/game:
- An isometric RPG/adventure game playable on computers and mobile tablets.
- A game editor, used both by the internal production team and by workshop participants.
- Real-time collaborative editing support in all parts of the editor: Multiple people can work at the same time on the same part, seeing each other's changes instantly.
- Two main editors: A map editor, and a node-based editor to set up game logic without writing code.
- Several smaller editors to add tile assets and animations, to create and edit characters and items and to configure several other parts of the game.
- Full localization of both the editor and the game content.
- Undo/redo in almost all parts of the editor.
A workshop usually works like this:
- The participants play the game.
- Afterwards, they discuss their experiences in the game in the group.
- The next few days of the workshop, they use the editor to create new experiences in the game editor (either as an add-on to the game, or to be played as a standalone), which can then be played by other people.