maemo.org - Talk

maemo.org - Talk (https://talk.maemo.org/index.php)
-   Games (https://talk.maemo.org/forumdisplay.php?f=12)
-   -   Miniature development: Play chess games online (https://talk.maemo.org/showthread.php?t=34242)

qgil 2009-11-10 21:05

Miniature development: Play chess games online
 
The Miniature project aims to deliver a chess board that goes always with you, ready to let you play and learn wherever you go.

We have just concluded the Phase 0: Project setup that started with the thread Contributors needed: the killer free chess game for Maemo.

Here we focus on the first big item of the roadmap: Play games online. Easier said than done. :)

We have planned three phases to get there and we will try to focus as much as possible in each of them, one at a time:
  1. Chess game basics, demonstrated off-line.
  2. Online chess basics, targeting http://www.freechess.org/ first
  3. Online chess advanced

Any kind of feedback and help is welcome. Feel free commenting here also other features in the roadmap or new proposals. Note that the pure developer discussion happens in the project mailing list.

DISCLAIMER: I'm contributing to Miniature in my free time without any link to my job at Nokia.

Addison 2009-11-11 01:31

Re: Miniature development: Play chess games online
 
I'll add in a comment to this. :)

If your project is ever going to be ported to other handhelds/platforms with different display dimensions, then the entire presentation layout needs to be flexible as to how it appears on the screen.

I was thinking of two dynamic layout options and settings, one for landscape and the other for portrait mode.

Within these menus, every setting would be configured by the end user.

The board, size of board, where it's positioned, coloring, board coordinates being on/off, chess pieces, size of pieces, coloring, etc.

Also where the chat window is located, the size of it, font, font size, font coloring, etc.

Short cut keys, where on the screen, font, font size, font coloring.... stuff like this.

Basically every piece and part of the screen layout could be movable and arranged differently according to a person's preference. Maybe even have a "preview" mode before the user saves his configuration to make sure that's what he or she wants.

It might be overwhelming at first for a newbie to configure all of this, but if it's packaged with default settings and the ability to restore the them, this definitely might be the best direction for your project.

Addison 2009-11-11 09:27

Re: Miniature development: Play chess games online
 
Actually, going back over my previous post, this even confused me a little.

Instead of two separate menus for portrait and landscape modes, perhaps it would be more simple to have only one menu.

Just have a screen layout save option.

This way a user could either load or save something like a portrait.ini or landscape.ini file or anything in between.

Not sure what the easy ground would be to implement this though.

For a user to drag and drop all of the possible windows on the screen would be terrible to program.

To enter in X,Y coordinates including height and width numbers for each window would be difficult for the user to understand.

@qgil
What are your thoughts on this?

This seems like the right progression but I'm not seeing a way to make it easy on everyone involved.

Cheers!

mikhas 2009-11-11 09:45

Re: Miniature development: Play chess games online
 
Configurable screen layout. Those are good thoughts, we should put it on the roadmap somewhere after the 0.1 release. There is already a landscape mode item on the list, perhaps we should extend that item to include "configurabe screen layout to support portrait/landscape mode on multiple devices" (then a list of devices, with links to their screen/display spec, because if it is only 4 or 5, we might still want to hard-code it and avoid a potentially fragile API).

Addison 2009-11-11 10:32

Re: Miniature development: Play chess games online
 
Quote:

Originally Posted by mikhas (Post 372161)
Configurable screen layout. Those are good thoughts, we should put it on the roadmap somewhere after the 0.1 release. There is already a landscape mode item on the list, perhaps we should extend that item to include "configurabe screen layout to support portrait/landscape mode on multiple devices" (then a list of devices, with links to their screen/display spec, because if it is only 4 or 5, we might still want to hard-code it and avoid a potentially fragile API).

I think I can see what you mean about this becoming fragile.

What if a user decides to place some window bigger than what would be allowed on the device? Pure hell I would imagine. :)

The point of all of this was is to have the entire screen display more open to the end users instead of the people who might port it.

Hope that makes some sense. :)

kore 2009-11-11 14:13

Re: Miniature development: Play chess games online
 
