crossobear

What's this?

I've decided to make my own crossword web app, codenamed "crossobear," which is I think a very good code name. It is, for now, just a little worry stone project for me. It's fun to think of neat ideas and see if I can actually build them.

I've also decided that the project should have a little website. And that's this page! That's where we are now. Welcome.

You can check out my progress at crossobear.chadobear.world/demo.html.

Game Ideas

Decisions

Build it myself

I looked into existing projects, especially Crosshare, but ultimately decided I didn't want to fork. Everything I saw has a different scope than what I'm looking for, and as nice as it would be to get a jump start from others' work, I wasn't having much fun trying to self-teach the codebases I saw.

Avoid dependencies

I don't enjoy large directories of node modules, and a big part of my reason for doing this work at all is to reacquaint myself with the basics of web development. It's much more satisfying to work with just the MDN docs and my editor open, writing whatever code seems to get the job done. I did violate this a bit by adopting Typescript (see below), but I have managed to dodge a "real" build, so that's nice.

Use Typescript

Very happy with this move. There are still some ways for me to talk to nonexistent Javascript APIs, but there are so many fewer footguns.

Use SVG element for grid

Based on my market research, this seemed to be the thing to do. But it makes sense to me as well. It wouldn't be a big challenge to lay out a grid of squares in "core" HTML elements, but you don't gain much that I can see. The semantics of a 2D grid don't fit the document model. I need to manage navigating the grid with JS, so I'm not losing any native browser functionality.

Build my own onscreen keyboard

Looking forward to the VirtualKeyboard API!

Tasks

Game

  • Ok so right now it's just a grid that I can move a cursor around
  • Loading puzzles from .puz files
  • Rendering an interactive puzzle
  • Playable, solvable puzzle
  • Add a splash screen to explain things on first load
  • Improve input (mouse, keyboard nav)
  • Improve the onscreen keyboard for mobile
  • Dynamic grid resizing
  • Mobile layout
  • Pencil marking

Meta

  • Publish this page
  • Make my laptop dev env suck less
  • Add some style to this page

Changelog

2024-10-19

2024-09-14

2024-07-28.2

2024-07-28.1

2024-02-05.1

2024-02-03.1