2022 Jan 25
Fire Emblem CiphAR - Release 3
Release 3 (Store page) has been rolled out to production. Here are some of the added features:
1) Added cards from all released series. Note that cards from starter decks and promo cards are currently not supported, and will be added in a future update.
2) Added the ability to triple click to clear all existing text. This is useful for clearing clutter when quickly switching cards during play.
There is currently a known issue where cards that are signed or unsigned cards that have signed versions have inconsistent identification and tracking.
Programming ciphAR
2019 Mar 10
Fire Emblem CiphAR - Release 2
Release 2 (Store page) has been rolled out to production. Here are the major fixes made/features added:
1) Reduced text jitter considerably. Instead of updating text position every frame, it's now updated every 180 frames. Additionally, when updating position, it now linearly interpolates between the current position and the new position. I also updated the image database used by ARCore with the actual size of the scanned cards, which apparently helps in tracking image targets.
2) Based on feedback, I added a few changes to overlaid text to increase readability. There's now a thin black outline around the rendered text. Additionally, I added a color picker that can be used to change font color.
3) Added some cards that were missing from series 15. There are some other cards that aren't working as well, that are listed below.
From starter decks:
- S01-003ST Loyal Retainer, Jagen
- S02-004ST(+) Steel Swordsman, Ogma
- S04-004ST(+) Leo: Gravity Master
- S06-001ST(+) Itsuki Aoi: Chosen Young Lord
- S06-002ST(+) Tsubasa Oribe: The Pegasus Idol
- S06-004ST(+) Kiria Kurono: Quirky Charisma
- S06-005ST(+) Eleonora Yumizuru: Aiming for Hollywood!
From series:
- B01-006HN Caeda: Princess of Talys
- B01-010N Abel: Green Knight
- B01-047N Tiki: Divine Dragon Princess
- B01-055N Lucina: Sacred Descendant
- B01-056HN Lucina: Swordsman Known as Marth
- B01-079N Nowi: Tomboyish Manakete
- B01-082HN Practitioner of Dark Arts, Tharja
- B01-096N Noire: Bipolar Archer
- B01-099HN Tiki: Sentimental Divine Dragon
- B01-002N Corrin (Male): Hidden Dragon Prince
- B02-005HN Azura: Songstress of the Fountain
- B01-007N Ryoma: First Prince of Hoshido
- B02-009N Hinoka: First Princess of Hoshido
- B02-031N Felicia: Clumsy Maid
- B01-036N Rinkah: Daughter of Fire
- B02-055HN Azura: Songstress of Water
- B02-063N Elise: Princess of the Dark Sky
- B01-036N Charlotte: Lovely Warrior Lady
- B03-017N Rolf: Vendure Brother
- B04-003HN Tsubasa Oribe: Dreaming Schoolgirl
- B04-027N Catria: Swift Whitewing
- B04-053HN Itsuki Aoi: Normal Kid
- B04-059R(+) Eleonora Yumizuru: Precious Actress
- B04-060N Eleonora Yumizuru: Forceful Heroine
- B04-061HN Eleonora Yumizuru: Ambitious Young Actress
- B04-095N Severa: Hesitant Blade
- B04-097N Laurent: Seeker of Truth
- B06-045R Mahnya: Sky-Dancing Hero
- B05-056SR(+) Leo: Dark Prince of Chilling Magic
- B06-059N Elise: Sweet Sister
- B06-068HN Arthur: Knight of Bad Luck
- B06-069N Arthur: Unlucky Hero
- B06-071N Felicia: Refreshing Ice Sister
- B06-032R Raven: Blade of Love and Revenge
- B06-036N Fiora: Pure White Wings
- B06-037N Pent: Silver Mage General
- B06-042N Jaffar: Heartless Assasin
- B07-052N Ryoma: Master Swordsman of Hoshido
- B76-060R(+) Saizo: Garbed in Honor
- B06-073N Jakob: Faithful Staff Knight
- B06-083N Yukimura: Bespectacled Wiseman
- B06-085N Shiro: Prince Polishing his Spearmanship
- B06-087HN Mitama: Sullenly Waking
- B06-099HN Yuzu: Crane Dreadknight
- B08-003HN Chrom: Branded Prince
- B08-007N Robin (Female): The Exalt's Other Half
- B06-032N Morgan (Male): Amnesiac Boy
- B06-036HN Noire: Ballistic Sniper
- B06-037N Noire: A Shot from the Dark
- B06-042N Emmeryn: Compassionate Exalt
- B08-047aN Risen: Defiled Soldier
- B08-047bN Risen: Defiled Soldier
- B08-047cN Risen: Defiled Soldier
- B76-060N Larcei: Gallant Myrmidon
- B06-073N Johalvier: Fighter of Love and Justice
- B06-083HN Ares: The Young Black Knight
- B06-087R(+) Febail: Gallant Divine Marksman
- B06-099N Emma: Kaching Dragon
- B09-014N Kliff: Surly Passion
- B09-018N Lukas: Messenger from the Deliverance
- B06-032N Mathilda: Beautiful Knight
- B06-036HN Catria: Drifting Pegasus Knight
- B06-037N Est: Drifting Youngest Pegasus
- B09-075N Yuzu: Purple-Gleaming Protecto
- B09-093N Mist: Girl of the Mercenaries
- B10-034N Mareeta: The Sword Saint's Flowing Blood
- B06-036SR(+) Tina: Mischievous Saint
- B11-101+X(S04-003ST) Camilla: Bewitching Malig Knight
- B12-015N Soren: Wise Man of the Mercenaries
- B13-096N Princess of Múspell, Laevatein
- B14-012HN Olivia: Soothing Dancer
- B14-055N Azura: Requiem
- B15-012N Roderick: Serene Squire
- B15-021N Catria: Macedonian Pegasus Knight
- B15-022R(+) Palla: Greenwind Dracoknight
- B15-023N Palla: Elder Macedonian Pegasus
- B15-049HN Alice: Dauntless Mounted Princess
- B15-050HN Valjean: Armored Sorcerer
- B15-078SR Altena: Wishing for a Warless World
- B15-079N Altena: Thracian-Raised Princess
I'll work on figuring these out this week. Let me know if there's anything not on the list that isn't working as well.
Programming ciphAR
2019 Mar 04
Fire Emblem CiphAR - Community Feedback
Thank you for all the great feedback! Here is a consolidated list of the bugs found and features requested:
Bugs
1) Text jitter - When scanning some cards, there is a lot of jitter when viewing the text. I'm pretty sure this is because of ARCore re-adjusting the text position relative to the card once per frame, which causes even tiny camera movements to cause the text to shift. I'll probably solve this by implementing a minimum distance moved parameter for the scanned cards before the text is re-adjusted.
2) Cards missing - It looks like my web scraper missed some cards when compiling the image and translation databases. I'll look into these and either fix the issues in the web scraper, or add the missing cards in manually.
3) Text rendering too small - Sometimes, the app mis-approximates the distance of the camera to the card, causing the Y coordinate of the text to be too far away from the camera, making the overlaid text look very small. Still looking into a fix for this.
Features
1) Font changes - A lot of people had readability issues with the default white font color. To alleviate this, I'll implement a menu that can be used to change the font color, font size and font border.
2) Card freezing - Being able to tap a card to freeze its translation in place, so even large camera movements do not shift the translation.
3) Card DB lookup - a separate screen for being able to look up existing translations, without having to scan a card first.
I'll look into fixing most of the bugs this week, then on implementing the new features.
Programming ciphAR
2019 Mar 03
Fire Emblem CiphAR - Android Store Release
The first release of Fire Emblem CiphAR has been rolled out to the Google play store! Here is the store link.
The application was made using Unity3D and ARCore. The image data and card translations were all obtained from Serenes Forest here, and scraped using Python + BeautifulSoup.
Here are some images of the app in use:
An example of a single card being scanned
An example with multiple cards being scanned in a full gameplay environment
Here's the final logo I decided to go with:
The sword is supposed to be a minimalist Falchion. The 5 circles are meant to be the orbs on the back of most cipher cards (or the orbs in a summoning circle for Fire Emblem Heroes, if you play that). I'm sure none of this actually comes across effectively.
Current issues:
-
There's some jitter in the overlaid text, probably due to ARCore readjusting the position of the text per frame, even on small camera movements.
-
If the card isn't scanned accurately, sometimes it will "fly away" (hard to explain, but you'll know when it happens).
Programming ciphAR
2019 Mar 02
ciphAR - An Auto-translation app for the Fire Emblem Cipher Card Game
I started collecting cards from the Fire Emblem Cipher card game a few years ago, solely because of the art. I may have gone a little overboard, especially for a game I don't actually play, since I can barely read Japanese.
Exhibit 1: A little overboard
To deal with the aforementioned translation issue, I'm developing a small AR application that will scan FE Cipher cards and superimpose the cards' translation on top of them. Here is a sample scanned output:
The superimposed text auto-adjusts based camera position, and generally maintains its world-space position unless the user moves the camera far away from the initial scanned position of the card.
I'll probably be releasing the application to android over the next few days, and I'll add features based on feedback.
Programming ciphAR