I think that to much customization possibilities are not good. If you let the end user decide about every single UI element that will become a big mess in two ways IMHO. (1) the user will get confused. I mean designing the UI is the (difficult) job of UI designers and you cannot expect every user to have the skills to do that. (2) In my experience such customizations are a huge source of problems and bugs and a real pain in the *** thinking from a developers point of view.

So in my opinion a well designed layout (or two that is) is superior to a badly designed customizable layout. And speaking about porting the application to other devices I think mikhas is absolutely right when he says hard-coding the layout for a few devices is still better than designing it open enough to fit for every possible device.

qgil 2009-11-11 15:08

Re: Miniature development: Play chess games online
 
I wonder what do you want to customize in the UI? I can see a point of having the board on the left side instead of the right side if you are left handed but apart from that... what?

Is it so critical to have the names and avatars of the players above or below the board in portrait mode? There is a reason to have them on top: separate the board from the status area so you don't click accidentally on e.g. the clock or other system UI buttons.

Even if the pixel sizes might differ across touchscreen devices, the rough screen proportions will be overall similar. See for instance N900 vs N97 Mini. A fluid UI design should be usable and elegant in different devices without specific optimization. And this has nothing to do with user costumization.

mikhas 2009-11-11 17:45

Re: Miniature development: Play chess games online
 
Quote:

Originally Posted by qgil (Post 372400)
There is a reason to have them on top: separate the board from the status area so you don't click accidentally on e.g. the clock or other system UI buttons.

This is the reason why we could need the help of UI designers. There are many rules like this, and I simply do not know them!

qgil 2009-11-11 20:25

Re: Miniature development: Play chess games online
 
Good idea. Let's find a UX specialist with some interest in chess. I will ask tomorrow in the office. :D

qgil 2009-11-11 20:34

Re: Miniature development: Play chess games online
 
Please have a look at the checklist of the Phase 1. Now is the perfect time to tell whether you are missing something important for the goal "get the Chess game basics in place and demonstrated off-line". Thanks!

pillar 2009-11-12 13:25

Re: Miniature development: Play chess games online
 
Guys, seems like you have a nice thing going here. Too bad I am not that into Chess, but I noticed a mention that this could be extended to cover other games as well. That got me interested. I would be up for contributing to making a Backgammon version and even working on a Go version. There really needs to be a version of these as well for N900 and this project could help to jump start the development for those as well.

So, I just wanted to let you know it would be great to have the general stuff done so that it can be used for other similar projects.

qgil 2009-11-12 13:51

Re: Miniature development: Play chess games online
 
To those willing to help on the common parts for other games, you could help by starting to work on such common parts at http://wiki.maemo.org/Miniature/Deve...e_chess_basics

Or whatever common part you find in the roadmap http://wiki.maemo.org/Miniature/Development#Roadmap

VDVsx 2009-11-12 14:17

Re: Miniature development: Play chess games online
 
I'll help in "Methods of connectivity to play against human - Bluetooth", since I'm starting something similar for other game, but will take a while, because I don't have much spare time atm :(

qgil 2009-11-12 15:46

Re: Miniature development: Play chess games online
 
It will be an honor to get BT related patches from the BlueMaemo lead developer!

kanishou 2009-11-12 18:24

Re: Miniature development: Play chess games online
 
I don't see much in common between different board games, other than some basic application infrastructure, which would probably be more effectively shared via copy and paste.

I for one am very interested in working on a Go application, so I am keeping an eye on this project to learn from it. But I would rather share code than attempt to work on a board game abstraction layer.

qgil 2009-11-13 03:42

Re: Miniature development: Play chess games online
 
Question: with pacaq and Chessmonk having good looking vectorial boards... do we really need joshua to put his time in another board. I would rather put his creativity in the logo/icon, improving the look&feel of the mockups.

If the square highlighting (or the arrows, whatever we do now) can be also borrowed from these apps I would do just that. Or the movement animations. Let's concentrate the work in whatever doesn't exist and needs to be done.

qgil 2009-11-13 22:58

Re: Miniature development: Play chess games online
 
I went through my current task of defining possible game endings. I was amazed about the amount of possibilities!

Please check whether you still miss a potential game ending at http://wiki.maemo.org/Miniature/Deve..._after_a_match

An opportunity of contribution for native English speakers (or equivalent) with a clue of chess: proposals for text strings accepted. The shorter the better. The more chess standard vocabulary used the better. Let's make life easy for translators.

