GeoQuest
I like playing with shiny, new things; technology, games, frameworks. Often my employer does not share my passion for trying the latest versions of our tools so I experiment on side projects. Something about keeping everything running and making money. I dunno.
My latest side project is to test out the new Ember Octane edition. I also wanted to create a new interactive Geocaching puzzle. I thought it would be fun to combine both into one.
A long time ago (2009) I wrote an Interactive Fiction puzzle I named GeoQuest. You can play here if you would like. If you play, you should enter the command "switch mode" to play in game mode where there are no physical geocaches to find (unless you are in the central Ohio area). That game is fun but I always wanted to add a graphical front end to it.
Anyways, back to the present, GeoQuest II or what I'm calling it now, GeoQuest Octane, is an experiment combining some wonderful Ember addons and regular HTML elements to form a playable online game.
I've started to put up my GeoQuest Octane Proof of Concept online.
Here are some of the libraries/addons I'm currently using:
- ember-animated
- ember-concurrency
- Concretejs - small canvas library - not sold on it yet
I've played several board games and simulation games and Ive always thought that games that used hexagons for a board represented movement better than simple x/y coordinate maps. I didn't know how to represent that in code very well. Then I found a wonderful site that helped explain the concepts very well. Amit Patel’s Hexagonal Grids page is a wealth of information.
The concepts on Amit's page has helped me achieve some of the things you see on my proof of concept page. Including:
- Displaying a hexagonal display on a HTML canvas
- Path Finding - Finds the shortest route on a map considering obstacles. The ship knows the shortest path to take when you click on a target map. It does this in about 1 - 2 milliseconds using the A* (Astar) method.
- Patrols - Using the path finding, I was able to make the pirate ship "patrol" a given set of waypoints automatically. I gave it 4 or 5 waypoints and it figures out how to get there automatically.
- Enemy "Status" - When the enemy ship gets within a certain distance, it becomes aware of the player. It doesn't act yet, but that's coming.
Right now, I'm working on scrolling on a much larger map. The hexagonal map doesn't work (easily) for scrolling so I have converted it to a rectangular display of hexes. I've got that working but not ready to merge into the master branch.
Let me know what you think so far. You can find me on the Ember Discord channel pretty easily.