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
- Kaizo elements:
- Down-only or Across-only
- Unnumbered clues
- Hide some clues at random
- Swap some clues without saying which ones
- "Fake blocks" and "hidden blocks"
- Changing plurality? Changing tenses?
- Ghost letters - entered text fades away until looked at
- Limited direction switches
- ...
- "Where did I go wrong?" -- replay to see mistakes you made along the way
- "Help me out" -- something other than just solving for you
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 aroundLoading puzzles from .puz filesRendering an interactive puzzlePlayable, 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 pageMake my laptop dev env suck lessAdd some style to this page
Changelog
2024-10-19
- If you have a keyboard, you can solve puzzles!
- It feels enough like a real crossword app that I notice all the ways it is incomplete
- I made a 5x5 crossword to use as a sample puzzle!
2024-09-14
- Can now load local .puz files
2024-07-28.2
- Fixed the DigitalOcean deploy
2024-07-28.1
- Started a rewrite to TypeScript
- Broke the DigitalOcean deploy
- Questioned whether these changes were a betrayal of the project's original ethos
2024-02-05.1
- Added a basic "Paper" theme for this project page
- Added a WIP "RCT" theme as well
2024-02-03.1
- Wrote this webpage and deployed it