MINIMAL REQUIREMENTS UPDATE: Starting with version 1.6.10.001, Forge for Android requires Android 4.4 or newer. If you are running an older version of Android and are unable to update to a newer one, please stay on version 1.6.9.005 and do not update. In case you have already updated and Forge no longer works for you, here's a link to the download for version 1.6.9.005 (you will need to manually remove your current "res" folder in your Forge installation directory and replace it with the "res" folder from assets.zip). Download here: https://releases.cardforge.org/forge/fo ... 1.6.9.005/

IMPORTANT: If you are experiencing a critical issue with the game (such as hanging, crashing, being unable to update, etc.), please provide the contents of your Forge.log file immediately after the game crashes/hangs. You can find this file in the "data" folder of your Forge installation. Without this file, it is impossible for us to help you.

Please note that manual intervention is required if you are running Forge for Android v1.5.61.003 or earlier. You will need to manually redownload the APK file from the link provided above and install it. After you do it once, the further updates will be pulled in automatically, as they used to.

NOTE: If you haven't already turned on the "Unknown sources" setting on your device under Security, you'll be prompted to turn it on if you want to continue with the install. This is not something you need to worry about, as it's only necessary because you're not installing from Google Play. You can always turn it back off after the install finishes, though you'll need to turn it on again whenever you want to install updates.

NOTE 2: If you've previously installed Forge and you're just installing an update, you can just install as normal. You shouldn't have to uninstall first, though if it fails, an uninstall and reinstall would be the first thing to try. Either way, rest assured that your card images, decks, preferences, and quest data will not be lost.

When running the app after installing an update or for the first time, resource files that are needed for the app to run will automatically be downloaded. This shouldn't take more than a minute or two and the splash screen will report progress while they're downloaded and unzipped.

By default, Forge does not come packaged with card images. There are two ways to pull in card images:

AutomaticOpen the Setting screen and click the Files tab. Choose either of the first two options for downloading LQ pics, based on whether you want to conserve disk space and download only one picture per card as opposed to one picture for every set each card appears in. A dialog will appear and after pressing Start, the pictures will be downloaded. This process may take awhile, so please be patient.

ManualOpen the SD card on your device. If possible it's easier to do this with your device connected to a desktop computer, but otherwise you can use a file explorer app and navigate to "/storage/emulated/0", which should just be My Files > All Files on the standard Android explorer. Navigate to Forge/data

Note that you can similarly copy over decks, quest data, and preferences from a desktop version of Forge. The following mappings apply (based on a Windows user with default AppData locations)- C:\Users\<username>\AppData\Local\Forge\Cache\ > Forge\cache\- C:\Users\<username>\AppData\Roaming\Forge\ > Forge\data\

If you either don't have access to your computer or want other decks to play (particularly until deck editing support is added), you can also download and unzip decks from the Forge Decks forum into Forge\data\decks\constructed\.

Running the AppIf everything worked properly, you should see a splash screen while resource files, cards, decks, and fonts are loaded, then be taken to the home screen shown in the first screenshot above.

From here, you can tap Settings to adjust your preferences if desired, such as picking a theme (all Forge themes are supported). If you transferred your preferences from a desktop install of Forge, you can probably skip this step. Note that, in addition to the home screen button, you can access the Settings screen from anywhere by pressing the Menu button on your device.

Tap New Game. You'll be taken to a familiar screen where you can configure a name, avatar, deck, and human/ai for each player. Then you can just press Start to play a match. Alternatively, from this screen you can click the drop down menu in the upper right to access other game modes like Draft, Sealed, Quest Mode, Gauntlet, or the new Planar Conquest mode.

Missing FeaturesThe mobile Forge is mostly feature complete, but there are some missing features at this time.

Card animations when changing zones Combat animations Spell resolve animations Scroll indicators for scrollable panes Syncing data with desktop Forge Mana symbol buttons appearing above touch keyboard when editing search field Quest Tournaments are playable but with a few caveats and only with Simulate AI vs. AI Results enabled (so, you will not be able to watch the AI vs. AI matches).

There are currently very few active contributors to the mobile Forge specifically, so if you have technical knowledge required for it and the desire and time to help, you are welcome to join in!

