Radical Blocks

Gameplay

Tap the blocks in the correct stroke sequence for the target Japanese Kanji to score points! As you get more and more points, the game will get more challenging with extra distractor blocks and a faster fall speed.

System Requirements

Android smart device.

Known Issues and Limitations

These are only for the most recent version.

  • It only has target kanji for 1st grade.
  • Current version is ad-supported.

Install Options

https://whitemagehealing.itch.io/radical-blocks

https://play.google.com/store/apps/details?id=roxanne.whitemagehealing.radicalblocks

Privacy Policy & Credits

This game is supported by ADS using Google AdMob. If you do not want to send data to this service, please play the game without Internet (i.e. turn off your WIFI and mobile data temporarily). The ad screen will still be there and attempt to fetch an ad, but the ad shouldn’t load.

Future

These are some future features I’ve thought about implementing; however, they will take a great time commitment on my part. I am working on my software in my free time, so I may not implement these UNLESS you send me a Feature Request. Submitting a Feature Request shows me that you are interested in it and will use it when it is implemented; in other words, it will be worth my time to implement because it will make your life more enjoyable to live.

  • Sound.
  • More than just first grade kanji.
  • Zen mode with controllable speed and no high score.
  • Ability to select available target kanji.
  • Ability to turn off English.
  • Affordable ad-free one-time payment version.

Contact Me

Do NOT put private information in this form, because I’m not sure how secure it is.

Unfortunately, the only way for me to be able to contact you if you would like a response is if you leave your email address. Also, unfortunately, depending on how crazy my life situation is, I may not be able to respond to all feedback.

Reasons for Limitations

Why only first grade kanji?

Creating this kanji matching database isnā€™t automated. I have to manually input every target character, valid character, English definition, Japanese definition, etc. It’s a tremendous amount of work, so if no one is play my game, then I don’t want to waste my precious life on it. This game already took a little over half a year of my life away. If there is interest; then I maybe I can make a Kickstarter or something.

Why do some strokes look weird?

Some strokes look weird because that is a limitation of the Unicode Standard. Unicode characters must exist in certain way and if the Unicode administers haven’t added a specific stroke to the Standard, even if it exists in outside of the tech world, it will not exist in the font. Also, it is completely up to the Font Creator (person who makes the font) if they want to implement the Standard; they could choose to not include that character at all. I could painstakingly make custom images by hand and manually make a my own “extension to Unicode” locally, but that would take a long time. It also would slow down the game and take up a lot more storage space on your device. If there is interest; then I maybe I can make a Kickstarter or something.

If the target character appears in the component falling blocks, why can’t I use that as the correct answer? Why do I have to only select the strokes?

Although it is possible to have the “same character” “appear” as a component falling block, that is not what is actually happening. When that occurs, it means that the target kanji is also considered a RADICAL. Falling blocks consist of only strokes and radicals, so if the target kanji, itself, counts as a radical, it might show up as a falling block. Why can’t I just accept this as the right answer anyway? Well, that would mean I would have to manually scrub through all Unicode character duplicates and make special cases (may cause game lag) for EVERY kanji-is-also-a-radical overlap.

The RADICAL for ęœØ is a different Unicode number than the KANJI (under the hood, every character is a number) and in order for them to match, the numbers must be equivalent. So even though they look the same visually, the numbers can be different. I donā€™t make the rules; I’m a victim of them like everybody else (even their creators!). Donā€™t get me started on character and stroke variations! Even as I type this webpage, I’m cheating with whatever Unicode ęœØ I copied from some other page without checking which block of Unicode it is actually coming from. Is it a radical or is it its own kanji?

Iā€™ve already scrubbed through the whole radical and stroke set to make the current version of this game happen; that’s like 2,000 characters or something. That doesn’t even include stroke VARIATIONS. I donā€™t mind trying to do it; however, it will take a SIGNIFICANT amount of time. If there is interest; then I maybe I can make a Kickstarter or something, but I would also require TREMENDOUS amounts of debugging help from players like you. šŸ™‚

Fun Fact: The fallings blocks used to consist of radicals, strokes, AND all kanji (used as distractor characters to make later levels more challenging); however, the overlap between the 20,000 kanji characters that I had to look through to try to accept all legal matches was just too insane, so I had to chop out all the kanji to save my sanity. It’s possible if I hire a team of Unicode linguists or something, but I certainly don’t have that kind of money.

Why is the only answer to select the radicals first and then the strokes?Why do I even have to select the strokes anyway if there is a radical equivalent?