qgil 2009-11-14 23:40

Re: Miniature development: Play chess games online
 
First approximation to a Miniature first boot UI:
http://wiki.maemo.org/images/c/cf/Mi...rait-start.png

It is provisional for the offline situation that we have now in the Phase 1. No matter how happy we are with it now it will chance once we are able to connect to FICS.

PS: note the glossy keyboard we got from Matthias. Nice!

qgil 2009-11-15 13:37

Re: Miniature development: Play chess games online
 
If pacaq's arrows are easy to recycle and you are happy with them then we could recycle that code.

qgil 2009-11-17 04:46

Re: Miniature development: Play chess games online
 
Hi, the Miniature project keeps running at an impressive path!

- We have a binary! Thanks Matthias. http://maemo.org/packages/view/miniature/ It's in Fremantle extras-devel and plays chess as good as my very little son (puts pieces in the board, moves them randomly). But it is already useful to see that the board at max size (480 px wide) is usable and quite reliable. I tested with a storm of fast moves to random positions and the right pieces always landed in the squares my subconscious had chosen.

- We have an application icon! Thanks Ekaterina. Without it the packages doesn't show up in the Application Manager (or something) and you need to install via apt-get.

- We have architecture and good technical discussion in the developer list! So good that it escapes my knowledge. But the guys are even providing diagrams so I guess we are in a good path. ;) http://wiki.maemo.org/Miniature/Deve...t/Architecture

We continue with http://wiki.maemo.org/Miniature/Deve...e_chess_basics and there are some shortcuts we will take in order to cover the basic functionality faster:

- There is basic move highlighting now and it's fine. We will leave the arrows for later.

- No double tap to select-confirm the landing of pieces. We might not need it at all if the usability of the portrait board is good enough.

- Draws will be assigned whenever there is a reglamentary chance to assign one.

- Pawns will be promoted automatically to Queen.

With these shortcuts we will be able to start earlier with online chess at FICS, which is the immediate real deal.

This is a commitocracy: if you disagree your patches are welcome. ;)

marclais 2009-11-17 05:18

Re: Miniature development: Play chess games online
 
Thank you for your work, I am very excited about this!

geneven 2009-11-17 06:27

Re: Miniature development: Play chess games online
 
I'm not sure what

"- Draws will be assigned whenever there is a reglamentary chance to assign one." means,

but draws on FICS don't take place until one side or the other claims the draw in the case of a threefold repetition of position, there is nothing automatic about it. Draws do occur automatically in the case of stalemate or time running out when the side with a win on time doesn't have any material.

qgil 2009-11-17 06:34

Re: Miniature development: Play chess games online
 
This case about the automatic draws is for the current phase, which is all about playing offline. By making these assumption we will probably save some extra dialogs.

Dealing properly with draw requests belongs to online games in the next phase. We will see then what is the reasonable approach saving us wok without making us loosing 1/2 points just because Miniature puts you in a draw when you don't want it. :)

qgil 2009-11-17 07:51

Re: Miniature development: Play chess games online
 
http://wiki.maemo.org/Miniature updated with list of features of v0.1-1, current screenshots and mockup.

SubCore 2009-11-17 14:35

Re: Miniature development: Play chess games online
 
Great to see this project progressing so quickly!

i just stumbled upon something in the german wikipedia (the english article doesn't have a similar entry) concernnig chess etiquette. i haven't read anything about it here so i thought i'd mention it: it would make sense to limit the amounts of draw offers a player can make during a game (or during a certain timespan, say 3 times every 5 minutes?), to avoid people "spamming" their opponents with draw requests when they are about to loose.

qgil 2009-11-17 16:12

Re: Miniature development: Play chess games online
 
Tomorrow I have a presentation at http://maemo.org/news/events/copenhagen_qt_training/ and Miniature will have its 5 minutes of fame as test case of Qt 4.6 and maemo.org development infrastructure (including this humble thread).

mikhas 2009-11-17 18:37

Re: Miniature development: Play chess games online
 
Quote:

Originally Posted by qgil (Post 378870)
Hi, the Miniature project keeps running at an impressive pace!

Hehe, thanks! Though currently we are blocking on the logic unit ;)

qgil 2009-11-18 14:09