Bug ReportsPlease post bug reports and questions to this thread only if they apply to the UI in some way. Cards not working correctly or the AI not behaving properly are issues that would be shared by both the desktop and mobile versions of the game and should thus be posted in the appropriate thread (likely the Bug Reports (snapshot builds) thread since mobile Forge is on a more dynamic update schedule and typically includes changes not yet available in the current desktop release: viewtopic.php?f=52&t=6333 ).

Known Issues

It's been reported that some tablets must be set to run in portrait mode, otherwise the app opens with a black screen. If the screen is locked and the device goes into standby mode (especially for a prolonged time), or if you switch into another application for a while and then back to Forge, the game assets may become corrupt after you unlock the screen again (all the ingame elements will be shown as black). If that happens, the only way around it is to fully restart the game. It is possible to remedy this in the majority of typical cases by enabling the "Minimize on Screen Lock" option in Forge preferences. If Forge is freezing after clicking the Constructed screen, apparently switching to the Default theme or manually copying over files from Forge\res\skins\default to the other skins folder that aren't already there, like the image with the avatar tiles, will fix it.

Credits Special thanks go to:

DrDev for developing Forge for Android (he is the original creator of this port) and maintaining it practically as a sole developer for a very long time. Max Mtg and everyone who helped out with the large project to breakup the Forge project into modules. KrazyTheFox for helping set up a Maven build process for the Android app. moomarc and others who have created all the amazing skins used by both this app and the desktop application. All the developers and other contributors who have scripted cards or developed card rules, game, and AI logic. Everyone who has followed this project and offered feedback or ideas.

Last edited by Agetian on 22 Jul 2017, 03:55, edited 30 times in total.

Q. Is there a separate version of the app for tablets?A. No, there's only one version which works on both phones and tablets. The app is designed to scale certain areas as the screen gets larger while keeping others sized relative to the size of you finger, so it should look and play well on both phones and tablets. For example, the prompt will be the same physical size on both phones and tablets, but the field and cards on a tablet will be larger.

Q. I don't have an Android device. Can I get this app for my IPhone or IPad?A. At the moment, this app only runs on Android devices. That said, it's built using libgdx, a platform built off of OpenGL to be cross-device compatible. The majority of the code is already there to create an IOS app, but I would need somebody with access to a Mac to set up a module and code a few files to get the app working, then figure out a way to publish and install the app without going through the App Store. Volunteers are most welcome for this one.

Q. What are the minimum specs required to run this app?A. I designed the app using a minimum screen size of 320x480, and in testing the app peaks out at around 200-300MB of memory usage. So any smartphone or tablet made in the last few years should have no trouble. Specifically, this app is currently targeting Android 4.4 KitKat (API level 19) with the minimum requirement being Android 3.0 Honeycomb (API level 11).

Perhaps the most important spec to note is disk space usage, particularly if you want to use HQ pics. For reference, before card pics, the app takes up around 100MB of space including the installation (16MB), the resource files (51MB), and the font cache (32MB). If you've downloaded LQ Set pictures as I have, that adds an additional 612MB. Choosing to download only the most recent LQ picture would lower this disk usage, while opting to use HQ pics will increase it. It's up to you to decide how much disk space to dedicate to Forge on your device, but that's why all files are located on the SD card.

If the app isn't working or performs poorly on your device, please let me know so I can document such devices as potentially problematic, as well as maybe work on a solution.

Q. You've mentioned a "font cache" a few places. What's that for?A. The libgdx platform that Forge is built upon does not support text rendering using traditional font files. Rather it uses what's called a BitmapFont, which is literally where each character is stored and rendered as an image with a color applied. To render nicely, you need a different set of images for each font size, as using image scaling doesn't always look too good. libgdx includes an extension that supports generating BitmapFonts from a .ttf (True Type Font) file, which every skin in Forge provides one of. However, this extension is slow, and generating fonts on the fly can lead to big performance problems, especially when zooming in on cards. To combat this, I set it up so .fnt and .png files for each available font size are generated and cached the first time you load the app for a given skin. After that, these cached files can be used to generate the BitmapFont much quicker on subsequent startups. The BitmapFonts are also cached in memory while the app is open to make rendering text as quick as possible.

Q. Why has nobody made a full MTG smartphone app like this before?A. Well, it was a lot of work to create this UI from scratch. And it was definitely quite the design challenge to make the app user friendly given the complexity of Magic and the small screen real estate. But other than that, no idea.

