Little Go. An iOS application that lets you play the game of Go on the iPhone or iPad.

Overview

Introduction

Little Go is a free and open source iOS application that lets you play the game of Go on the iPhone or iPad. You can play against another human (on the same device), or against the computer. The computer player is powered by the open source software library Fuego. The minimum requirement for running the most recent version of Little Go is iOS 9.0.

For more information about Little Go's features have a look at its App Store page. A manual is also available in the "Help" UI area when you launch the app.

Little Go is released under the Apache License (2.0).

Changes in this release

This is the Little Go feature release 1.6.0. A selection of the most important changes are:

  • Addition of an SGF parser (#112). Little Go can now read and write SGF data on its own without having to delegate this task to Fuego (the built-in computer player library). The core piece of software is SGFC, the SGF Syntax Checker & Converter. A big thank you to Arno Hollosi for writing this tool and making it available under a free license, and also for helping with integrating it into Little Go.
  • The user interface has been adapted to newer iOS devices with a sensor notch, rounded corners and/or a Home indicator instead of a Home button (#336).
  • When Little Go is newly installed from the App Store the default computer player is now weaker (#358). This should give more users a positive first app experience. Users who want a challenge can still increase the difficulty by switching to a stronger computer player. A side effect of this change is that the default computer player no longer uses the "Pondering" setting, which means that the iOS device's battery should now be used up a lot less.
  • The project has received its first code contribution! Thanks to Dan Hassin for making a user interface improvement (#346) and improving the project's software build (cf. pull rquests on GitHub) so that it now works out of the box for new contributors.

A number of bugs have also been fixed, among them three app crashes (#357, #361 and #362) and a major regression (#359).

The ChangeLog document has more details.

Getting and building the source code

If you are interested in Little Go as a developer, you should clone the GitHub source code repository. Downloading just the latest release snapshot of the source code is not sufficient because the 3rdparty software build depends on CocoaPods and Git submodules. Once you have the source code you should start by reading the file README.developer - the quick-start guide at the top of the file should get you up and running with a minimum amount of hassle.

Links and resources

Comments
  • Fuego sometimes seems to resign even when the game is won

    Fuego sometimes seems to resign even when the game is won

    Hello herzbube!

    I've been using Little Go for ~2 years now, and I thought I'd submit this small issue which I think is a bug.

    In some cases, I've observed that the Fuego AI will occasionally resign, even though the game has actually been won by the AI.

    I've attached an sgf file consisting of such a game (Anonymous vs. Anonymous 2.txt). Since GitHub doesn't support the .sgf extension, I've renamed the file to just be a .txt extension. I created this file by simply creating a "human vs human" game -- the game is very artificial; it begins with 9 stones handicap, and consists of both players just carving out the board into two halves. Under the Little Go ruleset, White wins by 6.5 points.

    However, if I load up this game and ask Fuego to play as White, Fuego generally makes a feeble attempt at invading Black's territory and then resigns soon afterwards (despite the fact that White wins by 6.5 points).

    In general, I've observed that Fuego seems to sometimes resign won games when the margin of victory is very small. (Sometimes, this also leads to Fuego making bad moves in an attempt to "win" even though it's already winning.)

    I believe (without proof) that this might occur because Fuego doesn't recognize that the 9-stone handicap alters the scoring. (Under area scoring rules, White receives an additional point of compensation for each Black handicap stone.)

    I took a quick look at documentation and the help text, but didn't find anything other than a warning that area scoring should be used since Fuego sometimes plays inside its own territory.

    bug prio 2 user feedback 
    opened by dtsudo 9
  • Add an .sgf parser to project

    Add an .sgf parser to project

    Currently the application delegates loading and saving of .sgf files to Fuego.

    Adding an .sgf parser would have a number of advantages:

    • It would be possible to display additional information about an .sgf file on the "Archive" tab
    • It would be possible to display additional information when board positions are reviewed after an .sgf file has been loaded
    • It would be possible to edit some of the information in the application, and save that information to .sgf
    • Taking the "Blood Vomiting Game" .sgf as an example, the following minimal information should be parsed:
      • A general comment about the game (Sente's Goban displays this only after loading the .sgf when the info panel is displayed for the first time)
      • Player names and strenghts
      • Date when the game took place (for historical games)
      • Comments for the indiviual moves
    feature prio 1 sgf editor 
    opened by herzbube 9
  • Upgrade project to Xcode 4.6

    Upgrade project to Xcode 4.6

    Comments below refer to Xcode 4.5 because the original goal was to upgrade to Xcode 4.5. In the meantime Xcode 4.6 has come out, and I am going straight for this, so I have updated the title of this issue.

    prio 1 project organisation 
    opened by herzbube 7
  • Board position can be changed while other commands are executed

    Board position can be changed while other commands are executed

    In certain situations it is possible that the user is allowed to change the board position while other commands are executed by CommandProcessor. These "rogue" board position changes must be prevented because they result in the application state being corrupted, which in turn leads to weird behaviour and/or crashes. It is likely that these "rogue" board position changes are the root cause for the problems reported in issues #90, #128 and #129.

    The problem was identified when analyzing the log files inside two bug reports that were sent by users affected by issue #90. In the first case the problem is reproducible and an in-depth analysis follows further down. In the second case I was unable to reproduce the problem, but with the knowledge from the first case the log file analysis clearly shows where the "rogue" board position change occurs.

    Steps to reproduce the problem in the first case (mentioned above), on the iPhone:

    1. Start a new game
    2. Play a few moves until the computer takes substantial time to compute its move
    3. Place the finger on the board with the intention to place a stone
    4. When the cross-hair stone is on an intersection where it is legal to play, lift the finger to place the stone
    5. With a second finger immediately hit one of the board position navigation buttons below the board, while the buttons are still enabled. Note that the timing is crucial: One must be very quick to hit a button at the right time.

    What happens now is the following:

    • Little Go submits a genmove GTP command
    • Instead of waiting for a response to genmove, Little Go starts to process the board position change
    • When Little Go tries to sync the GTP engine with the new board position, it is blocked because the engine still processes the genmove command. Internally, however, Little Go has already changed its board position.
    • When Little Go receives the response to genmove it generates a new GoMove. This is where the internal state of Little Go becomes corrupt
      • The GoPoint and GoBoardRegion objects represent the state of the current board position
      • When the new GoMove is created, it changes the state of those objects so that they no longer represent the current board position
    • What happens next depends on the user's actions, but disaster is almost inevitable. The only way how the situation can be salvaged is when the user starts a new game, or loads a game from the archive, thus destroying the corrupt GoPoint and GoBoardRegion objects

    Two possible outcomes have been observed so far:

    • The application crashes when an exception is thrown because the corruption is detected. This typically happens when the board position is changed.
    • ComputerPlayCommand finds that the move played by the computer player is illegal. The error handling code introduced for issue #90 then comes into play and at least helps the user to find a graceful way out of the situation.
    bug prio 1 user feedback 
    opened by herzbube 6
  • Linker warning

    Linker warning "direct access to global weak symbol"

    Since upgrading from Xcode 3 to Xcode 4, and the accompanying compiler upgrade, the build produces the following linker warning:

    ld: warning: direct access in __ZN5boost6system12system_errorD2Ev to global
    weak symbol __ZTVN5boost6system12system_errorE means the weak symbol cannot be
    overridden at runtime. This was likely caused by different translation units
    being compiled with different visibility settings.
    

    Note: This issue was moved here from the old bugtracker.

    bug 
    opened by herzbube 6
  • Display additional markup taken from SGF data

    Display additional markup taken from SGF data

    With the intregration of SgfcKit the app has now access to markup properties that are stored inside an SGF file. The app should be able to display this markup.

    feature prio 1 sgf editor 
    opened by herzbube 5
  • Add Dark mode support

    Add Dark mode support

    Some notes:

    • Dark mode was introduced in iOS 13.
    • Use traits collections to check for the mode or to react to mode changes.
    • UIColor has new colors that adapt dynamically.
    • Board position collection view cells / table view cells need to find a new dark mode color scheme.
    feature prio 2 
    opened by herzbube 5
  • Fuego thinks forever in latest update

    Fuego thinks forever in latest update

    In playing games against the computer, the AI somehow gets stuck "thinking" indefinitely by the second move. This happens even against the "weak" computer player that normally plays almost instantly.

    So far I've been unable to get more than 2 moves into any game I've played against the computer since downloading the latest update.

    I am running iOS 12.1.1 on an iPhone SE.

    bug prio 1 
    opened by Spurlock 5
  • Higher resolution stones and numbers?

    Higher resolution stones and numbers?

    It would be nice if stones and their numbers had a higher resolution: this would make the numbers on the stone easier to read, and would give a more professional look to the game.

    prio 2 change request 
    opened by lebigot 5
  • Feature request: add user notes to each move

    Feature request: add user notes to each move

    It would be very useful if the user could add comments on each move of the game. I want to analyze my games while I play, by taking notes: it would be great if this were possible!

    Currently, I would need to take notes in a separate document, and then paste them in the exported SGF, one by one, which is not very nice…

    feature prio 1 sgf editor user feedback 
    opened by lebigot 4
  • Drop iOS 7 support

    Drop iOS 7 support

    Dropping iOS 7 support is not an explicit goal, but it might become necessary at some time in the future. This issue tries to track the things that need to be done when the time comes:

    • Try again to use UISplitViewController, now that the class supports iPhones. This is impossible if UISplitViewController still has the requirement that it must be the root view controller.
    • Use the new Interface Orientation API that was introduced in iOS 8 (see UIViewController class docs)
    • Replace UIActionSheet and UIAlertView (which are both deprecated) with UIAlertController
    • Replace the multitude of launch screens in images.xcasset with a single .xib file that is capable of adapting to different screen sizes. See the App Distribution Guide, section "Configuring Your Xcode Project for Distribution > Creating a Launch Screen File")
    • Look into using UITraitsCollection
    • Present modal view controllers using UIPresentationController

    Notes:

    • 3rdparty libs may use stuff that is deprecated in iOS 8 (e.g. QuincyKit's convenience constructors use NSPropertyListSerialization).
    • Dropping iOS 7 support removes the iPhone 4 from the list of supported devices (see this Wikipedia fact sheet)
    prio 3 technical 
    opened by herzbube 4
  • Change app model for storing handicap to better reflect the SGF properties HA and AB

    Change app model for storing handicap to better reflect the SGF properties HA and AB

    Currently handicap stones are stored in the GoGame property handicapPoints, which is an array of GoPoint objects. The property value therefore stores two pieces of SGF information at the same time:

    • The number of elements in the array denote the handicap as a numeric value. This corresponds to the value of the SGF property HA.
    • The vertices of the GoPoint objects in the array denote the actual intersections on which the handicap stones are placed. This corresponds to the value of the SGF property AB in the game info node.

    The property can be seen as part of board position 0 (zero), i.e. the root node. At the same time, the root node can also store setup information in a GoNodeSetup object. It would thus be possible for GoNodeSetup to clear handicap stones (corresponding to the effect of the SGF property AE), or replace them with white setup stones (corresponding to the effect of the SGF property AW). If this were allowed, saving the data to an SGF file and then reloading that SGF file would lose information.

    Saving the data to an SGF file would result in the following content in the game info node:

    • HA property with the correct numerical handicap value (taken from the GoGame property handicapPoints).
    • AB property with less black stones than the HA property indicates (merge of the vertices indicated by the GoGame property handicapPoints and the setup information in GoNodeSetup).

    Reloading the SGF file would result in the GoGame property handicapPoints to have a different value than at the time when the SGF file was saved.

    To avoid this data loss, the app currently has to take special measures when the user is interactively setting up the board while at board position 0, and is removing a handicap stone, or replacing it with a white setup stone:

    • The user is warned that doing so will result in the handicap stone being permanently removed.
    • If the user confirms, the GoPoint object is permanently removed from the GoGame property handicapPoints.

    In addition to this, the following coding items exists:

    • Some of the methods of the GoGame class contain validation to guard against programmatical errors that might occur for interactions other than board setup.
    • LoadGameCommand contains validation code that refuses to load an SGF file if it contains a game info node with an AB property that has less points than the number indicated by the HA property.
    • GoGame has a property zobristHashAfterHandicap that needs to be specially maintained.

    The special measures during interactive board setup, as well as the coding items in the above list, could be removed if the app's data model for storing handicap would be changed to be the same as SGF. In other words:

    • GoGame has a property handicap that stores an integer value. This corresponds to the value of the SGF property HA.
    • The GoNodeSetup property blackSetupStones of the GoNodeSetup object in the root node stores the GoPoint objects that denote the actual intersections. This corresponds to the value of the SGF property AB in the game info node.

    Once these two changes to the data model are made, the following code modifications can be performed (list is probably not complete):

    • The coding items listed above can be removed.
    • When the user discards all setup information, the app should restore the default handicap stones according to the number stored in the GoGame property handicap.
    • Drawing code that marks up handicap stones when viewing board position 0 needs to be adapted.
    • Documentation of the GoGame method changeSetupPoint needs to be updated.
    prio 2 technical sgf editor 
    opened by herzbube 0
  • Allow board setup at any time during the game

    Allow board setup at any time during the game

    Currently the app allows board setup to take place only at the beginning of the game. This restriction needs to be lifted if the app wants to be a proper SGF editor with full variation support. Also a future tsumego mode likely requires board setup at various stages in the tree of nodes because it's reasonable to assume that Go problems are modeled with variations.

    A rough sketch of the requirements:

    • The user should be able to change the following things in any board position:
      • Which side plays next
      • Remove existing black or white stones
      • Place new black or white stones
    • When any of these things is changed, any future moves that still exist must be discarded.
    • The new board position must be legal
      • Stone groups with no liberties are not legal.
      • After placing or removing a stone the new board position must satisfy the Ko rules of the current game.
    feature prio 1 sgf editor 
    opened by herzbube 2
  • Move number is drawn without last digit for moves with a number higher than 999

    Move number is drawn without last digit for moves with a number higher than 999

    The app currently supports games with up to 1394 moves (limit imposed by Fuego). However the font used to draw move numbers was chosen to support only up to 999 moves (a 3-digit number). As a result move numbers 1000 and above are drawn with their last digit cut off.

    bug prio 1 
    opened by herzbube 0
  • Investigate running the app on macOS

    Investigate running the app on macOS

    In Xcode on the "General" tab of the "Little Go" target there is a checkbox for "Mac Catalyst".

    Reference: https://developer.apple.com/mac-catalyst/

    prio 3 technical 
    opened by herzbube 0
  • Try to use C++20

    Try to use C++20

    Xcode 13 introduced C++20 support. Try to use it in the project. Search for TODOs in the code that indicate where this may be beneficial. Have a look at libsgfc++ which, I think, also wants to use a higher C++ version for some filesystem stuff.

    Possibly this requires going to a newer IPHONEOS_DEPLOYMENT_TARGET, ditching some old devices.

    prio 2 technical 
    opened by herzbube 0
  • Look at using UIKit configurations (requires iOS 14)

    Look at using UIKit configurations (requires iOS 14)

    Some links:

    • WWDC introduction video https://developer.apple.com/videos/play/wwdc2020/10027/
    • https://developer.apple.com/documentation/uikit/views_and_controls/collection_views/implementing_modern_collection_views

    Configurations are available from iOS 14.

    prio 3 technical ios-integration 
    opened by herzbube 1
Releases(1.7.1)
  • 1.7.1(Sep 23, 2022)

    Summary

    Version 1.7.1 is a bugfix release. It was published on the App Store on September 23 2022.

    Below is a summary of changes, taken verbatim from the ChangeLog document. For the full story, a list of issues closed for this release is available here on GitHub.

    Bugfixes

    • Fixed app crash when board position cells are reused after a new game is started or loaded from the archive (#397).
    • The app no longer crashes when the user performs a board setup operation (e.g. places a setup stone) and the game has ended without any move because a player immediately resigned without playing a move (#398).
    Source code(tar.gz)
    Source code(zip)
  • 1.7.0(Sep 18, 2022)

    Summary

    Version 1.7.0 is a feature release. It was published on the App Store on September 18 2022.

    Below is a summary of changes, taken verbatim from the ChangeLog document. For the full story, a list of issues closed for this release is available here on GitHub.

    Features

    Smart Game Format (SGF) support:

    • The app now supports reading and writing of all SGF node annotation and move annotation properties (#339). The app also displays these properties' values and lets you edit them. This means that you can now add a valuation to a move (e.g. good/bad move) and/or to the entire board position (e.g. good position for black/white), designate a board position to be a "hotspot" (e.g. it contains a game-deciding move), annotate a board position with an estimated score, and finally you can add textual notes to a board position. Annotation data is displayed by, and can be edited via, an all-new annotation view.
    • The app now supports reading and writing of all SGF markup properties (#349). Except for the DD property (dim parts of the board), the app also displays these properties' values and lets you edit them. This means that you can now mark intersections on the board with 5 different symbols (circle, square, triangle, "X" mark, "selected" symbol), place single-character letter markers or single-digit number markers, place a free-form label text, and finally you can draw arrows or plain lines on the board. The app has an all-new markup editing mode for this (accessible via menu icon) that includes drag & drop support to move around existing markup.
    • A notable consequence of these additions is that board positions without moves are now possible when loaded from an SGF file (e.g. a board position that contains only markup and/or annotations), but you cannot create such positions yet from within the app. This feature will be added in the next release.
    • In the Settings screen there are now a number of user preferences that affect how markup is drawn and that let you tweak some aspects of the markup editing process.

    Improvements and changes

    • The general user interface (UI) of Little Go now looks and behaves the same on all device types (#371). This unification of UI layouts became necessary because the effort to support different layouts proved to be too much. Also the unification provided the opportunity to get rid of many behind-the-scenes hacks. The main changes are: 1) Smaller iPhone devices which only support the Portrait orientation UI layout, now display board positions and the navigation buttons differently than before. 2) Larger iPhone devices now display a tab bar when in Landscape orientation (alas, reducing the size of the board). 3) iPad devices now always show board positions when in Portrait orientation, and when in Landscape orientation they display board positions and navigation buttons differently than before.
    • Changed the icon of the "More Game Actions" button (#377). The previous icon was a "curved arrow" symbol, which seemed to confuse many users so that they couldn't find important actions, such as "New game". The new icon is the established "hamburger menu" icon, which should now more clearly indicate that the button pops up a menu with actions to select from.
    • Button boxes and the board position list now support Dark mode by switching to a dark background color (#378 and #379). Thanks to Peter Waldispühl for reporting this.
    • Coordinate labels are now drawn at the board edge instead of at the screen edge (#147).
    • The "Last move" marker is now drawn in red color, to distinguish it from the new Square markup symbol (#396).
    • The Go board is now always properly centered within the screen space that is available to it (#367).
    • Little Go has a technical limit for the number of moves that can be played in a single game (in case you wonder: the limit currently is 1394 moves). The app now explicitly checks for this limit when you attempt to place a stone or pass (#381).

    Bugfixes

    • Board position zero (representing the start of the game) sometimes did not display handicap and komi. This is now fixed (#374).
    • Speculative fix for a potential app crash when the board setup is changed but somehow the board displays a position after the start of the game (#366). Instead of crashing the app now displays an alert.
    • Two speculative fixes (#369 and #370) for potential app crashes in a wide variety of circumstances.
    • Another set of fixes (#364) that helps with app stability and avoids a number of potential app crashes.

    Regressions

    • A bug was introduced in version 1.6.0 that would cause Ko detection to fail after the app was suspended and was forced to restart by the operating system (a relatively common occurrence). This is now fixed (#372). Because Little Go has struggled with Ko detection many times in the past, this regression was particularly painful.

    Technical changes

    • The project has been upgraded to the iOS 15.2 SDK and Xcode 13.2.1.
    • The following third party software has been upgraded to new versions: Cocoa Lumberjack (from 3.7.0 to 3.7.4) and Firebase Crashlytics (from 4.6.2 to 8.11.0).
    • SGF files that were previously locally maintained have now been added to version control (commit f6aa17eac62bd5594200208d7a657e08297073a4). The manual testing script in the TESTING document can now be played through by anyone.
    Source code(tar.gz)
    Source code(zip)
  • 1.6.0(Feb 27, 2021)

    Summary

    Version 1.6.0 is a feature release. It was published on the App Store on March 27 2021.

    Below is a summary of changes, taken verbatim from the ChangeLog document. For the full story, a list of issues closed for this release is available here on GitHub.

    Features

    Smart Game Format (SGF) data processing:

    • Added an SGF parser (#112). Little Go can now read and write SGF data on its own without having to delegate this task to Fuego (the built-in computer player library). The core piece of software is SGFC, the SGF Syntax Checker & Converter. A big thank you to Arno Hollosi for writing this tool and making it available under a free license, and also for helping with integrating it into Little Go.
    • When you select an SGF file in the archive you can now see if the file contains more than just one game. For each game you now get a preview of its content and you can select which game to load (#338).
    • In the Settings screen there are now a number of user preferences that give you some control over how SGF files are processed (#337). The defaults should be fine, especially for files that were created by Little Go, but if you have imported files from an external source you might need to make adjustments. The in-game manual has all the details.

    Other features:

    • Added a new user preference to the "Board position" settings screen that lets you choose whether discarding the computer player's last move also discards your own last move (#99). The goal is that if the option is enabled you can immediately play again after a discard and try out a different move.
    • Added a new entry to the "More game actions" menu that lets you play a rematch without showing the "New game" screen first (#313). This is a convenientshortcut to quickly start a new game with the same parameters as the last one.
    • Added a new user preference that lets you choose what kind of computer assistance you would like to receive. The default is, just like before, to let the computer make a move on your behalf. What's new is that if you prefer you can now tell the computer to insted only make a suggestion how to play (#28). Note that the feature is still a bit rough on the edges. Known issues have been collected in #363, the polish will come in one of the next releases.

    Improvements and changes

    • The buttons that let the user navigate between board positions have now more space between them (#346), making it less likely that the user taps the wrong button. Thanks to Dan Hassin for both reporting the issue and implementing the fix.
    • Loading a game from the archive now benefits from improved error handling. If a game cannot be loaded you will now get better error messages that should be more helpful.
    • When a game is saved to the archive the current player names are now written to the SGF data (#237).
    • The user interface has been adapted to newer iOS devices with a sensor notch, rounded corners and/or a Home indicator instead of a Home button (#336).
    • The app now supports Dark Mode (#345). A new, darker wooden background for the board still needs to be found (#360).
    • When Little Go is newly installed from the App Store the default computer player is now weaker (#358). This should give more users a positive first app experience. Users who want a challenge can still increase the difficulty by switching to a stronger computer player. A side effect of this change is that the default computer player no longer uses the "Pondering" setting, which means that the iOS device's battery should now be used up a lot less.
    • Added another predefined computer player that has "Pondering" disabled. Users who already have the app installed need to select "Reset to defaults" in the "Players" settings screen to see the new player.
    • The app's user interface no longer exposes GTP engine profiles as a separate entity, instead the user interface now only displays players (#211). It should now be easier for users to find the settings for adjusting the computer player's strength.

    Bugfixes

    • The app no longer crashes when a game with many moves (500 or more) is archived or unarchived (#357).
    • The app no longer crashes when a game is loaded while an ended game with non-alternating dispute resolution is present (#361).
    • Speculative fix for a potential app crash when an SGF file is imported (#362).
    • The information which player resigned is no longer lost when the user switches to an earlier board position (#341).
    • On iPhone devices with larger displays, when the device is rotated while the activity indicator is displayed in the status view the activity indicator is now still displayed after the rotation (#343).

    Regressions

    • All iPhones: When board setup mode was added in version 1.5.0 a bug was introduced that made it possible for board position lists to show erroneous information when moves were discarded and then replayed, or when games were restarted with different characteristics. This bug has now been fixed (#359).
    • iPhone devices with smaller displays: When iOS 13 or newer was installed on these devices the current board position view stopped responding to taps. This bug has now been fixed (#344).

    Technical changes

    • The project has been upgraded to the iOS 14.3 SDK (#335) and Xcode 12.3 (#334).
    • The migration from Twitter Fabric to Google Firebase is now complete (#322).
    • Support for iOS 8 has been dropped, the minimum required version is now iOS 9.0 (#305). This should not affect any devices unless they are artificially held back at iOS 8.
    • The project's software build should now work out of the box for new contributors. Thanks to Dan Hassin for contributing the necessary changes.
    Source code(tar.gz)
    Source code(zip)
  • 1.5.1(Mar 27, 2019)

    Summary

    Version 1.5.1 is a bugfix release. It was published on the App Store on March 24 2019.

    Below is a summary of changes, taken verbatim from the ChangeLog document. For the full story, a list of issues closed for this release is available here on GitHub.

    Bugfixes

    • App no longer crashes during launch on iOS 9.x and below (#332). Thanks to Li Chen Ke and Dennis for reporting the issue.
    Source code(tar.gz)
    Source code(zip)
  • 1.5.0(Mar 21, 2019)

    Summary

    Version 1.5.0 is a feature release. It was published on the App Store on March 21 2019.

    Below is a summary of changes, taken verbatim from the ChangeLog document. For the full story, a list of issues closed for this release is available here on GitHub.

    Features

    • Added a board setup mode (#276). When you start a new game, instead of beginning to play you can now switch to board setup mode. In this mode you can place black or white stones in any order and combination to set up the initial board before you begin to play moves. In addition to placing stones, you can select the side which is to play the first move. Read the "Board setup" section in the in-game manual for a detailed feature description.

    Bugfixes

    • Fix for a memory leak in UnarchiveGameCommand (#331)

    Technical changes

    • Added an initial set of a few automated UI tests (#134)
    Source code(tar.gz)
    Source code(zip)
  • 1.4.1(Jan 19, 2019)

    Summary

    Version 1.4.1 is a bugfix release. It was published on the App Store on January 17 2019.

    Below is a summary of changes, taken verbatim from the ChangeLog document. For the full story, a list of issues closed for this release is available here on GitHub.

    Bugfixes

    • Fixed a bug in Fuego that could cause Fuego to play a stone during the opening game on an intersection that was already occupied by a handicap or setup stone (#328). In addition, Little Go's error handling is now capable of dealing with such a situation so that user's are not stuck in a seemingly endless "computer is thinking" loop. Thanks to Rob Wildschut and Mark Spurlock for reporting the issue.
    Source code(tar.gz)
    Source code(zip)
  • 1.4.0(Jan 16, 2019)

    Summary

    Version 1.4.0 is a maintenance and bugfix release. It was published on the App Store on January 15 2019.

    Below is a summary of changes, taken verbatim from the ChangeLog document. For the full story, a list of issues closed for this release is available here on GitHub.

    Known bugs

    • On iPhone Plus devices as well as on iPhone XS Max, when the user navigates to the first or last board position most of the time the new current board position is not displayed with a special background color as it should (#326).

    Features

    • Added support for loading and saving .sgf files that contain stone and/or player setup nodes (#323). This kind of .sgf files is frequently used for sharing board positions that teach how to play best in certain game situations, or that are puzzles to be solved. Notes:
      • It was already possible to load these .sgf files before the change, but Little Go would not display the stones specified by the stone setup nodes, and playing after loading such an .sgf file would usually result in the alert message "Your move was rejected by Fuego".
      • Even after this change, only those .sgf files are properly handled which contain setup nodes at the beginning of the file. Little Go still cannot properly handle .sgf file that contain setup nodes after the first move is played.

    Improvements and changes

    • The "New game" screen now displays a recommendation to use the area scoring system.
    • The "Game info" screen now shows stone and player setup information.
    • When the app is started for the first time after the update, two new GTP commands "list_setup" and "list_setup_player" are added to the user's list of GTP commands (Diagnostics > GTP commands).
    • The way how an archived game can be shared was re-implemented (UIActivityViewController instead of the long deprecated UIDocumentInteractionController). This may result in users now seeing different sharing options.
    • The Changelog is now available in-app

    Bugfixes

    • When playing with area scoring, the Fuego computer player now correctly includes handicap compensation in its score calculation (#319). Before this fix, the Fuego computer player was calculating scores without handicap compensation, which would lead to it resigning (when playing as white) even though it had actually won the game. Or it might not resign (when playing as black) even though it had actually lost the game. This serious bug was reported by dtsudo - thanks a lot!
    • The app now synchronizes komi with Fuego when board positions are changed (#324). Up until now the app never synchronized komi. This omission could lead to the following problems:
      • An .sgf file is saved with the wrong komi value in it.
      • Fuego is likely to play wrong moves. For instance, towards the end of the game Fuego might start to pass because it thinks it is winning, or it might resign because it thinks it is losing. The probability of misplays increases when there is a large difference in komi values.
      • These problems would occur only if the user loaded an .sgf file that contained a different komi value than the last game that was started with the "New game" function, and then changed board positions or discarded a move.
    • A bug in the board drawing routines was fixed which caused the app to occasionally crash (#308).

    Regressions

    • White player influence is now shown correctly with white squares (#317). White player influence was erroneously shown with black squares since the release of version 1.1.0. Thanks for reporting this bug go to ecru86.
    • Users that do not have automatic crash reporting enabled are now asked whether they want to submit a crash report (#321). The alert that asks for permission was accidentally disabled since the release of version 1.3.0. Because the alert was disabled, no crash reports were submitted at all unless the user had automatic crash reporting enabled.

    Technical changes

    • The project has been upgraded to the iOS 12.1 SDK (#314) and Xcode 10.1 (#315)
    • Code signing overhaul: Code signing is now managed automatically by Xcode
    • The project is now built with Bitcode enabled (#295)
    • The project now uses libc++ (#181), the C++ standard library implementation provided by the LLVM project, instead of libstdc++, the GNU project's implementation.
    • Communication between Little Go and Fuego is no longer based on named pipes, instead it works with a custom stream buffer that acts as an in-memory pipe (#316). This change was necessary because libc++ has a bug [1] that breaks the original named pipe communication channel. [1] https://bugs.llvm.org/show_bug.cgi?id=23078
    • Started migration from Twitter Fabric to Google Firebase (#320). A best effort has been made to disable all other Google services and to only keep Crashlytics enabled. Notably, Firebase Analytics data collection has been explicitly disabled! An explanatory side note: This technical change has become necessary because in January 2017 Google acquired Fabric/Crashlytics and, after a grace period of 1.5 years, announced in September 2018 that they will discontinue Fabric in favour of the Firebase platform. It's all very complicated, but the main point is that Little Go wants to continue to use the excellent Crashlytics as its crash reporting service, and since that now requires integration with the Firebase platform, Little Go has no choice but to follow Google's lead.
    • All third party software has been upgraded to their newest versions (Boost 1.69.0, CocoaPods 1.5.3, MBProgressHUD 1.1.0, Cocoa Lumberjack 3.4.2, Fabric 1.6.13, Crashlytics 3.8.6)
    Source code(tar.gz)
    Source code(zip)
  • 1.3.1(Jan 22, 2017)

    Summary

    Version 1.3.1 is a bugfix release. It was published on the App Store on January 19 2017.

    Below is a summary of changes, taken verbatim from the ChangeLog document. For the full story, a list of issues closed for this release is available here on GitHub.

    Features

    None

    Other improvements and changes

    None

    Bugfixes

    • Another ko detection problem when viewing an old board position is now fixed (#307). This was the root cause for the dreaded alert message "Your move was rejected by Fuego", which must have popped up on quite a few people's devices, but which I had never been able to reproduce despite the bug reports that were kindly sent to me by some of the most patient users. Yesterday, however, I received a report that finally gave me a reproducible case which allowed me to pinpoint and fix the coding error. Many thanks to everybody who sent bug reports, but especially to Manuel Braun for submitting the crucial last bug report.

    Technical changes

    None

    Source code(tar.gz)
    Source code(zip)
  • 1.3.0(Sep 14, 2016)

    Summary

    Version 1.3.0 is a technical and bugfix release. It was published on the App Store on September 14 2016.

    Below is a summary of changes, taken verbatim from the ChangeLog document. For the full story, a list of issues closed for this release is available here on GitHub.

    Features

    • iPad Pro is now supported with its native screen resolution (#297)

    Other improvements and changes

    • When the game is resumed to settle a life & death dispute, a "Resume Play" alert is displayed if the game rules allow resumption with non-alternating play. Previously the alert buttons were sometimes displayed in the order Black/White and someteimes in the order White/Black, depending on whose player's turn it was. Now the alert buttons are always displayed in the order Black/White (#300)

    Bugfixes

    • Ko detection now works correctly if an old board position is viewed (#289). Many thanks to Denis Martynov for bringing this to my attention. I promised to release the bugfix "as soon as possible, probably next weekend". This was in June 2015 - over a year ago :-(
    • The status view now displays the correct text after the user discards all moves at the beginning of a game (#301)
    • iPhone n Plus devices: The "Game Info" and "More Game Actions" buttons are now correctly enabled after rotating the device to landscape (#299)

    Technical changes

    • The project has been upgraded to the iOS 9.3 SDK (#298) and Xcode 7.3.1
    • Support for iOS 7 has been dropped, the minimum required version is now iOS 8.1 (#260). The only device that is no longer supported is the iPhone 4.
    • The project now uses CocoaPods for most 3rdparty libraries (#291)
    • The 3rd party crash reporting library QuincyKit was replaced by a new library called Crashlytics (#293)
    Source code(tar.gz)
    Source code(zip)
  • 1.2.0(Jun 24, 2015)

    Summary

    Version 1.2.0 is a feature release. It was published on the App Store on June 23 2015.

    Below is a summary of changes, taken verbatim from the ChangeLog document. For the full story, a list of issues closed for this release is available here on GitHub.

    Features

    • iPhone 6/6+ are now supported with their native screen resolution (#263)
    • iPhone 6+ has a redesigned user interface that makes better use of the available screen estate (#253). iPhone 6+ also supports holding the device in landscape.
    • When starting a new game, it is now possible to select from several predefined rulesets, which allows setting many game rules at once with a single tap (#274). This makes the "New game" screen less cluttered and more user friendly. Rule enthusiasts can still adjust each individual game rule by calling up an "Advanced settings" screen.
    • Gameplay mechanics at the end of the game have been significantly revised:
      • It is now generally possible to resume play after two pass moves without having to discard ("undo") the second pass move
      • 3 new game rules were added that govern gameplay mechanics at the end of the game. These rules allow to play games under AGA or IGS rules (#221, #223), but also under Japanese and Chinese rules where non-alternating play is possible to resume a game after it has ended after two pass moves (#275).
    • As a consequence of these new gameplay mechanics at the end of the game, a much wider array of .sgf files can now be loaded from the archive, provided that the user selects the appropriate rules for the game that is in the .sgf file.
      • Files that contain more than two pass moves at the end of the game. This is especially useful to load games that were played on IGS (Pandanet), where games end with 3 instead of 2 pass moves.
      • Files that resume play after two pass moves. Again, this is useful for loading files from IGS (Pandanet), but also for files that contain games played under any ruleset that allows play to be resumed after two pass moves.
      • Files that contain non-alternating play (e.g. two moves in a row by black). This is useful to load files that contain game problems where theoretical board situations are set up by non-alternating play. Also, games can now be loaded that were played under rulesets (e.g. Chinese, Japanese) that allow play to be resumed after two pass moves by non-alternating play.
    • Special thanks go to Norbert Langermann and his innocent suggestion to add support for loading .sgf files with games that were played on IGS. This was the trigger for adding the new end-of-game gameplay mechanics.
    • One more thing: When placing a stone a magnifying glass is now displayed that shows the area of the board that currently under the user's 'fingertip (#271). This feature replaces the old "stone distance from fingertip" feature, which confused and was hated by many users.

    Other improvements and changes

    • Disable Fuego pondering in human vs. human games (#281). This saves a lot of otherwise wasted battery power. Thanks to Ben Jackson for the suggestion. Unfortunately, a nasty piece of code was required to upgrade existing user preferences, which may result in unnecessary player and profile backup copies cluttering the upgraded preferences. Users will get an alert if this happens so that they can clean up their preferences.
    • When a game cannot be loaded from the archive because it has moves after the game has ended, the error message displayed to the user should now be less cryptic (#277)
    • When the game has ended, the "Scoring" menu item is now shown as a button so that the user can quickly switch between scoring mode and play mode without first having to call up the "More game actions" menu (#268)
    • A couple of buttons have gotten new icons (#269). Thanks to David Helfand for the suggestion.
    • The status view now always shows the status for the current and the next board position (#265). Up until now the status view only showed when a player had passed, and never showed any information about the next board position.

    Bugfixes

    • The app now correctly synchronizes handicap stones with Fuego when board positions are changed (#279). This is the most important bugfix of this release because it fixes another source for the infamous "The computer played an illegal move" and "Your move was rejected by Fuego" alerts. Many thanks to Laurent Guanzini for providing step-by-step instructions that helped me with diagnosing the problem!
    • The app no longer crashes when a game is loaded from the archive that contains a board that is larger than 19x19 (#283). The game still cannot be loaded, but an error message is displayed instead of crashing.
    • The app no longer crashes when the last game in the archive is deleted (#286)
    • It is now possible to place a stone when viewing an old board position, even if the game has already ended (#278). It is thus possible to resume play at an earlier board position than the last.
    • The user interface no longer rotates while a stone is being placed (#272)
    • The status view now correctly displays " passed" when a computer vs. computer game is paused (#266)
    • If the user attempts to make an illegal move, the status view now displays the intersection of the move (#261)
    • The device statusbar at the top of the screen no longer disappears when some screens are displayed (#256)
    • iPad only: The board is now rotated correctly even if it is not visible at the time that the device orientation changes (#255)
    • A number of other bugs were fixed that may have caused crashes (#192, #284)
    • Other minor bugfixes (#209, #257, #258, #262, #273)

    Technical changes

    • The project has been upgraded to the iOS 8.1 SDK (#248) and Xcode 6.1.1
    • 64-bit support was added (#249)
    • The Xcode project has been cleaned up (#252, #253)
    • The vector graphics sources (.svg files) for all icons in the app were added to the project and to version control (#264)
    • User defaults updating is no longer triggered for fresh installs (#282)
    • The 3rd party crash reporting library QuincyKit was upgraded to version 3 (#285)
    Source code(tar.gz)
    Source code(zip)
  • 1.1.2(Oct 3, 2014)

    Summary

    Version 1.1.2 is a bugfix release. It was published on the App Store on October 3 2014. It contains only the changes listed below.

    Bugfixes

    • Interactive UI elements are now disabled while a stone-placing gesture is in progress (#243). This closes a loop hole that may have been the source for a number of crashes in the past (e.g. the crash described in #244)
    • Stones no longer temporarily disappear from view while dragging a new stone (#245). Thanks to stfiend for reporting this bug.
    • Fixed a potential crash if the computer player starts playing immediately after a game is loaded from the archive (#247).

    Regressions

    • It is now possible again to make a move when viewing an old board position while the game has already ended (#246). This will resume the game, discard all board positions beyond the one that the user is currently viewing, and then play the desired move.
    Source code(tar.gz)
    Source code(zip)
  • 1.1.1(Aug 17, 2014)

    Summary

    Version 1.1.1 is a bugfix release. It was published on the App Store on August 16 2014. It contains only the single change listed below.

    Bugfixes

    • App (hopefully) no longer crashes while stone is dragged around the board (#242)
    Source code(tar.gz)
    Source code(zip)
  • 1.1.0(Aug 17, 2014)

    Summary

    Version 1.1.0 is a technical release that contains no new features. It was published on the App Store on August 14 2014.

    Below is a summary of changes, taken verbatim from the ChangeLog document. For the full story, a list of issues closed for this release is available here on GitHub.

    Improvements and changes

    • The app's user interface has been updated to the iOS 7 look & feel (#204)
    • The "maximum zoom" user preference has been removed (#217)
    • iPad: The "Game Actions" menu is now displayed in a popover (#232)
    • The name of the "iPhone 4S" demo profile has been changed to "Strong" (#210)
    • The "long press" gesture for placing a stone now has a slightly longer delay (#241). This should make it less likely that the user places a stone when instead she wanted to scroll.

    Bugfixes

    • Drawing for Retina displays has been fixed (#205). Many thanks to Eric O. Lebigot for reporting the issue and giving me the necessary KITB to investigate the problem.
    • The app no longer crashes when the "Score" segment is visible on the "Game Info" screen and player/profile information is edited (#225)
    • The app no longer crashes when a player is viewed on the "Game" segment of the "Game Info" screen and the game ends (#226)
    • The app no longer crashes when a saved game is renamed and the new name contains illegal characters (#235)
    • iPad: The list of board positions now shows the correct move after discard & play (#233)
    • iPhone: Potential app crash eliminated if user taps an entry in the list of board positions (#229)
    • Handicap compensation is now shown in the "Game info" screen even if scoring mode is not enabled (#220)
    • The "Minimum number of games" setting in the resign behaviour advanced settings screen is no longer editable if the "Auto-select" setting is turned on (#207)
    • When the board is zoomed in or out, the internally managed zoom scale can no longer become lower/higher than the intended minimum/maximum (#139)

    Regressions

    • The "Load" button on the Archive tab is now disabled again while the computer is thinking (#227). This was broken when document interaction was introduced in 0.11.0.

    Technical changes

    • Memory usage during zooming has been greatly reduced (#212, #214, #215)
    • Memory usage for wooden background image has been reduced (#216)
    • The project has been upgraded to the iOS 7 SDK (#204) and Xcode Xcode 5.1.1
    • Support for iOS 6 has been dropped, the minimum required version is now iOS 7.0. Devices that are no longer supported are the iPhone 3GS and the iPod Touch 4th generation.
    • The user interface now uses Auto Layout instead of manually calculated frames (#206)
    • Unit tests were migrated from SenTestingKit/OCUnit to XCTest (#222)
    • No longer use any .xib files, the entire UI is now set up programmatically
    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(Aug 17, 2014)

    Summary

    Version 1.0.0 is a feature release. It was published on the App Store on January 09 2014.

    Below is a summary of changes, taken verbatim from the ChangeLog document. For the full story, a list of issues closed for this release is available here on GitHub.

    Features

    • When a new game is started, it is now possible to select one of several ko rules. Simple ko remains the default, new choices are positional and situational superko (#169).
    • When a new game is started, it is now possible to select whether area or territory scoring should be in effect (#30). Area scoring is the default because the computer player (Fuego) does not properly support territory scoring.
    • During scoring it is now possible to mark stones in seki (#190). Tap the "Actions" button to find the menu entry that lets you switch from "mark dead stones" to "mark stones in seki".
    • It is now possible to display player influence, aka territory statistics, for an estimate who owns an area (#18). The feature can be enabled under "Settings > Display > Display player influence".

    Other improvements and changes

    • Some of the sections on the "Settings" tab have been re-organized (#132)
    • Attempting to play an illegal move now displays the reason why the move is illegal (#182). Examples are suicide, ko or superko.
    • When a new game is started and a handicap is selected, komi is adjusted automatically to 0.5 (#189)
    • The computer player's strength has improved because a new version of Fuego has been integrated into Little Go. It is not possible to quantify the improvement against human opponents, but if the new and the old versions of Fuego play against each other, the new version wins 80% - 90% of the games.
    • Use pattern-based additive knowledge on devices with more than 512 MB memory (#187).

    Bugfixes

    • iOS 7: The app no longer crashes on startup after a game has been imported from an external app such as Mail or DropBox (#184)
    • The app no longer crashes when game is loaded while "Game Info" screen is displayed (#191)
    • The app no longer hangs after launch if it was previously suspended/killed during scoring (#203)
    • The maximum zoom scale has been reduced to 2.0 for iPad devices, and to 2.5 for iPhone devices (#202). The previous maximum zoom scale 3.0 was too high,causing crashes on most devices.
    • The next stone marker "A" is no longer displayed after all moves have been discarded (#200)
    • The "Start of the game" board position table view cell no longer has a wrong background color (#199)
    • The "Delete all games" button on the "Archive" tab is no longer affected by edit mode (#185)
    • A sliding gesture no longer puts the entire "Players & Profiles" screen into edit mode (#175)
    • A number of memory leaks were fixed (#188 and other, smaller fixes)

    Technical changes

    • The project has been upgraded to Xcode 5.0 (#183)
    • Support for iOS 5 has been dropped, the minimum required version is now iOS 6.1 (#198). Devices that are no longer supported are iPad 1st generation and iPod Touch 3rd generation.
    • The 3rd party software build process has been completely rewritten (#92)
    • All 3rd party software have been upgraded to newest versions (Fuego trunk r1728, Boost 1.55.0, MBProgressHUD 0.8, Cocoa Lumberjack 1.7.0, ZipKit 1.0.2, QuincyKit 2.1.9)
    Source code(tar.gz)
    Source code(zip)
  • 0.12.0(Aug 17, 2014)

    Summary

    Version 0.12.0 is a feature release. It was published on the App Store on September 11 2013.

    Below is a summary of changes, taken verbatim from the ChangeLog document. For the full story, a list of issues closed for this release is available here on GitHub.

    Features

    • It is now possible to configure the computer player with a threshold how quickly it will resign a game (#133). For instance, it is now possible to tell the computer player to never resign so that the game can be played out to the very end. This also allows beginners to play with a large handicap on a small board (up until now the computer player would always resign immediately when faced with an overwhelming handicap). The resignation behaviour setting can be found towards the bottom on the "edit profile" screen.
    • When an old board position is viewed, the intersection where the next stone will be placed is now marked with the letter "A" (#101). This can be disabled in the "Board position" settings.
    • Changes to the active profile are now immediately applied to the GTP engine (#123). For instance, it is now possible to change the playing strength or the resign behaviour of the computer player without starting a new game.
    • At the bottom of the "Archive" tab there is now a button to delete all archived games in one fell swoop (#55)
    • The tab order can now be customized (#57)
    • Players & profiles can now be reset to their factory defaults (#54), in case some severe misconfiguration occurred
    • Players & profiles can now be edited directly from the Game Info screen (#122)

    Other improvements and changes

    • Loading a game from the archive is now about 10% faster (#166)
    • The user interface for changing the dangerous "Max. memory" profile setting is now vastly improved (#153). The maximum value that can be selected for the setting is now limited to a fraction of the device's physical memory, and the amount of physical memory that the device has is also displayed.
    • When a computer player is edited, there is now a button that allows to directly edit the profile that the player is using (#71)
    • When a profile is edited, the players that are using the profile are now listed at the bottom of the screen (#70)
    • The button to reset predefined GTP commands is now clearly marked with a "red warning" style (#56)
    • The "About" screen now displays the build date/time (#161)

    Bugfixes

    • The GTP engine is configured to no longer recognize positional superko (#171). This is a temporary solution to bring the GTP engine's rules into sync with Little Go's rules. Little Go currently does not recognize superko, so this sync'ing fixes the problem that Little Go lets the user make a superko move which is then rejected by the GTP engine. Many thanks to Brid Griffin for emailing me a bug report that helped me with diagnosing this problem! Note that Little Go will officially support superko in 1.0.
    • On the iPad, the board size is now correct after the device is rotated while the board is zoomed (#162)
    • Dragging a stone outside the zoomed in board section no longer places the stone (#143)
    • The computer player now resigns even if the profile setting "Max. games" is set to a value < 5000 (#154)
    • Undo resign is no longer possible when viewing an old board position. This fixes the problem that undo resign when viewing an old board position corrupts the backup .sgf (#158).
    • If the game has ended but an old board position is viewed, the status view now shows information related to the board position instead of end-of-game information (#107)
    • Scoring mode is no longer activated automatically when a player resigns. The effect is that the status now reads "x has resigned" instead of the inappropriate "y wins by ..." (#4). If a score is desired it must be requested by manually activating scoring mode.
    • The user can no longer place a stone on behalf of the computer player (#160)
    • The board position can no longer be changed while Fuego is searching for an initial set of dead stones during scoring (#163)
    • A number of potential app crashes have been eliminated (#130, #172, #173)
    Source code(tar.gz)
    Source code(zip)
  • 0.11.1(Aug 17, 2014)

    Summary

    Version 0.11.0 is a bugfix release. It was published on the App Store on May 22 2013. It contains only the changes listed below.

    Bugfixes

    • Board position can no longer be changed while other commands are executed (#156). This hard-to-find bug caused numerous crashes (e.g. those described by issues #128 and #129) and other problems, such as the infamous "The computer played an illegal move." alert. Many thanks to Logan Bouia and Carole Wolf for emailing me bug reports that helped me with diagnosing the problem.
    • The entire game is now saved when an old board position is viewed (#150)
    • The app should no longer crash after receiving a memory warning on iOS 5 while the "Game info", "New game" or "Save game" screens are displayed (#157). Thanks to the anonymous iPad 1 user who patiently reminded me that the issue needs fixing by sending an occasional crash report.
    • Fix for a memory leak in TableViewSliderCell (#155)
    Source code(tar.gz)
    Source code(zip)
  • 0.11.0(Aug 17, 2014)

    Summary

    Version 0.11.0 is a feature release. It was published on the App Store on April 24 2013.

    Below is a summary of changes, taken verbatim from the ChangeLog document. For the full story, a list of issues closed for this release is available here on GitHub.

    Features

    • Display coordinate labels (#12). This can be turned on or off under "Settings > Play view > Display coordinates".
    • Display move numbers (#17). The user preference can be found under "Settings > Play view > Display move numbers". Because displaying many move numbers is cluttering the board, the percentage of move numbers to display can be adjusted with a slider.
    • Zoom the board up to a 3x zoom scale (#16). All standard zoom gestures are supported. Because zooming costs memory the user may want to limit herself to a maximum zoom scale that is below 3x. This can be done with the slider found under "Settings > Play view > Maximum zoom". A limit of 2x zoom scale is recommended for devices that do not have much RAM (typically older devices such as the iPhone 3GS or the iPad 1st generation).
    • Archived games can now be exported to Mail (#19) and other apps that are capable of processing .sgf files (e.g. DropBox).
    • Games can now be imported from Mail (#20) and other apps that are capable of exporting .sgf files (e.g. DropBox).

    Other improvements and changes

    • The application now launches much faster (#114), except for the first time after upgrading from a previous version.
    • Status text and activity indicator are now displayed in the navigation bar at the top of the screen (#120).
    • When a new game is started, the "discard old game" question is not displayed anymore if there have been no changes since the game was saved the last time (#42).
    • Loading a game from the archive is now about 10% faster (commit 139bb46).
    • Drawing of Go board now makes better use of the available space. This is especially noticeable for the large 19x19 board on a small iPhone screen (commit 86443d9).
    • The "stone distance from fingertip" user preference now behaves more predictably: Previously a "clever" algorithm tried to figure out the "best" distance by taking into account various parameters such as board size and screen size. The new algorithm now simply scales a fixed maximum distance according to the value of the slider.

    Bugfixes

    • No longer crash when a computer vs. computer game is restored during app launch and that game has already ended (#127). Thanks to Serge Grossenbacher for reporting this bug.
    • No longer draw in secondary thread during app launch (#117). This eliminates another potential source of crashes.
    • iPad only: Screen should no longer be flickering wildly after loading some games from the archive (#126).
    • It is now possible to save games with a name that consists of 1 or 2 characters (#125).
    • Resigning is no longer possible when viewing an old board position. This fixes the problem that resigning when viewing an old board position corrupts the backup .sgf (#115).
    • During scoring, the activity indicator is now only displayed for finding the initial set of dead stones (#121).

    Known bugs

    • App may crash when board position is changed (possibly forward going only) (#128)
    • App crashes when user plays an illegal move while viewing an old board position (#129)
    • App crashes during launch after a player has been deleted (#130)

    Technical changes

    • MBProgressHUD upgraded to the newest version (HEAD of the git repository). The progress indicator is now a round shape instead of a horizontal bar.
    • Private Objective-C method declarations in .m files have been removed to reduce unnecessary code duplication (#102).
    Source code(tar.gz)
    Source code(zip)
  • 0.10.0(Aug 17, 2014)

    Summary

    Version 0.10.0 is a feature release.It was published on the App Store on March 06 2013.

    Below is a summary of changes, taken verbatim from the ChangeLog document. For the full story, a list of issues closed for this release is available here on GitHub.

    Improve graphic design

    • Add wooden background
    • Add artwork for black/white/cross-hair stones (instead of just drawing filled circles)
    • New layout on iPad
    • New icon for "continue" button in computer vs. computer games, to distinguish it from the new "forward" button

    Features

    • View board positions for moves played earlier during the game
    • Replace "undo" with "discard move"
    • A game that has ended can now be resumed in two ways:
      • Discard the most recent move if two pass moves were played by mistake
      • Select "Undo resign" from the game actions menu after accidentally resigning the game
    • Redesign of "New game" and "Game info" screens
    • New user preferences
      • Settings > Play view > Stone distance from fingertip
      • Setting > Board position > Discard future moves alert
      • Settings > Scoring > Score when game ends
    • Add support for collecting logging data
      • Turn this on under Diagnostics > Collect logging data
      • Logging data is automatically included in a bug report
    • Do not trigger the computer player when a computer vs. computer game is restored on app launch
    • Add placeholder message to "Archive" tab if there are no saved games
    • Various other small GUI updates and fixes

    Bugfixes

    • App no longer crashes if a computer vs. computer game is paused and the computer passes or resigns
    • Diagnostics > Bug report section is no longer disabled when computer player resigns
    • Fix various memory leaks
    • GUI updates during long-running actions (e.g. app launch, load game) should now happen always in the main thread; besides smoother GUI updates, this should eliminate one more possible source of crashes

    Known bugs

    • The resigned state of a game is lost when a game is saved or loaded; this is not new in this release, it's just been added to the list of known bugs

    Technical changes

    • Upgrade project to Xcode 4.6
    • Drop support for iOS 4.3, the minimum required version is now iOS 5.0
    • Add iOS 6 compatibility
    • Add iPhone 5 support
    • Improve 3rd party software build process
    • Upgrade CocoaLumberjack to version 1.6
    • Update Doxygen target to use the MacPorts path /opt/local/bin
    Source code(tar.gz)
    Source code(zip)
  • 0.9.2(Aug 17, 2014)

    Summary

    Version 0.9.2 is a bugfix release. It was published on the App Store on January 04 2013. It contains only the changes listed below.

    Bugfixes

    • Fix for crash if Play tab is not visible and low memory conditions occur (issue #86)
    • Fix for crash if an error occurs while loading an archived game, e.g. because the game contains an illegal move (issue #88)
    • Fix for crash when Little Go thinks that a move made by the computer player is illegal. Note that the root cause of the problem has not yet been identified, but at least the app no longer crashes when the condition occurs. Instead you will be asked to submit a bug report (please do!), the game in progress is automatically saved to the archive and a new game is started to bring the app back into a stable state. This temporary solution will remain in place until I can track down and fix the actual bug (issue #90).
    • Fix for memory leak that occurs when the Game Info view has been selected on the Play tab, but the Play tab is not visible and low memory conditions occur (issue #87)
    • Fix for memory leak when a bug report is sent (issue #91)
    • Fix for GUI update errors on Play tab after an error occurs while loading a game (issue #89)
    Source code(tar.gz)
    Source code(zip)
  • 0.9.1(Aug 17, 2014)

    Summary

    Version 0.9.1 is a bugfix release. It was published on the App Store on December 15 2012. It contains only the single change listed below.

    Note that starting with this version the project's bugtracker is now hosted on GitHub

    Bugfixes

    • Another bug in the Ko detection logic is now fixed (#2). For instance the following sequence: Black A2, White B2, Black pass, White C1, Black pass, White A1. If Black now tries to capture on B1, this was erroneously thought to be illegal due to Ko.
    Source code(tar.gz)
    Source code(zip)
  • 0.9.0(Aug 17, 2014)

    Summary

    Version 0.9.0 is a feature release. It was published on the App Store on December 06 2012.

    Below is a summary of changes, taken verbatim from the ChangeLog document.

    Features

    • 3 new settings have been added to profiles (maximum number of playout games, maximum thinking time, ponder time). These settings provide much improved control over the computer player's playing strength.
    • Individual profile settings are now hidden in an "Advanced configuration" screen. The user can still tweak those settings if she wants to, but there is also a simplified "playing strength" screen where, by selecting a playing strength, the user adjusts several profile settings in a single action, without having to know the technical details behind each setting.
    • The computer player can now be interrupted when it is thinking.
    • The user can now choose to send a crash report if the app crashes (available when the app is launched the next time after the crash). Settings are available on the "Diagnostics" tab. Read the in-game manual for more information.
    • The user can now send send a bug report email with attached diagnostics information file from within the app. The function is available on the "Diagnostics" tab. Read the in-game manual for more information.
    • The Game Info view now displays the currently active profile.

    Bugfixes

    • Loading an .sgf file with bad content no longer crashes the app. Thanks to Andrew Hersee for reporting this bug.
    • iPhone only: The Status line is now 2 lines high and no longer truncates texts. Thanks to Andrew Hersee for reporting this bug.
    • Improved protection against data loss after a crash (preferences data is saved more often, and the game in progress is saved after every move). Thanks to Tripp Lilley for reporting this bug.
    • It is no longer possible to enter empty profile and player names
    • iPad only: The Go board is now properly resized when the interface orientation changes while the "Play" tab is not visible
    • Display an error message when an illegal save game name is entered (instead of just silently not saving the game)

    Technical changes

    • The project's source code is now hosted on GitHub (https://github.com/herzbube/littlego/)
    • The project now has a Trello board where you can see what is currently being worked on (https://trello.com/board/little-go/4fd84c295027333d460dcc32)
    • An Ohloh page now provides mildly interesting source code statistics (https://www.ohloh.net/p/littlego)
    Source code(tar.gz)
    Source code(zip)
  • 0.8.1(Aug 17, 2014)

    Summary

    Version 0.8.1 is a bugfix release. It was published on the App Store on June 21 2012.

    Below is a summary of changes, taken verbatim from the ChangeLog document.

    Features

    • New application icon
    • Added "Quick Start Guide" section to in-game help

    Bugfixes

    • A bug in a low-level function, which has been present in all versions of Little Go since its initial App Store release, has finally been found and exterminated. The bug caused "Undo" to not work correctly in certain situations. The error, when it manifested, did not have an immediate visible impact in the GUI, instead it caused all sorts of follow-up problems to occur (capturing stones might not work, suicide moves might be allowed, marking dead stones in scoring mode might not work correctly, and in some extreme cases it might even cause the app to crash).
    Source code(tar.gz)
    Source code(zip)
  • 0.8.0(Aug 17, 2014)

    Summary

    Version 0.8.0 is a feature release. It was published on the App Store on April 24 2012.

    Below is a summary of changes, taken verbatim from the ChangeLog document.

    Features

    • iPad version with support for retina display and all interface orientations
    • iPhone now supports upside-down portrait orientation
    • Improved in-game help

    Bugfixes

    • Loading a game is now much faster
    • Drawing, especially while moving a stone around the board, now uses 10-15% less CPU power, which improves battery life
    • Ko is no longer erroneously detected in certain situations (e.g. black has stones on A2, B1, B3, C1, C3, white has stones on B2 and C2; black now plays on D2, white on B2; in this situation, black C2 was erroneously thought to be illegal due to Ko)
    • Profiles: "Reuse subtree" is now always enabled (and cannot be disabled) when pondering is enabled; previously the two settings were independent of each other, which was a bug
    • Loading archived game now works even if temporary file is still around for some reason

    Technical changes

    • Rewrite of Play view drawing code
    • Lots of new unit tests
    • Upgrade to iOS SDK 5.1
    Source code(tar.gz)
    Source code(zip)
  • 0.7.1(Aug 17, 2014)

    Summary

    Version 0.7.1 is a bugfix release. It was published on the App Store on January 09 2012.

    Below is a summary of changes, taken verbatim from the ChangeLog document.

    Bugfixes

    • Loading a game with no moves is now handled correctly (previously the app would hang and needed to be manually killed to get into a usable state again)
    • Capturing moves that "almost" create a Ko are now correctly recognized as legal moves (e.g. black A1, white A2, black D1, white B2, black C2, white C1, previously the black move on B1 was thought to be illegal)
    • It is no longer possible to place stones outside the board in the top-left and top-right corners
    • Board size 7x7 no longer allows handicaps greater than 4 (selecting such a handicap previously would result in no handicap being set at all)
    Source code(tar.gz)
    Source code(zip)
  • 0.7(Aug 17, 2014)

    Summary

    Version 0.7.0 was the first release published on the App Store. It was published on December 23 2011.

    Below is a summary of changes, taken verbatim from the ChangeLog document.

    Features

    • Added application, tab bar and toolbar icons
    • No longer display an alert when a memory warning is received from iOS
    • Rename "Debug" tab to "Diagnostics"

    User preferences

    • None

    Bugfixes

    • Dead stones are now always marked correctly (they were not marked correctly in release builds due to an uninitialized variable)
    • Enabling scoring mode in mid-game made further game play impossible; this has been fixed

    Technical changes

    • Eliminated various memory leaks
    • Application startup now mostly happens in a secondary thread; this makes it possible to run the application through Instruments
    Source code(tar.gz)
    Source code(zip)
  • 0.6(Aug 17, 2014)

    Summary

    Version 0.6 was an internal version that has never been released to the App Store.

    Below is a summary of changes, taken verbatim from the ChangeLog document.

    Features

    • A stone is now displayed immediately when fingertip touches the board
    • GTP engine settings are now managed in profiles (instead of as player attributes)
    • An alert is displayed, and game and user preferences are now saved as an emergency when iOS sends a memory warning
    • The game info view now displays entries for "last move" and "next move"
    • Cross-hair point distance from fingertip is now scaled based on board size
    • Default board size is now 9x9 (down from 19x19)
    • New "Help" and "Credits" documents
    • All license documents are now displayed in their own table view

    User preferences

    • All user-defined players are removed on upgrade
    • All scoring user defaults are lost on upgrade
    • New user preferences for "inconsistent territory" (scoring) and "place stone under finger" (play view)
    • Reorganization of Settings view into topical sections

    Bugfixes

    • Changing a player's type (human/computer) now shows/hides the profile as appropriate
    • Game info view is now dismissed when a game is loaded
    • Play view now correctly calculates board edge thickness
    • User preference "mark dead stones intelligently" is now displayed correctly

    Technical changes

    • Upgrade project to Xcode 4
    • User defaults are now versioned
    • The GTP log now displays seconds
    • A lot of code cleanup
    Source code(tar.gz)
    Source code(zip)
  • 0.5(Aug 17, 2014)

    Summary

    Version 0.5 was an internal version that has never been released to the App Store.

    Below is a summary of changes, taken verbatim from the ChangeLog document.

    Features

    • When a new game is started it is now possible to select a handicap (up to 9 stones in fixed locations) and a komi value
    • The user can now "flip" the Play view to see an Info view which displays information about the current game
    • New accurate scoring mode
      • When activated, the user can now interactively mark stone groups on the Play view as dead or alive
      • Territory scoring is based on stone groups' dead or alive status
      • The Info view displays detailed tabular scoring information
      • Scoring mode is activated automatically when the game ends, or by the user at any time during normal game play
    • The status line on the Play view now displays a message if the computer player passed

    Bugfixes

    • The GTP log now displays all commands (previously some commands were lost)

    Technical changes

    • None
    Source code(tar.gz)
    Source code(zip)
  • 0.4(Aug 17, 2014)

    Summary

    Version 0.4 was an internal version that has never been released to the App Store.

    Below is a summary of changes, taken verbatim from the ChangeLog document.

    Features

    • The GTP log on the Debug view is now a table view (the raw log is still available by switching to the view's "backside")
    • Arbitrary commands can now be submitted to the GTP engine
    • GTP commands can be "canned" for later or repeated submission
    • Interruptions (e.g. a phone call) now pause a computer vs. computer game
    • Sound/vibration is temporarily disabled during an interruption

    Bugfixes

    • None

    Technical changes

    • Add Cocoa Lumberjack logging framework
    Source code(tar.gz)
    Source code(zip)
  • 0.3(Aug 17, 2014)

    Summary

    Version 0.3 was an internal version that has never been released to the App Store.

    Below is a summary of changes, taken verbatim from the ChangeLog document.

    Features

    • Computer players now have a set of GTP engine attributes that allow to limit memory consumption and, to a certain degree, playing strength
    • Game archive
      • A game in progress can now be saved
      • Existing games can be managed on a separate "Archive" tab
      • The game archive is accessible from iTunes so that archived games can be transferred to/from the iOS device when it is connected to iTunes
    • The game in progress is auto-saved when the application is put into the background so that the game is not lost if the application is subsequently killed for any reason
    • Play view now uses a grey instead of a b/w color scheme

    Bugfixes

    • By default the GTP engine now uses 64 MB memory only; on an iPhone 3GS with 256 MB memory this limit is sufficient that the system no longer kills the application because it uses up too much memory
    • Application no longer hangs if GTP engine responds with error to final_score
    • Capturing moves with a single stone now work correctly
    • Pass moves are no longer drawn on the Go board
    • Toolbar buttons on Play view now use an explicit text label instead of confusing icons

    Technical changes

    • Less view updates on the Play view, which means less power consumption and slightly snappier panning
    • Add command processor design pattern
    • GTP commands can now be executed synchronously
    Source code(tar.gz)
    Source code(zip)
  • 0.2(Aug 17, 2014)

    Summary

    Version 0.2 was an internal version that has never been released to the App Store.

    Below is a summary of changes, taken verbatim from the ChangeLog document.

    Features

    • Players can be added/edited/removed; player attributes
      • Name
      • Is human / is computer player
    • Start a new game
      • Variable board size
      • Select players
    • Pause game in an automated game with two computer players
    • Undo move
    • Markup last played stone
    • Play sound and/or vibrate when computer player makes a move
    • Display star points for all board sizes
    • User preferences

    Bugfixes

    • Too many to enumerate

    Technical changes

    • Updated to use Fuego 1.1
    • Unit test support
    Source code(tar.gz)
    Source code(zip)
iPhone and iPod Touch version of Skeleton Key: is an addictive and unique puzzle game in which you shift keys around the board unlocking treasure chests. Made with cocos2d-iphone.

Skeleton Key (iOS) Skeleton Key is an addictive and unique puzzle game in which you shift keys around the board unlocking treasure chests. It's availa

null 117 Jun 6, 2022
Multiplayer RockPaperScissors iOS game. You can play with anybody all around the world to be a RockPaperScissors master!

RockPaperScissors RockPaperScissors is an app where you can play classic "rock, paper, scissors game" with friends on your phones. Using Firebase you

Paweł Brzozowski 2 Jan 7, 2022
Spare Parts is a 2D physics game that lets you build silly contraptions and machines.

Spare Parts Spare Parts is a 2D physics game that lets you build silly contraptions and machines. The goal for this project is: 100% of the code is op

Adam Wulf 14 Feb 9, 2022
BabySortingToyGame - Build a little game for babies to sort shapes in the correct location. This is made in SwiftUI using drag gestures.

This is a demo to build a little mini-game "for babies". It's inspired in this kind of games:

Pedro Rojas 17 Oct 23, 2022
A Modern MUD Client for iPhone and iPad.

MUDRammer — A Modern MUD Client > invoke incantation of build status divination You move a hand through a series of quick gestures, your digits twin

Splinesoft 70 Aug 26, 2022
Switshot is a game media manager helps you transfer your game media from Nintendo Switch to your phone, and manage your media just few taps.

Switshot is a game media manager helps you transfer your game media from Nintendo Switch to your phone, and manage your media just few taps.

Astrian Zheng 55 Jun 28, 2022
Exploding monkeys is a game for iPad. Chose vector and velocity to launch bananas

Exploding Monkeys Game Exploding monkeys is a game for iPad. Chose vector and velocity to launch bananas. Try to hit your opponent. Contains: SpriteKi

Nikolai Saganenko 0 Dec 12, 2021
QuizButton is a simple buzzer app that is extremely useful when you play quiz games.

QuizButton is a simple buzzer app that is extremely useful when you play quiz games.

yuken 1 Dec 2, 2021
Solitaire mahjong game with several themes and layouts. For android/iphone/ubuntu/firefoxos

green-mahjong Green Mahjong is a HTML5 based GPLv3 solitaire mahjong game. It features three nice themes, six different layouts and works accross all

Daniel Beck 82 Dec 25, 2022
Mecha Hamster is a game where you roll through customizable environments that you can share with your friends.

MechaHamster {#mechahamster_readme} MechaHamster is a game about guiding a futuristic hamster ball through dangerous space mazes, create mazes of thei

Google 444 Jan 3, 2023
This is a word scramble game where you get points based on what words you can spell out of a root word.

WordScramble This is a word scramble game where you get points based on what words you can spell out of a root word. This app was part of my SwiftUI c

Alex Diaz 0 Jan 19, 2022
The one and only open source 4X MMO mid-core strategy game for iOS. Similar to Game of War and Mobile Strike

4X MMO Strategy Game for iOS I have spent 4 years of my life and a significant amount of money into completing this game and I hope you enjoy it. For

shankqr 69 Nov 16, 2022
IOS Spin Game - A simple spin game using SwiftUI

IOS_Spin_Game A simple spin game using Swift UI.

Md. Masum Musfique 4 Mar 23, 2022
🦁 🃏 📱 An animal matching puzzle card game– built with turn-based game engine boardgame.io and React-Native + React-Native-Web

Matchimals.fun an animal matching puzzle card game ?? ?? ?? Download for iOS from the App Store ?? Download for Android from the Google Play Store ??

iGravity Studios 137 Nov 24, 2022
Gravity Switch - A dynamic game that integrates swiping and tapping to create a fun interactive game

GravitySwitch Gravity Switch is a dynamic game that integrates swiping and tappi

null 3 Nov 19, 2022
FlagGuess-Game - A game to collect points by guessing flags

Flag Guess Game A game to collect points by guessing flags! Wrong Choice

Ahmet Onur Sahin 3 Apr 18, 2022
CardGameEngine - Prototyping a game engine for the Bang card game

CardGameEngine Prototyping a game engine for the Bang card game. Features Engine is open source Powerful scripting language using JSON Card design is

stephtelolahy 5 Nov 22, 2022
ShellSlide - Play 2048 in your shell 🎮

ShellSlide - Play 2048 in your shell ?? Features Keep track of your overall highscore Easily save and resume your games Installation (macOS only) Down

Carl 1 Mar 28, 2022
This is a simple application simulating a basketball game.

This is a simple application simulating a basketball game.

NIKOLAY NIKITIN 0 Oct 20, 2022