Re: Miniature development: Play chess games online
 
Miniature had its 5 minutes of glory in the Maemo Developers @ Copenhagen.

I used the latst vesion in extras-devel and it didn't crash. But didn't play proper chess either... Ah, well. :)

qgil 2009-11-18 20:26

Re: Miniature development: Play chess games online
 
By the way, are you aware that Miniature is available for Ubuntu now?

https://launchpad.net/~michael-hasse...hive/miniature

mikhas is unstoppable!

Lacedaemon 2009-11-18 20:34

Re: Miniature development: Play chess games online
 
Hey, are you still looking for designers? PM me with information I might be interested.

Also, good luck with this project.

qgil 2009-11-19 04:45

Re: Miniature development: Play chess games online
 
At this very point of time we need more work on interface / interaction design than pure graphics design. Although if someone provides better graphics than the ones currently in use we won't reject them. :) But the app looks ok already.

For instance, how does the Settings page look like? How are we going to organize the Menu options? Nobody knows for sure today and it would be good to have someone able to play with Qt Designer or at least faster than me producing purely visual mockups for discussion.

There are Miniature builds that run on the Maemo 5 SDK, the N900 and the Ubuntu desktop. Give them a try, any proposals for improvement are welcome in any form!

Another example: hopefully one of these days Miniature will learn the legal moves, and therefore will be able to identify the illegal. How should they be reflected in the UI? My current assumption is:

1 - User selects a piece with one tap. Piece shows highlighted.
2 - User selects destination square with a second tap.
3 - Destination square turns red with some transparency for 0.2 seconds.
4 - Original peace is still selected and highlighted.
5 - Repeat 3 if user selects a wrong square again.

However, discussing UI without mockups is slow and prone to fail due to different people drawing differently in their minds even if reading the same text. I can play with GIMP / Inkscape but I'm damn slow. I have the ideas and some skills to express them in text fast, but beyond that...

kanishou 2009-11-19 12:43

Re: Miniature development: Play chess games online
 
Quote:

Originally Posted by qgil (Post 381688)
At this very point of time we need more work on interface / interaction design than pure graphics design. Although if someone provides better graphics than the ones currently in use we won't reject them. :) But the app looks ok already.

For instance, how does the Settings page look like? How are we going to organize the Menu options? Nobody knows for sure today and it would be good to have someone able to play with Qt Designer or at least faster than me producing purely visual mockups for discussion.

There are Miniature builds that run on the Maemo 5 SDK, the N900 and the Ubuntu desktop. Give them a try, any proposals for improvement are welcome in any form!

Another example: hopefully one of these days Miniature will learn the legal moves, and therefore will be able to identify the illegal. How should they be reflected in the UI? My current assumption is:

1 - User selects a piece with one tap. Piece shows highlighted.
2 - User selects destination square with a second tap.
3 - Destination square turns red with some transparency for 0.2 seconds.
4 - Original peace is still selected and highlighted.
5 - Repeat 3 if user selects a wrong square again.

Hm, my gut feeling was that tapping on any illegal square should cancel the move. But failing that, I think that after a square/piece is selected, the entire area outside of the board should be blurred, and allow to cancel the move by tapping on it.

mikhas and I were also discussing a reversed mode of entering moves earlier. First you tap on the target square, then all pieces which can move to this square (if any) are highlighted. Tapping closest to any of the highlighted pieces would move it to that square. The idea is that it's harder to make a mistake with the second tap, and you don't necessarily need a third tap for confirmation (also it can still be tricky if many pieces are close to each other and can move to the same square).

kanishou 2009-11-19 13:00

Re: Miniature development: Play chess games online
 
Quote:

Originally Posted by qgil (Post 375521)
I went through my current task of defining possible game endings. I was amazed about the amount of possibilities!

Please check whether you still miss a potential game ending at http://wiki.maemo.org/Miniature/Deve..._after_a_match

An opportunity of contribution for native English speakers (or equivalent) with a clue of chess: proposals for text strings accepted. The shorter the better. The more chess standard vocabulary used the better. Let's make life easy for translators.

I would personally sort this differently, into just four possible outcomes, and an optional "reason". E.g.:

* White/Black Wins
- Checkmate
- Resignation
- Time
- Lost connection (if noescape flag is set)