UPDATE (04/23/17): Forge for Android v1.5.62.001 is released. It features the pre-release Amonkhet card set with most (but not all) cards implemented and is released mostly in sync with the desktop Forge v1.5.61 Beta. It has several additional fixes and improvements on top of that.

IMPORTANT: Manual intervention is required if you are running Forge for Android v1.5.61.003 or earlier. You will need to manually redownload the APK file from the link provided above (in the first post) and install it. After you do it once, the further updates will be pulled in automatically, as they used to.

UPDATE (04/26/17): Forge for Android v1.5.62.002 has been released. It is an incremental update featuring some bug fixes and also minor improvements to handling Amonkhet cards (in particular, split cards with Aftermath).

So, is there some trick to changing names?I tried changing mine and AI's name (so it's easier to tell who the game is talking about), but when I started a standard duel, the game still refers to me as "Damina" and to the opponent as "Lilita", and once I quit the duel, the name fields reset to those names.

Also, I wanted Forge to store data on the SD card (not in the internal storage), but I get an exception in the 'file browser' when I go 'up' from the Internal Storage folder.

EDIT: It gets better. When I re-installed the app (due to some unrelated problems), the two default players had different names ("human" and I'm not sure what the other one was), but once I started the duel the game called me by even different name, that then became the default name after the duel and it now resets to that each time I start a duel.

I have a bug where it won't allow me to play Commander (pretty much all I play now). I was playing last night, won the game, but there was a second game running behind it that was stuck on "Waiting for opponent". Unable to do anything else, I closed forge and tried reopening it, and now I can't select Commander as a format. If I do, it doesn't do anything, I'm unable to select a commander deck or start a commander game. If I try to select Commander from the "More..." list, I get this error:

java.lang.NullPointerException: Attempt to invoke virtual method 'forge.card.CardRules forge.item.PaperCard.getRules()' on a null object reference at forge.deck.DeckgenUtil.generateCommanderDeck(DeckgenUtil.java:302) at forge.deck.RandomDeckGenerator.getGeneratedDeck(RandomDeckGenerator.java:79) at forge.deck.RandomDeckGenerator.getDeck(RandomDeckGenerator.java:68) at forge.deck.FDeckChooser.getDeck(FDeckChooser.java:747) at forge.screens.constructed.PlayerPanel.getCommanderDeck(PlayerPanel.java:674) at forge.screens.constructed.LobbyScreen.updateDeck(LobbyScreen.java:477) at forge.screens.constructed.LobbyScreen.update(LobbyScreen.java:452) at forge.match.GameLobby.updateView(GameLobby.java:283) at forge.match.GameLobby.applyVariant(GameLobby.java:234) at forge.screens.constructed.LobbyScreen$3.handleEvent(LobbyScreen.java:137) at forge.toolbox.FComboBox.setSelectedItem(FComboBox.java:151) at forge.screens.constructed.LobbyScreen.updateVariantSelection(LobbyScreen.java:200) at forge.screens.constructed.LobbyScreen.update(LobbyScreen.java:418) at forge.match.GameLobby.updateView(GameLobby.java:283) at forge.match.GameLobby.applyVariant(GameLobby.java:234) at forge.screens.constructed.LobbyScreen$MultiVariantSelect$Variant.toggle(LobbyScreen.java:366) at forge.screens.constructed.LobbyScreen$MultiVariantSelect$Variant.access$900(LobbyScreen.java:348) at forge.screens.constructed.LobbyScreen$MultiVariantSelect$VariantRenderer.tap(LobbyScreen.java:381) at forge.screens.constructed.LobbyScreen$MultiVariantSelect$VariantRenderer.tap(LobbyScreen.java:373) at forge.toolbox.FList.tap(FList.java:159) at forge.Forge$MainInputProcessor.tap(Forge.java:599) at forge.toolbox.FGestureAdapter.touchUp(FGestureAdapter.java:196) at forge.toolbox.FGestureAdapter.touchUp(FGestureAdapter.java:158) at com.badlogic.gdx.backends.android.AndroidInput.processEvents(AndroidInput.java:360) at com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:420) at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1535) at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)

I have tried manually updating, uninstalling and reinstalling, and restarting my tablet. Nothing has worked so far.