Miniature/Development

 
(123 intermediate revisions not shown)
Line 1: Line 1:
-
[[Miniature]] is based on the official [http://qt.nokia.com/developer/qt-for-maemo-developers Qt 4.6 for Maemo] and its [http://doc.trolltech.com/4.6-snapshot/graphicsview.html Graphics View framework]. Most of our work focuses on developing a UI layer optimized for mobile touch devices. When it comes to the backend we want to recycle as much as possible from existing chess engines.
+
{{Miniature}}
-
The development is guided by the roadmap and is organized by phases bringing new features to our users. The organization of the roadmap is based on a pragmatical implementation of  [[Miniature#The_concept|the Miniature concept]] taking into account features missing in Maemo, existing chess projects and the requests from current and potential users.
+
Most content of this page has moved to http://miniature-chess.org/
-
 
+
We are waiting to get the BugzillaReports extension running to move the rest.
-
New contributors are welcome! You can help testing and bugfixing new releases focusing on the current phase or you can pick one item more distant in the roadmap and go ahead with it. No matter what you do we recommend you to stay on focus.
+
== Project status ==
== Project status ==
-
* The Miniature project was born as a proposal sent to the Maemo community on 2009-10-31.
 
-
* [[Miniature/Development/Phase 0: Project setup|Phase 0: Project setup]] - ONGOING
 
-
* Phase 1.0: Offline chess basics - STARTED
 
-
* Phase 1.1: Online chess basics - NOT STARTED
 
-
* Phase 1.2: Online chess advanced - NOT STARTED
 
-
 
-
* 2009-11-08: Miniature now has the following components: a main window, a board, a game controller and a scene view for the UI. It can play any game that is stored in a sequence of FEN strings.
 
-
* 2009-11-08: [http://talk.maemo.org/showpost.php?p=368538&postcount=117 First running example] mimicking the "first realistic mockup".
 
-
* 2009-11-07: [http://gitorious.org/miniature/miniature/trees/master/data/figures Piece set committed], the same [http://commons.wikimedia.org/wiki/Standard_chess_diagram used by Wikipedia].
 
-
* 2009-11-06: Code repository created: http://gitorious.org/miniature - source code exists since the beginning.
 
-
* 2009-11-06: First post in the developer mailing list: https://garage.maemo.org/pipermail/chess-developer/
 
-
* 2009-11-06: [http://wiki.maemo.org/images/2/26/Miniature-playgame-portrait.png First realistic mockup for playing basic online chess] (portrait).
 
-
* 2009-11-04: [http://talk.maemo.org/showpost.php?p=365071&postcount=70 Portrait mode gets priority] to maximize board size + chats won't come till later.
 
-
* 2009-11-03: [http://wiki.maemo.org/index.php?title=Miniature&oldid=21793#Roadmap Roadmapping started].
 
-
* 2009-11-03: [http://wiki.maemo.org/index.php?title=Miniature&oldid=21755#Development_Status Plann for first phases started].
 
-
* 2009-11-03: [http://wiki.maemo.org/images/archive/d/de/20091103171812!Miniature_normal_mode.jpg First concept of play + chat] (landscape).
 
-
* 2009-11-01: [http://wiki.maemo.org/images/1/17/Miniatura-playgameh.png First mockup].
 
-
* 2009-10-31: This wiki page created.
 
-
* 2009-10-31: "Miniature" project name decided.
 
-
* 2009-10-31: Garage project created: https://garage.maemo.org/projects/chess/
 
-
* 2009-10-31: Talk thread created: [http://talk.maemo.org/showthread.php?t=33764 Contributors needed: the killer free chess game for Maemo]
 
-
 
-
== Development Status ==
 
-
 
-
=== Phase 1 ===
 
-
# Setup development environment
 
-
## DONE: Miniature [http://gitorious.org/miniature/miniature is hosted @ Gitorious]. It uses the community port of Qt and [http://www.tsunanet.net/autotroll/ autotroll]. Warning: Miniature uses the no_keyword switch since some of the [http://amigadave.blogspot.com/2009/07/still-not-impressed-with-macros.html Qt macros have very common names that can lead to wierd debug sessions]. It's defensive programming, and not too bad, really.
 
-
# Implementing the Board. The Board represents the current state of the game and is equivalent to a real physical chess board. It has no knowledge of legal or illegal moves. For now it will only accept chess pieces. The board does not know about the future or the past, any logic will be in the Game.
 
-
## DONE: At least a rough version, using a FEN string as model and a board composed of QGraphicsItems. I imagine that we redraw the board whenever the position changes, so as of now the board is rather stateless (YAY!).
 
-
# Creating a basic GUI to display the Board and the pieces. A piece can be moved by tapping on it and then tapping on the destination.
 
-
## TODO: Decide between a full scene graph UI (= max flexibility to customize look and feel), or use more traditional widgets?
 
-
# Setup communication channels
 
-
## DONE: ML @ Garage: [https://garage.maemo.org/pipermail/chess-developer/]
 
-
## DONE: IRC channel @ freenode.net: #miniature @ irc.freenode.net
 
-
 
-
About setting up the environment
 
-
* Preview of [http://wiki.forum.nokia.com/index.php/Qt_for_Maemo_Developers_Guide Qt for Maemo Developers Guide]
 
-
* [http://qt.nokia.com/maemo Official Qt 4.6 port for Maemo 5], including mailing list for developer feedback.
 
-
** A more comprehensive guide [http://www.forum.nokia.com/piazza/wiki/images/7/7a/Qt_for_Maemo_Developers_Guide_v0_5_Beta.pdf can be found here].
 
-
* The Qt 4.6 packages are about to land in extras-devel
 
-
 
-
=== Phase 2 ===
 
-
# Implement a basic chess Game adapter. The basic Game adapter knows the starting position of every piece and can determine if a move was legal. The concept of alternating player moves is also implemented here. It also recognizes checkmate, stalemate and threefold repetition thus ending the game.
 
-
 
-
=== Ideas for future phases ===
 
-
Proposals and plans for future phases.
 
-
 
-
==== Automatic login & logoff====
 
-
In the first boot of the app we can offer a dialog offering to store the login & password, create a new account or "later" (which will will go to play offline). Once the app has login & password booting will imply logging in and the way to log out will be to simply close down the app.
 
-
 
-
==== Menu while not playing ====
 
-
(Seek player will be in the main screen, below the board - a mockup will come soon)
 
-
* Settings
 
-
** Highlight last move - default SQUARES. Also NO - ARROWS?
 
-
** Show legal moves? - default NO.
 
-
** Show coordinates - default NO.
 
-
** Sounds - default NO.
 
-
** Vibra on moves - default NO.
 
-
** Board position - default RIGHT (to be implemented when landscape mode comes).
 
-
* Customization (to be implemented when customization comes).
 
-
** Piece sets selector.
 
-
** Boards selector.
 
-
 
-
==== Menu while playing ====
 
-
Items in the application menu while playing a game:
 
-
* Resign
 
-
* Request draw
 
-
* Abort
 
-
* Adjourn
 
-
* Promotion piece
 
-
** When clicking the window shows all the figures with the Queen selected by default.
 
-
* Settings
 
-
** Same as while not playing
 
-
 
-
 
-
== Mockups ==
 
-
 
-
These are the current sketches.
 
-
 
-
[[Image:Miniature-playgame-portrait.png|frameless|main-p: main window in portrait mode]] [[Image:Miniature_normal_mode.jpg|frameless|main-l: main window in landscape mode (needs update)]] [[Image:Miniature_normal_options.jpg|frameless|menu layout]]
 
-
 
-
 
-
=== Old ;) ===
 
-
 
-
[[Image:Miniatura-playgameh.png|frameless|deprecated]] [[Image:Miniatura_alternative.png|frameless|deprecated]]
 
-
 
-
== Roadmap ==
 
-
''(Draft, sorted by priority.)''
 
-
 
-
Items with "?" are to be decided upon once we focus the discussion on them. These items might be moved to later phases of development, or removed from the roadmap altogether.
 
-
 
-
=== Play games online ===
 
-
# Chess game basics, demonstrated off-line.
 
-
## Finger friendly UI.
 
-
### Mechanism to avoid false moves. First tap to point square, second to confirm? '''Suggestion:''' First tap highlights the source square and the highlight dims within a second. Player has one second to tap destination square. If this does not happen, the move does not count. Destination square may work similarly, i.e. highlights and dims within a second. If player does tap the screen within one second, move does not count. Time period should be configurable from nothing to 2*N second per move. Alternatively we can add Back button. 
 
-
### TODO: extract all move mode proposals from thread so we can evaluate them while comparing working examples.
 
-
## Portrait mode.
 
-
### TODO: find out why "setAttribute( Qt::WA_Maemo5ForcePortraitOrientation, true); setAttribute( Qt::WA_Maemo5ForceLandscapeOrientation, false);" is not sufficient (used [http://qt.gitorious.org/qt/qt-x11-maemo git master from here], but it now says: "don't use it". Perhaps [http://qt.gitorious.org/+qt-developers/qt/x11-maemo/commits/4.6-fremantle-rebased this] just works now?)
 
-
## Pieces can be moved manually.
 
-
## Only legal moves are possible.
 
-
### Option to highlight legal moves?
 
-
### TODO: draw a sequence diagram or similar to demonstrate the necessary interactions between remote server, our game component, and the board representation. Also indicate how the user is notified.
 
-
## "Black/White Wins!" banner after a match.
 
-
## Resign.
 
-
## Pawn promotion, piece selection.
 
-
### Queen auto-promotion?
 
-
## Draw request/accept.
 
-
## Timer
 
-
### Time limit warning?
 
-
# Online chess basics, targeting http://www.freechess.org/ first
 
-
## Log in & out
 
-
## Register
 
-
## Search challengers / by time
 
-
## Propose a game
 
-
## [http://www.freechess.org/Help/HelpFiles/timeseal.html Timeseal] support.
 
-
# Online chess advanced
 
-
## Join tournaments
 
-
## Full access to FICS console (might make sense only in landscape mode)
 
-
 
-
=== Chat with your opponent ===
 
-
# Landscape support.
 
-
 
-
=== Customization ===
 
-
# Download and select different boards and pieces.
 
-
# Download and select different engines.
 
-
 
-
=== Methods of connectivity to play against human ===
 
-
# [[Bluetooth]].
 
-
# [[WLAN]].
 
-
# [[GPRS]].
 
-
 
-
=== Learn chess lessons with moves + text ===
 
-
# Positions can be set manually.
 
-
 
-
=== Play local tournaments e.g. via Telepathy Tubes ===
 
-
 
-
=== Play against computer ===
 
-
# TODO: Which engines???
 
-
 
-
=== Chess variants ===
 
-
* [http://en.wikipedia.org/wiki/Antichess Antichess]
 
-
* [http://en.wikipedia.org/wiki/Chess960 Chess960]
 
-
 
-
=== Recording to log, playing back a log ===
 
-
Display games by you or others, live or stored
 
-
 
-
Low priority: [http://talk.maemo.org/showpost.php?p=364101&postcount=58 Chessmonk] is concentrating on this for Maemo 5 => not that urgent for Miniature)
 
-
# History of an opening.
 
-
# Take a picture of a printed game, process the notations with OCR and display it.
 
-
# Display several games at a time.
 
-
# Watch game via webcam stream
 
-
 
-
 
 +
Tasks for the next release get a HIGH priority. All the rest falls in the Backlog.
-
== Technology selections ==
+
=== Miniature 0.5 release ===
-
How to make the most from existing free projects avoiding forking and duplicated work as much as possible.
+
-
* Qt 4.6 for UI layer. The goal is to have Maemo as primary development platform, aiming for straight ports to Symbian and other Qt compatible platforms.
+
Tasks COMMITTED for Miniature 0.5.
-
** Can we save work by looking at [http://pacaq.sourceforge.net/ pacaq] and [http://knights.sourceforge.net/ Knights]? Others? --[[User:qgil|qgil]] 06:22, 3 November 2009 (UTC)
+
-
* What starting point to get the online chess features?
+
-
* What starting point for chatting?
+
-
** TP connection manager: http://telepathy.freedesktop.org/wiki/Components
+
-
*** Qt 4.6 wrapper (http://telepathy.freedesktop.org/wiki/TapiocaQt) might be a good idea to look at.
+
-
** Rationale: I would like to see a "I play chess!" tag next to each contact I have. This information would of course have to come from a central server or such. Also, it would be great if we could just re-use the chat functionality that is already there with maemo5 (of course it needs a modified view to fit into our UI) --[[User:mikhas|mikhas]].
+
-
* What starting point for game analysis?
+
-
** [http://scid.sourceforge.net/ Scid] ([http://packages.debian.org/lenny/scid see dependencies]) would be nice by itself and as gateway to [http://www.craftychess.com/ Crafty] ([http://packages.debian.org/lenny/crafty see dependencies]) and other engines.--[[User:qgil|qgil]] 06:22, 3 November 2009 (UTC)
+
-
== Architecture ==
+
{{#bugzilla:id=7867,12345,12351,12359,12390,12394,12419,12420,12426,12435,12455,12456,12464
 +
  |columns=id,severity,status,resolution,summary
 +
  |sort=resolution,status,severity,id
 +
}}
-
GUI:
+
=== Backlog ===
-
* Board
+
-
* Chat
+
-
* Player Cards
+
-
* Online Play
+
-
Logic:
+
{{#bugzilla:
-
* Game - the logic for a particular game, right now that would be just chess, but other board games could be possible too. (Chess based or other)
+
  |columns=id,severity,priority,assignee,status,resolution,summary
-
** The current game controller can update the board, using FEN strings (we might want to wrap the QStrings in a simple Position container, if we add parsing API to it) and knows about the UI.
+
  |product=Miniature
-
* Pre-Game - How to find players, select a server or engine
+
  |priority=Medium,Low,Unspecified
 +
  |status=unconfirmed,new,assigned,needinfo,reopened
 +
  |sort=status,id
 +
}}
-
Domain:
+
=== Easyfix (suited for newcomers) ===
-
* Board - Represents the data structure of the board (duh)
+
-
** Can draw a position based on a valid FEN string, say "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1" encodes the start position.
+
-
** How it works: Each figure is a QGraphicsSvgItem. This is useful since it allows fingertouchability. The board draws its position, meaning it removes all its figures children (by deletion) and then re-reads the SVG files into new QGraphicsSvgItem. Needless to say, this is inefficient. A better way would be to let the board load all figures during its construction time, put them in a vector (using enums for the indices lookup, maybe) and instead of clearing the board by deletion, just unparent the figures from the board, then reparent them into the correct position. Or just move them around, and hide those that were removed by game moves. Both should be easy and bring a good speed-up (SVG loading is quite expensive I hear). It is bascially about killing unneeded new/delete sequences.
+
-
* Player - information about the other player, like online status, skill level
+
-
** Player "cards" would be part of this. Currently, they only exist as some HTML-formatted text in the scene view.
+
-
Communication:
+
{{#bugzilla:
-
* ICS
+
  |columns=id,severity,priority,assignee,status,resolution,summary
-
* Bluetooth
+
  |product=Miniature
-
* Telepathy
+
  |keywords=easyfix
-
* Computer Chess Engine - an offline engine should be accessed the same way any online game is, the engine does not have to be in the same task
+
  |status=unconfirmed,new,assigned,reopened
 +
  |sort=priority,severity,priority,status,id
 +
}}
-
== References ==
+
Looking for more? There is more at the [http://miniature-chess.org/wiki/Wishlist Wishlist].
-
* [http://www.craftychess.com/ Crafty] is a free, open-source computer chess program.
+
-
* [http://www.v7f.eu/public/n800/chess/ EBoard and Crafty] for the N810/N800/N770 - [http://maemo.org/downloads/product/OS2007/chess OS2007 Downloads page].
+
-
* [http://knights.sourceforge.net/ Knights] aimed to be the ultimate chess resource for the K Desktop Environment... years ago.
+
-
* [http://pacaq.sourceforge.net/ pacaq] is a chess game visualizing and analysis tool done with the Maemo 4.1 Qt4 port - [http://talk.maemo.org/showthread.php?t=21793 Talk thread].
+
-
** From all programs on this list, this is the only one were reading the code is worth your time.
+
-
* [http://scid.sourceforge.net/ SCID], a chess database application for Windows, Linux and Mac OS operating systems.
+
-
** See also [http://scid.sourceforge.net/scidpocket.html SCID Pocket]
+
-
* [http://www.gnu.org/software/xboard/ Xboard] is a graphical user interface for chess in all its major forms.
+

Latest revision as of 17:57, 15 May 2023

Miniature - Play chess everywhere you go!
.: Home : Releases : Wish list : Development : Coding style :.
Most content of this page has moved to http://miniature-chess.org/
We are waiting to get the BugzillaReports extension running to move the rest.

Contents

[edit] Project status

Tasks for the next release get a HIGH priority. All the rest falls in the Backlog.

[edit] Miniature 0.5 release

Tasks COMMITTED for Miniature 0.5.

IDSeverityStatusResolutionSummary (13 tasks)
12456enhancementRESOLVEDFIXEDMiniature official support for Maemo
12420normalRESOLVEDFIXEDMiniature crashes on closing the application from recents view
12345criticalVERIFIEDFIXEDMiniature's i18n is missing
12426criticalVERIFIEDFIXEDMiniature doesn't handle draw requests
12351enhancementVERIFIEDFIXEDMake move confirmation an option or remove it
12359enhancementVERIFIEDFIXEDMiniature FICS user must fill id & password every time
12390enhancementVERIFIEDFIXEDMake last turn visible
12455enhancementVERIFIEDFIXEDMiniature chat area use is not obvious
12394majorVERIFIEDFIXEDMiniature should set autoflag 1 automatically
12419minorVERIFIEDFIXEDAbout Miniature dialog: "i" button is hiding a part of a link
7867normalVERIFIEDFIXEDDisplay shouldn't dim while playing a game
12435normalVERIFIEDFIXEDMiniature should recognize games forfeited on time
12464normalVERIFIEDFIXEDPlayers with rating of less 1000 points cannot reliably use Miniature

[edit] Backlog

IDSeverityPassigneeStatusResolutionSummary (20 tasks)
8142enhancementLowNEWChess games logs need to be stored somewhere
12346normalMediumNEWMiniature needs a proper repository
12348majorMediumNEWMiniature for MeeGo CE doesn't show TextField
12354normalMediumNEWList of games: Show available game offers only
12360normalMediumNEWList of games: Function of the Back-Arrow unclear. Confirmation Dialogue needed?
12392enhancementLowNEWShow how much material is left for each player
12396enhancementMediumNEWImplement dialog for challanges
12410enhancementMediumNEWOnlineBoard: Implement item "abort" in back menu
12413normalMediumNEWThe chat log doesn't show the last line when the local user posts
12422minorLowNEWShow application close button in the upper right corner
12423enhancementMediumNEWExtend chat feature
12427normalMediumNEWMiniature doesn't handle adjourn requests
12431enhancementMediumNEWSeekGames: Do not show more than 50 games in the list at once (was: Implement "clear list" function)
12439enhancementMediumNEWEnable breadcrumbs in the wiki (miniature-chess.org)
12443enhancementMediumNEWFICS Setting: Implement an option to send game notation after a game ends
12469minorLowNEWInitial value of localSide.rating == 0 for Miniature registered users
12504enhancementMediumNEWafter failed login, VKB pops up even if in info screen
12539criticalUnspecifiedNEWInstallation on the N900 fails
12583majorUnspecifiedNEWNo hint that starting new games is impossible (number of adjourned games to high)
12592normalUnspecifiedNEWqtquickcompat is needed, but not listed as Depends

[edit] Easyfix (suited for newcomers)

IDSeverityPassigneeStatusResolutionSummary
12392*
easyfix12392
enhancementLowNEWShow how much material is left for each player

Looking for more? There is more at the Wishlist.