* Draw
- Draw agreed (does it matter who requested it?)
- Threefold repetition (don't forget three times the same position)
- X moves without captures
- Stalemate
- Insufficient material

* Aborted
- Abortion agreed (does it matter who requested it?)
- Insufficient moves (quitting or disconnecting the game before X moves are played, freechess will abort the game instead of resigning/adjourning)

* Adjourned
- Adjournment agreed (does it matter who requested it?)
- Connection lost

There is also the possibility of a game being decided by a referee (adjudication), but I don't think that the interface has to be aware of this.


Also a quick note regarding accept/deny confirmations. Whatever you do, do NOT show a modal dialog, or otherwise interrupt the player's move or even concentration. Agreeing or denying must be possible at the player's leisure. It's much better to miss a draw request by making a move before answering it, than to be disrupted in your move and possibly losing on time (let alone opening the door to abuses).

qgil 2009-11-20 21:54

Re: Miniature development: Play chess games online
 
Quote:

Originally Posted by qgil (Post 375521)
An opportunity of contribution for native English speakers (or equivalent) with a clue of chess: proposals for text strings accepted. The shorter the better. The more chess standard vocabulary used the better. Let's make life easy for translators.

http://wiki.maemo.org/Miniature/Development/Strings created. I believe the use cases of Phase 1 are all covered, and even a little more. Or do you miss anything?

How is the engine progressing? Is Miniature starting to learn some proper chess?

What about teaching only about the first move of the pawns? The logic can't be simpler, and once implemented we can start experimenting with the UI around the move of pieces, legal/wrong squares and so on.

joshua.maverick 2009-11-21 06:00

Re: Miniature development: Play chess games online
 
I've been away for a bit due to some personal issues, but I'm back! What artwork can I help out with?

qgil 2009-11-21 08:03

Re: Miniature development: Play chess games online
 
kore is teaching Miniature to play some chess:

http://gitorious.org/miniature/minia...13536f62e2e187

Now the pieces are supposed to know how to behave alone. The next step is to make them interact with each other correctly. kore explains more at
https://garage.maemo.org/pipermail/c...er/000072.html

qgil 2009-11-21 08:11

Re: Miniature development: Play chess games online
 
Quote:

Originally Posted by joshua.maverick (Post 384962)
I've been away for a bit due to some personal issues, but I'm back! What artwork can I help out with?

Good to see you back: :)

See my post above: http://talk.maemo.org/showpost.php?p...8&postcount=31

Artwork in the sense of icons etc is not a big need anymore.

Can you also design animations? What about defining a nice effect for the selection of pieces and squares, and for the movement of pieces? I guess it's ok to discuss proposals over Flash or SVG, but the programmers might have better tips for you.

Check the wiki page for current screenshots and binaries you can install in the SDK, the N900 or Ubuntu, with all the current graphics available. Ask here if you need more information to get the source graphics.

joshua.maverick 2009-11-21 08:18

Re: Miniature development: Play chess games online
 
What format would the animations have to be in? I can animate in Flash np, but I what should I output as?

mikhas 2009-11-21 16:31

Re: Miniature development: Play chess games online
 
Quote:

Originally Posted by joshua.maverick (Post 385019)
What format would the animations have to be in? I can animate in Flash np, but I what should I output as?

Yeah, difficult question for us. So far we tried to keep everything scalable. I am not sure how well animated SVG would work for us; we'd have to extend the Webkit hack we currently use (since QtSvg is not very capable).

How is proper scaling for different resolutions approached in the Flash world?

kanishou 2009-11-21 16:40

Re: Miniature development: Play chess games online
 
Quote:

Originally Posted by mikhas (Post 385276)
Yeah, difficult question for us. So far we tried to keep everything scalable. I am not sure how well animated SVG would work for us; we'd have to extend the Webkit hack we currently use (since QtSvg is not very capable).

How is proper scaling for different resolutions approached in the Flash world?

Flash is vector based, so it's just the same as with animated SVG.

The way it's done in Fremantle is that designers produce flash mockups and instructions, which the programmers then manually turn into Clutter effects. I don't know if Qt GraphicsView has any ready-made format for defining animations?


All times are GMT. The time now is 08:09.

vBulletin® Version 3.8.8