PraxisMapper's 2 Year Anniversary

Happy Birthday PraxisMapper!

Original Plans for Year 2

After the first year of work, I looked at what I had and set some goals for what I wanted to do in the next year. Most of those plans didn't take nearly as long as expected. The biggest one was "Get PM running on ARM Linux". That was achieved a while ago, and the only thing holding that back was SkiaSharp. By restoring the original drawing engine I had with ImageSharp, and setting up a flag to switch between drawing plugins, PraxisMapper runs on anything supported by .NET.

Accomplished in Year 2

I thought I'd have to go and dig up a bunch of details on what I had planned and what I actually did and such to write up this particular block. Turns out, Release 1 was published in September 2021, a month after Year 1 of development ended. Technically, my Year 2 Accomplishments list is "everything done so far". But I want to go over the big achivements in that list, which are:

  • Performance enhancements. Every step of the process has gotten faster this year.
  • Runs on ARM Linux. It's easier with ImageSharp, and probably best to compile the server on your machine to ensure it's going to run on your hardware.
  • Multiple drawing engines supported.
  • Single command in Larry to bootstrap the server faster. This reduces the complexity and steps requires to get a server going, but more can still be done.
  • Default style rules are more appropriate for gameplay.
  • Plugin support. You can now use C# DLLs to add endpoints to your server, which gets away from needing to edit the server's code directly to expand its capabilities. I'll be moving my development model this way in the future, with more logic added as plugins.
  • Security enhancements. Compared to most server programs, PraxisMapper has very little access to player data that isn't actively being processed.
  • Ease of Use. The easiest way to store arbitrary objects in PraxisMapper has been identified, and methods to simplify going through that have been added in Release 6. A bunch of other QoL changes have been applied as the need arose.

Planned and Missed

I've kept a Google Doc full of notes and plans for each release, and invariably several of them slip or get abandoned. The short list of stuff I thought I wanted to do and haven't yet:

  • Auto-configuration. Bootstrapping could do more, like installing MariaDB or SQL Server LocalDB if needed or autogenerating server passwords. It doesn't yet.
  • Easy Scavenger Hunt mode. It was done client-side on an earlier version of Hypothesis, but I never got a server-driven setup going for it. Can still be done manually. Might just want to suggest Traipse for this for most people.
  • Importing custom geography data. I wanted an easier way to do this, but I don't have a good use case for what this would look like. "Update OSM and refresh your database" sounds like what this would actually be most of the time.
  • Admin pages to edit server data from a web interface. I started on this, but its incomplete and not pretty. I'll probably need to break this down per-plugin.
  • Map Editor. Similar to the previous note, but use Leaflet to allow the admins to modify map data while viewing the map.

Plans for Year 3

Year 2 got the server component to a pretty solid place. Release 3 is the first time I said "this is the first really usable version for anyone else" and the server's gotten better in subsequent releases. Year 3 will be more about client apps and examples. Primary to this will be "Finish and release my own game". I also want to work more with the plugin feature added in Year 2, and move some functionality into plugins. I may move some of the bootstrap or update functions into a plugin, so the web interface can do more from the start.

  • Finish TIBO, my personal game built on the engine, and get it on a mobile store somewhere.
  • Break out more of the engine into plugins.
  • Have plugins each provide their own map viewer, instead of one singular map viewer that won't know about plugins.
  • Make a C# MAUI version of Hypothesis, so the server and a demo client can be available in the same Visual Studio solution.

TIBO

Let's go over TIBO too, since it's gonna be the 'showcase' app for PraxisMapper. The Immortals Battle for Ohio (TIBO) is what I've been putting together since May 4th. So, in 3.5 months of work on the app, I have:

  • One US State, Ohio, used as the gameplay region. 50,000 square miles or so.
  • 57 creature ideas. Targeting a much larger number eventually.
    • 36 are mostly filled in
    • 7 are 'complete', until I can get a proper artist to redo the artwork.
  • ProxyPlay
    • Choose any spot in the state to be treated like you were physically present there instead of your actual location
    • Allows players outside of Ohio to participate!
    • Players in Ohio can explore far away parts of the state, or jump to specific locations, and drop back to their real location later.
  • Collect mode: Done
    • Walk around collecting creatures that vary depending on local Place types, Area, time of day, and day of the year.
    • These creatures get used in the other modes of the game.
    • 2 Active Challenges, to catch stronger versions of each wild creature, and more planned.
  • Control mode: Done
    • Place your creatures in a gameplay Place on the map to earn points for your team.
    • 15 people can each claim a location, but stronger creatures grant more credit to it's owners team.
  • Cover mode: Mostly done
    • Place multiple instances of creatures anywhere in the state to scout over areas. Try to get the most area covered by your scouts.
    • Leaderboards show your score to others, but no direct competition or interference.
    • Draw pictures if you want, since each creature (will) have its own unique color on the map.
  • Compete mode: In Planning
    • Cover mode, but PVP
    • Help your team place the biggest scouting parties on the state, and take down opposing team's scouts.
  • Creature List: Done
    • See all the creatures you've caught and stats on them. See hints you've unlocked for others.
  • Passport Mode: Mostly Done
    • Stamp a visit to a specific type of place, such as parks or cemeteries, and get unique creatures not found in the wild.
  • Upgrade screen: Mostly Done
    • Place creatures here instead of Control mode to earn hints for uncaught creatures, make your creature stronger, or other usable bonuses
    • Done instead of in-app purchases. No whales allowed in my games!
  • Coin Shop: Mostly done
    • Earn coins by walking around in-game in Collect mode.
    • Spend coins here to acquire or strengthen your creatures.
    • Rotates daily. Has a Common, an Elite and an Out-of-Season rare available.
  • Options screen: Partly Done
    • Swap your ProxyPlay location here.
    • Completely delete your account and remove all traces of you from the game and server.
    • Credits and licenses.
  • Help screen: Started
    • Show a reminder of how to play in the currently selected mode.
  • No ads!
  • No IAP!
  • No tracking users! (outside of gameplay, and that's encrypted too. The server can't tell the difference between where you're physically standing, and what your ProxyPlay point is.)

Currents plans are for TIBO to initially be up on Patreon, to confirm estimates on how many players a server instance can handle. Later availability depends on Patreon success. Putting in some kind of unabusable IAP and opening up on Google Play is a backup plan if I can't get any minimum of Patreon backing.