Inspiration
I am currently working on a personal analogy. The main feature of the game is inspired by the logistics portion of the analogy.
The analogy in full is that it connects siloed information to cut through the noise and offer a holistic overview by mapping the interplay between the hearing process, parts of the ear, hearing aids, and assistive devices like directional microphones to road systems such as Germany's Autobahn, cars, trucks, buses, streetcars/trams, airplanes, warehouses, grocery shopping, and lean logistics vs bulk logistics.
What it does
The objective of the game is to transport people from start to destination on a grid representation of a city. The player must transport people through the city using cars or buses. Some roads have potholes and player can either fill them in or avoid them. Some levels have a 2-lane road system setup like Germany's Autobahn system, in which a car switches to the left lane to pass slower vehicles quickly before switching back to the right lane.
How we built it
We used Javascript to code the frontend and backend. We used React to build the grid. We used Mui Material Icons, Google Material Symbols, and Font Awesome for the icons. We used Pathfinding.js's A* implementation to find a path.
We may add SQLite DB later. It's not integrated right now.
Challenges we ran into
- App configuration for working together with multiple developers: Devvit is currently setup for playtesting one app per developer. Playtest is the ability to see a working version of code in the web browser.
- Teammate was not able to playtest the app and communicated the issue 1 week in.
- We worked with support in Discord and setup a local devvit.json file that works on my machine, only to run into a classic case of "This works on my machine but doesn't work on their machine". I could have configured this wrong or did not understand the workflow setup -- on my end, subreddit with multiple app names is supported but on teammate's end, they probably couldn't access the subreddit and so need to modify name and subreddit fields.
- Due to all this, teammate worked on the UI without being able to playtest UI in action. We later switched responsibilities and I worked on frontend while he worked on backend.
- Decision paralysis: I started this project with a vague idea of the game based on my inspirations. When I started on developing paths logic, I easily implemented a simple working version involving one path. Then, I had multiple ideas on how to implement multiple paths for a grid and a 2 lane system, taking me 2 days. Later on, I decided to move on and switch back to a more simpler implementation and handed off development to my teammate. We'll revisit this feature after reviewing PR and when more work has been done on the game. Update: PR reviewed. See https://github.com/denqiu/flowtris/issues/4#issuecomment-3272882993. Multiple paths code added but kept to the side. It's not currently used. We will keep path mechanic simple for now and integrate later when my vision on the game becomes clearer. In other words, we're running out of time for this hackathon. We will not make changes until after judges finalize their decisions. Or probably set aside a separate branch or fork.
- Level mechanic in React: It was hard to read and connect the dots. There was a lot going on and it was overwhelming at first. It took me several days to get the hang of it, which delayed development time.
- Code changes: Changes tend to be submitted to a PR all at once, in one commit, rather than one issue/todo per commit. There were a lot of complexity going on rather than small simple, working changes. For example, path mechanic. There was complexity involved with multiple paths in the PR. I decided not to integrate it for now. I would prefer to work with the simple working version and build from that. But it's not bad. At least we have a very clear, working goal in code to compare against.
Accomplishments that we're proud of
This is my first time developing a game, a project, under a 2-week deadline. We worked with very short time constraints and across different time zones, USA and India. I am happy at least to move something conceptual to a product. It's ok that it is at a prototype stage.
What we learned
- QA/PR review: Testing UI in detail and noting down issues to resolve. For example, see Issue 2.
- Frontend: The flow of things in React when code keeps growing. It feels like spaghetti code and there's a lot of moving parts, making the experience feel complicated.
- Communication: Better communication for app setup on teammate's side. If it was reported earlier, we would have more time to resolve this. Teammate then would be able to work on frontend code and playtest it. Teammate might create less issues for QA in Issue 2 although I consider more issues not a bad thing if it led to more scrutiny and more attention to the UI.
- Code changes: We did not run into major issues but wanted to keep this in mind for future development. Try to keep changes to one issue or todo per git commit. Make small changes and keep things simple. Test. If all goes well, then that is the moment we can decide to expand and add more complexity. Starting out with complexity is not really the best idea in development.
What's next for Flowtris
There are more additional features to implement. This involves integrating Phaser.js into React. The game will incorporate features based on Sandtrix and Suika. See https://github.com/denqiu/flowtris/issues/3.
Built With
- font-awesome
- google-material-symbols
- javascript
- mui-material-icons
- pathfinding.js
- react
Log in or sign up for Devpost to join the conversation.