Imagine you have a character that has several radicals and strokes. For instance, consider ę£®. Now, this character can be considered to be any of the following:

  • ęœØęœØā¼€ā¼ā¼ƒć‡
  • ęœØā¼€ā¼ā¼ƒć‡ęœØ
  • ā¼€ā¼ā¼ƒć‡ęœØęœØ
  • ęœØęœØęœØ

If you wanted me to accept ALL of these answers, I would have to painstakingly go through EVERY target kanji character and check for EVERY possible permutation and input all that by hand. This particular character isn’t even as difficult, because it has radicals that are the same; imagine if the radicals were different! Which radical would you choose to break out into strokes? So if you want me to accept all of these answers, you should be willing to note down all permutations yourself in a spreadsheet and send them to me. ALSO, don’t forget, you need to use the Kangxi Radicals Unicode Block, CJK Strokes Unicode Block, CJK Radicals Supplement Unicode Block; NOT the CJK Unified Ideographs, extensions, or supplements (unless you are designating the target kanji).

Why are some of your fonts not nice and rounded like fonts in other areas of your game?

So, there is a dearth of free rounded attribution-and-royalty-free fonts that have ALL the characters I need. To make this work, I actually had to combine more than one font. Strangely, and I don’t know WHY, but creators of these fonts do not FILL all the characters in the kanji sets and leave some Unicode spaces in the block unimplemented. Maybe those characters just were defined in the standard when the font was made, or maybe they figured the system would use a different code for substitution. In one case, the character in the font was just plain WRONG, so I don’t know if the person just put accidentally or purposefully put the “wrong character” (i.e. not what the standard says) in the Unicode slot or if the standard changed after they created it. In any case, I had to manually decide which font of the following two to use whenever I drew a kanji, radical, or stroke to the screen:

Handling Asian fonts is a currently a HUGE pain in Game Maker Studio 2 in English. It doesn’t want to import nicely (i.e. too many characters), so you have to load the whole font at once at runtime instead of generating a font asset. I’m not sure how it is in Japan, but hopefully it is better in their own country with their own gamemaking frameworks.

Things I Learned To Do During This Project

  • Use GameMaker Studio 2 (GMS2) to create an Android game.
  • Figure out .aab format versus .apk.
  • Deal with multiple unknown phone aspect ratios and Android phone emulation.
  • Work with Google AdMob banner, interstitial, and rewarded ads in GMS2 and allow the viewing to be player-controlled and rewardable.
  • Handle persistent local game data storage of high score and ad-unlock (i.e. no cloud storage, and the data will be deleted if the app is uninstalled).
  • Create the ad screen that does not load when ad-unlock criterium is detected.
  • Randomly color assets at runtime using blend modes (using GMS2’s strange backwards definition of BGR versus RGB color values).
  • Change the shading of a button to show when it is active or deactive.
  • Swap .ttf and font asset texture at runtime to handle lack of a full Asian font in the style I wanted.
  • Optimize font handling and frontloading font files to avoid lag during main game play.
  • Learn how crazy Asian Unicode character overlap and font underdevelopment is for free Asian fonts.
  • Import CSV data in the proper UTF-8 encoding format.
  • Test GMS2 android bundles on a real phone.
  • Implement custom tap controls to deal with GMS2 bugs and underdeveloped mobile support.
  • Use Android Studio: Image Asset Studio to generate icons to overwrite the GMS2 generated ones with and work around GMS2′ underdeveloped handling of Adaptive Icons.
  • Implemented a basic pause screen.
  • Debug GMS2 and GMS2 projects, so that I can submit bug reports to YoYo Games as necessary.
  • Create an itch.io page, upload a game to it, and add someone as a collaborator.
  • Create Contact form using Gutenberg on a WordPress.com blog.
  • Work around WordPress.com limitation of NO INLINE images for numbered lists.
  • Learn that WordPress.com makes extra copies of images that you drag and drop into the image block, so it is safer to first upload to the Media Library and link to there to avoid wasting your precious space; “unattached” images are NOT what you may think and may still be used in a post so you need to still be extra careful if deleting any image.
  • Do NOT use reusable blocks in WordPress.com, because they can suddenly go missing (i.e. breaking EVERY post and page that reference them). It is best to just duplicate a previous post you like as a template, and update older posts as needed. (This is for small bloggers like me that don’t need a lot of consistency; for large businesses, they probably want to invest in a business account and find stable plugins that have a custom and safer way to implement reusable block behaviour.)
  • Create a GMS2 utility project to help convert assets into the proper format to use in the actual game project.
  • Create and manage GMS2 Texture Groups.