sgtpuzzles icon indicating copy to clipboard operation
sgtpuzzles copied to clipboard

Group games

Open goyalyashpal opened this issue 3 years ago • 12 comments

anyone interested in/thought about grouping the games based on some parameter??

go to this comment to see the grouping i came up with: https://github.com/chrisboyle/sgtpuzzles/issues/506#issuecomment-1221611585

goyalyashpal avatar Oct 15 '21 15:10 goyalyashpal

Can you give an example of what you mean?

JupiLogy avatar Oct 15 '21 15:10 JupiLogy

like each of following mentions just one instance of similar games:

goyalyashpal avatar Oct 15 '21 15:10 goyalyashpal

i had made a fairly detailed (imo 😅) grouping of games based on their similarity in basics/fundamentals so to say. It came out quite nicely. But it still needs some more polishing. should i share it in its current state?

i thought there could be multiple parameters too, but those felt kinda academic, and not much fruitful in improved UX either, so, i just sticked with above mentioned parameter which like i said, seemed to make sooo much sense to me.

parameter 1 (yes or former) 0 (no or middle one) greyish (kinda neither relevant or last one) seemed useful in general?
has local action? or serial/global action lots Sorting like, Alternating, Net, Netslide Flood, Guess, Inertia, Same game, Untangle no
Placing things vs manipulation vs numeric input lots -- do -- Sudoku like no
numerical constraints: in-body, edge, others lots Black Box, Patterns, Magnets, Tents, Towers, Tracks, Undead lots kinda yes

goyalyashpal avatar Oct 15 '21 15:10 goyalyashpal

