Inspiration
I was inspired by the idea of simulating a lunar base network in a fun and interactive way. The Moon has multiple bases in both fiction and real-life plans, and I wanted to create a project that could visualize connections, communications, and challenges between them. Using a retro terminal interface seemed like a fun way to combine coding with a creative simulation of lunar operations.
What it does
LunarHorizon allows a user to add lunar bases, connect them with specific distances, and send messages between them while checking for network connectivity. I implemented a dynamic ASCII map that shows the bases and their connections in a retro text style, as well as a canvas-based visual map that provides a more modern, graphical representation. The project also simulates random network issues, reflecting the challenges of communicating across the Moon, and includes individual base terminals where messages can be received and viewed.
How we built it
I built LunarHorizon using HTML, CSS, and JavaScript. HTML provides the structure for the terminal and canvas map, while CSS gives the retro terminal aesthetic with readable, visually appealing text. JavaScript handles all the interactive logic, including processing user input, managing state across multiple screens, generating ASCII and canvas maps dynamically, and simulating network issues. I also implemented a messaging system that tracks messages sent and received by each base, and ensured the interface updates in real-time when new bases or connections are added.
Challenges we ran into
There were several challenges I faced during development. Making the ASCII map readable and properly spaced as more bases were added was tricky, and I also needed to manage dynamic user input without breaking the terminal interface. Ensuring that the “back” command reliably returned me to the menu from any screen required careful state management. On the canvas map, avoiding overlapping connections and labels as the network grew was a challenge, and I worked to make random connection issues noticeable but not disruptive. Handling unexpected input formats and keeping the terminal interface intuitive despite multiple features were additional hurdles I overcame.
Accomplishments that we're proud of
I’m proud that I was able to successfully combine a retro terminal interface with a modern canvas map. I implemented a fully functional messaging system with connectivity checks, created a dynamic map that updates in real-time, and designed a terminal interface that is both intuitive and interactive. The project demonstrates both creative and technical problem-solving, and I’m happy with how the system feels alive and responsive to user actions.
What we learned
Through LunarHorizon, I learned how to manage complex state across multiple interactive screens and synchronize ASCII output with graphical canvas visuals. I gained experience handling random events in JavaScript to simulate network instability, and learned how to validate and process user input effectively. The project also taught me about designing an interface that remains clear and user-friendly even as new features and complexity are added.
What's next for LunarHorizon
In the future, I plan to make the network more dynamic by automatically connecting new bases to nearby ones and improving ASCII map spacing for longer base names. I also want to add resource or energy management systems for bases, implement mission scenarios like rerouting communications during solar storms, and make the canvas map fully interactive with draggable bases and highlighted connections. These improvements will make LunarHorizon even more engaging and realistic as a lunar base network simulator.
Log in or sign up for Devpost to join the conversation.