i have found it, i had made a fairly detailed grouping, like i said. but i was not able to find it. i have found it , will refine it in some days. thanks god i found it (:

goyalyashpal avatar Aug 21 '22 16:08 goyalyashpal

So,

  • i was able to group 39 games out of total of 40 games
  • ... into meaningful and mutually exclusive 5 main groups with some subgroups too.
  • the "meaningful" here, is intended to mean useful enough mainly to any ordinary person interested in games

Regarding this particular order of subgroups:

  • i have put the subgroups in this particular order, as this order (among the subgroups) felt story-like,
  • like there's gradual change from one subgroup to the other - similar to how words change in the "change one letter game"
  • this can be noticed by paying attention and backtracking in the "comments for game" - i.e. 2nd column or sometimes, in the "2nd categorisation" given below after the end of the table

Following is the table listing them.

  • The "comments for here" are for clarifying some thing to u, i.e. communicating here
  • ... and the comments for game, are intended for description sort of thing
Groups, subgroups, elements: Remarks/Comments:
(can be shown on game)
Comments:
(for here only)
1. Sorting like (3)
============
other name: Photo pieces
* 15, 16, Twiddle slide empty, cube like turns, rotate
2. Connectings (3+3+2=8)
=============
other name: Connecting ones
* Net, Netslide, Signpost slide empty, cube like turns, --
* Bridges, Loopy, Pearl
* Tracks, Tents tents is not a connecting one, but still
3. Filling like (4+4+2+2+3+2=17)
===========
entirely fill with:
* Filling, Palisade, Rectangles, Galaxies numbers/regions, loopy+filling, --. symmetry -- : name is enough
* Solo, Keen, Towers, Unequal sudoku like numbers sudoku, math-doku, skycrapers, --
* Pattern, Unruly b&w boxes, b&w boxes
* Dominosa, Magnets dominoes, dominoes
* Slant, Light up, Map diagonals, light, colors
* Flood, Same game
4. Alternatings (3)
=============
the neighbouring things switch on action
* Cube, Flip, Pegs
5. Others (2+2+3+1=5+3)
========
couldn't figure out a name
* Range, Singles blocking things
* Undead, Black Box light reflections
* Mosaic, Mines, Inertia inertia - not totally related, but works
* Guess
6. Not categorised (1)
================
* Untangle
Total: 40
=====

other categorisation: based on position of numeric hints

Note:

  • in this other categorisation, i have put patterns in both these categories,
  • I dont remember why i put that. and i dont remember the game enough either to go on re-making the logic.
  • but i'll keep it as such for now... maybe u can figure out why 😅 . otherwise, if i figure it out someday later, will post then.

goyalyashpal avatar Aug 21 '22 20:08 goyalyashpal

i wanted to make a multilevel tree map of above table, so that it can fit in the grid to show similar to the current launcher grid in the app, but couldn't accomplish that.

goyalyashpal avatar Aug 21 '22 20:08 goyalyashpal

  • i was just going over this, and found some inconsistencies
  • unrelated: i hit upon one more criterion - "modellable using wave function collapse (wfc)" refer this video: 2SuvO4Gi7uY titled: "Superpositions, Sudoku, the Wave Function Collapse algorithm"

  • wfc is the strategy which's used to solve the sudoku puzzles

    • using the pencil marks to include all the possibilities i.e. superposition of possibilities and then
    • successively reducing the possibility space using the constraints of the game until only one of the possibilities remains i.e. collapse of the superposition
    • this is similar to the wavefunction collapse in other field of physics - hence the name
  • this too will be intersting to think more which games will fall into this bucket but

    • i don't think this will fit well with above already shared grouping i.e. will bleed into many areas and also,
    • i have a suspicion that this will cover either too many games or too few - both of which will reduce its meaningfulness

i will share any update on either of these in future...

goyalyashpal avatar Sep 02 '22 13:09 goyalyashpal

also, i am not sure about how should i post the updates to the grouping shared above - i want to post it in a way which is easily trackable as to what changes i made (i.e. diff-able in some sense) - any suggestions on how can that be done?

goyalyashpal avatar Sep 02 '22 13:09 goyalyashpal

As someone who has been playing all the games in the collection too many times for years, I think the categorization you proposed makes a lot of sense. It also acts as a nudge for a newcomer wanting to explore all the games. Instead of throwing too many choices on the screen, there'll be categories. Although confusing at first, this issue is an interesting proposal. I'd be eager to see Chris' opinions on it.

abdulisik avatar Sep 14 '22 15:09 abdulisik

just for an explicit information, as i said before too, this was like first draft... it needs updation at various places.

some quick examples being:

  • singles is very very close to sudoku like group, and can be thought of as filling of paint lol
  • signpost does not belong to the net* group very well
  • this "wfc" thing mentioned above seems capable of bringing a major change in grouping on its own

i am projecting that it will take at least one more revision from my side, and i have idea for a yet another revision after that (though not as important as the immediate next one).

so, feel free to discuss it as much, but please dont implement it just yet.

goyalyashpal avatar Sep 14 '22 16:09 goyalyashpal

one more criterion can be: playable with pen/paper... or in other words, the degree of dynamic-ness of gameplay with degrees being static, fully dynamic, better in dynamic (but static play is possible too),

the use cases being able to quickly move:

  • from game on board/paper to digital version for example, want to extract game from a public newspaper/ relatives board and play self paced, or compete with single game from such sources against friends, or save a game example digitally as a case study) or
  • vice-versa (for example, if want to stay away from screen)

the backstory being:

  • #603 , #510, #511

found one equivalent criterion with wfc be:

  • backtracking (from hard sudoku, and computer algorithms)
  • greedy approach (applicable to inertia like games i guess)
  • dynamic programming / LUT (oh lol, i just had to put it out there, thought, i dont know which one this will apply to)

the supercategory for these can be: solving strategy...

now ofcourse these records are begging to be put in some sort of labelled format, say in csv tables

goyalyashpal avatar May 01 '23 12:05 goyalyashpal

Group Comments Nos
Galaxies, Filling, Rectangles, Palisade Fill with regions 4
Loopy, Slant, Pearl, Train Tracks, Bridges Single connected path 5
Untangle, Signpost Continuity of bridges, tracks resp 2
Tent, Lightup, Range Un/connected regions, Straight sights 3
Black Box, Undead Light reflections 2
Singles, Unequal, Towers, Keen, Solo Sudoku family: increasing difficulty 5
Unruly, Pattern B&W tiles 2
Mosaic, Mines, Inertia <Continuum w/ previous> 3
Dominosa, Magnets Two segmented tiles 2
Map, Flood, Same Game Misc 3
Pegs, Flip, Cube Alternatings 3
Guess Misc 1
Fifteen, Sixteen, Twiddle, Net, Netslide Similar gameplay 5
13 40

In the undirected graph below:

  • the relations among games are shown in a non-linear fashion
  • the edges try to illustrate the direct connections
  • the grouping almost matches the above table; differs in that it freely shows non-grouped nodes as independent ones. whereas in above table, i had to put it in its own row, or club with some other one.
  • some edges may feel superfluous, so give it a thoughtful consideration but take it easy
  • the legend box at top left-ish tries to clarify some shortforms in edge labels

Image rendered using https://kroki.io/#try with graphviz's dot language.

simon-puzzles-launcher


The graphviz/dot source code for above graph

digraph G {
	node [shape=rectangle]
	edge [dir=none]
	// compound=true;
	// rankdir = LR;

	// https://forum.graphviz.org/t/351/4 "adding-key-or-legend/"
	// subgraph clusterMain {
	mynodr [ 
	style="point" penwidth="0" labelloc="t" labeljust="l";
	label=<
		<TABLE BORDER="2" CELLBORDER="0" CELLSPACING="1" CELLPADDING="5" TITLE="legend">
		<TR><TD>legend</TD></TR>
		<TR><TD>≈ &lt;prop&gt;</TD><TD>similar &lt;property&gt;</TD></TR>
		<TR><TD>spec</TD><TD>specification, constraints, etc</TD></TR>	
		</TABLE>
	>];
	// }

	subgraph cluster_1 {
		label = "#fill";
		galaxies -> rectangles [label="rects"];
		rectangles -> filling [label="area"];
		filling -> palisade [label="non-rects"];
	}

	palisade -> loopy [label="grid-path"]

	subgraph cluster_2 {
		label = "#connected paths";
		// rankdir = LR;
		loopy -> slant [label="≈ feel"];
		slant -> bridges [label="≈ vertex spec;\n spanning tree"];

		loopy -> pearl [label="single loop"];
		pearl -> tracks [label="≈ prefills"];
	}

	tracks -> signpost;
	bridges -> untangle [label="no overlap"];
	bridges -> lightup [label="straight"];
	bridges -> net [label="spanning tree"]

	slant -> tent [label="unconnect"]; # [ltail=cluster_2, lhead=cluster_3];

	subgraph cluster_3 {
		label = "#unconnected regions";
		tent;
		lightup -> range [label="straight"];
	}

	range -> "black box" [label="put obstruction"];
	range -> singles [label="put obstructions"];

	subgraph cluster_4 {
		label = "#light reflections";
		"black box"; undead;
	}

	subgraph cluster_5 {
		label = "#sudoku";
		singles -> unequal [label="adjacent"];
		unequal -> towers [label="inequality"];
		towers; keen; solo;
		// towers -> keen; // [label="ranged\n constraint"];
		// keen -> solo;
	}

	subgraph cluster_7 {
		// label = "...";
		dominosa;
		magnets;
	}

	solo -> mosaic [label="blocks", style="dashed"];

	subgraph cluster_6 {
		label = "#b&w tiles";
		mosaic -> mines;
		unruly; pattern;
	}

	mines -> inertia;
	unruly -> map [style="dashed"];

	subgraph cluster_8 {
		// label = "...";
		net -> netslide [label="spanning tree"];
		net -> twiddle [label="rotate"];
		netslide -> sixteen [label="slide"];
		fifteen -> sixteen [label="ordered"];
		fifteen -> twiddle [label="ordered"];
	}

	subgraph cluster_9 {
		label = "#adjacent colours";
		map -> flood ->"same game";
	}

	subgraph cluster_10 {
		label = "#flip-flops"
		pegs; flip; cube;
	}

	guess;

	// Fix alignments
	edge [style="invis"];

	"black box" -> undead;
	towers -> keen -> solo;
	solo -> dominosa; // To bring mosaic & dominosa at same level
	dominosa -> magnets;
	pattern -> unruly;
	
	net -> fifteen;  // Bring fifteen at a lower level: spread evenly

	pegs -> flip -> cube;

	// "same game" -> guess;
}

goyalyashpal avatar May 18 '24 14:05 goyalyashpal