[{"data":1,"prerenderedAt":415},["ShallowReactive",2],{"project-47111981":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":5,"maker":10,"posted_at":11,"year":12,"points":13,"comments":14,"rank_in_year":15,"shown_in_year":16,"top":17,"tier":18,"category":19,"subcategory":20,"format":21,"keywords":22,"reception":26,"sentiment":27,"stance_mix":28,"scored_comments":32,"aspects":33,"strip":43,"post_text":45,"what":46,"said":62,"maker_in_thread":226,"shape":235,"grid":239,"attempts":377,"same_week":378,"maker_shows":237,"maker_hidden":407,"reader_version":408,"card":409},"47111981","voxjong.com","3D Mahjong, Built in CSS","title","Show HN: 3D Mahjong, Built in CSS","https:\u002F\u002Fvoxjong.com","rofko",1771775582,2026,138,60,470,4366,11,"notable","games","mahjong solitaire","web_app",[20,23,24,25],"css 3d","browser game","css transforms","mixed",-0.111,{"positive":29,"neutral":30,"mixed":31,"critical":30},5,9,7,30,{"execution":34,"idea":37,"design":39,"performance":41,"docs":42},{"positive":35,"critical":36},1,4,{"positive":38,"critical":29},0,{"positive":40,"critical":38},2,{"positive":35,"critical":38},{"positive":38,"critical":38},[35,44,38,38,35,44,38,44,38,44,44,44,38,35,38,38,38,38,38,38,35,44,35,44,44,44,44,35,38,44,44,44,29,29,38,29,35,29,35,38],3,null,{"problem":45,"audience":45,"pricing":45,"motivation":45,"time_to_build":45,"stack":47,"openness":61,"stage":61,"team_size":61},[48,57],{"value":49,"source":50,"evidence":51},"CSS","maker",[52,54],{"id":53},"post",{"id":55,"by":10,"text":56},"47115735","Thank you for the insight! I think rotating the tile images is key. Since I’m using CSS Grid for positioning, there are some limitations around overlap like the one you…",{"value":58,"source":50,"evidence":59},"CSS Grid",[60],{"id":55,"by":10,"text":56},"unknown",{"praise":63,"objections":91,"requests":140,"questions":179,"alternatives":194},[64,84],{"value":65,"source":66,"evidence":67},"Looks good and fun to play; impressive CSS 3D work","commenter",[68,72,76,80],{"id":69,"by":70,"text":71},"47112315","apresmoi","wtf kind of magic is that? I looked at the repo and... you've built a 3d CSS rendering engine to create this?",{"id":73,"by":74,"text":75},"47114854","tejonutella","Looks cool! Wish I knew how to play Mahjong tho",{"id":77,"by":78,"text":79},"47118643","soni96pl","Beautiful work, thank you for showing it",{"id":81,"by":82,"text":83},"47112230","HardwareLust","Very nice! Worked great on my shitty old Motorola phone.",{"value":85,"source":66,"evidence":86},"Tile fading for inaccessible tiles is helpful",[87],{"id":88,"by":89,"text":90},"47112409","rpdillon","Thanks for mentioning this. I played a little bit and I felt like it was the opposite of what I'd remembered. I do like that the inaccessible tiles are faded somewhat so that I…",[92,103,122,129],{"value":93,"source":66,"evidence":94},"Free-tile rule checks top and bottom instead of sides",[95,99],{"id":96,"by":97,"text":98},"47112036","codingdave","It is a nice UX, but with a fatal flaw: Tiles are supposed to be free when there is a side free, but you instead have it coded to be free when the top or bottom is free. Your…",{"id":100,"by":101,"text":102},"47116619","Crestwave","A \"free side\" means being exposed on the left or right, matching your Wikipedia quote. On the other hand, OP's implementation checks if it can be moved up or down.",{"value":104,"source":66,"evidence":105},"Not real Mahjong; it is Mahjong solitaire",[106,110,114,118],{"id":107,"by":108,"text":109},"47112803","snvzz","This ain't mahjong. Instead, it is some solitaire using mahjong pieces.",{"id":111,"by":112,"text":113},"47122738","alexb_","Disappointed to see that this is solitaire and not Riichi :( would love to see more implementations of actual mahjong",{"id":115,"by":116,"text":117},"47113573","overflyer","This has bothing to do with how Mahjong is actually played.",{"id":119,"by":120,"text":121},"47115902","pfych","This is Mahjong Solitaire - It's completely different to actual Mahjong. It's a completely different game that uses Mahjong tiles.",{"value":123,"source":66,"evidence":124},"Tiles images rotated and overlapping tiles not supported",[125],{"id":126,"by":127,"text":128},"47115499","jasperry","If you rotate it so the board looks like the traditional solitaire layout, the direction of free tiles is horizontal as it's supposed to be. But then the images on the tiles are…",{"value":130,"source":66,"evidence":131},"Last tiles can end up stacked, preventing completion",[132,136],{"id":133,"by":134,"text":135},"47120333","omgmajk","Two games in a row now I have gotten to a point where the last two pieces are ontop of eachother. I think this is perfectly fine, but seems to happen a little too often. Or I was…",{"id":137,"by":138,"text":139},"47114542","aranw","Really enjoyed that although my final two tiles were stacked and couldn't finish the game!",[141,156,163,171],{"value":142,"source":66,"evidence":143},"Fix mobile pull-to-refresh and text selection while clicking",[144,148,152],{"id":145,"by":146,"text":147},"47112598","akersten","If I click fast enough on mobile it starts trying to select\u002Fhighlight text, should be able to prevent that with CSS too. I find this is somehow a common issue that separates a…",{"id":149,"by":150,"text":151},"47113250","Minor49er","This is pretty cool. I like the look and the gameplay. Though playing on mobile, some of the roatation gestures caused the page to refesh on me a couple of times since they…",{"id":153,"by":154,"text":155},"47114183","koolala","I wish you could rotate all the way. On a phone its also easy to do the refresh gesture.",{"value":157,"source":66,"evidence":158},"Ensure boards are solvable",[159],{"id":160,"by":161,"text":162},"47113470","sanj","This is lovely! Can I suggest make sure that the board is solveable?",{"value":164,"source":66,"evidence":165},"Support full rotation",[166,170],{"id":167,"by":168,"text":169},"47112453","DuncanCoffee","Nice! Wish the supported rotation was bigger, maybe +- 90 instead of only 90 deg?",{"id":153,"by":154,"text":155},{"value":172,"source":66,"evidence":173},"Add riichi or other real Mahjong rulesets",[174,178],{"id":175,"by":176,"text":177},"47112759","haunter","Now make it _real_ mahjong (; https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMahjong Which makes me wonder which ruleset would be the easiest to implement. Probably MCR or HK, riichi has too many…",{"id":111,"by":112,"text":113},[180,187],{"value":181,"source":66,"evidence":182},"Why is there no perspective projection option",[183],{"id":184,"by":185,"text":186},"47113575","TazeTSchnitzel","Is the lack of a perspective projection option deliberate? CSS can do that too.",{"value":188,"source":66,"evidence":189},"How to play the game",[190],{"id":191,"by":192,"text":193},"47129488","lieblingautor","i'm confused how to play it but it's pretty amazing this was done with css cool stuff man",[195,202,211,219],{"value":196,"source":66,"evidence":197},"Mahjong bundled with Linux distributions",[198],{"id":199,"by":200,"text":201},"47114118","Bender","I think this is a good example of what CSS can do and probably was not easy to make but I will likely stick with Mahjong that comes with most Linux distributions as they follow…",{"value":203,"source":66,"evidence":204},"Mahjong Soul",[205,208],{"id":206,"by":176,"text":207},"47113275",">hunky furries Well the other options are the gooner gacha games like Mahjong Soul and Riichi City lol Personally I play on Mahjong Soul because apart from Tenhou that has the…",{"id":209,"by":176,"text":210},"47114778","Helper UI per se won't exist because there are so many little things. If we talk about riichi then the best tutorial is probably in Kemono Mahjong…",{"value":212,"source":66,"evidence":213},"Kemono Mahjong",[214,218],{"id":215,"by":216,"text":217},"47112943","whateveracct","Riichi is a good candidate for a video game due to all the specific rules. It has a lot of room for QoL. I have an app on my phone [1] that has made it fun to play and learn…",{"id":209,"by":176,"text":210},{"value":220,"source":66,"evidence":221},"CSS Minecraft",[222],{"id":223,"by":224,"text":225},"47114306","rafabulsing","Minecraft in CSS has been done, actually! https:\u002F\u002Fbenjaminaster.com\u002Fcss-minecraft\u002F Discussion: https:\u002F\u002Fnews.ycombinator.com\u002Fitem?id=44100148",{"comments":31,"answered":38,"key":227},[228,231,232],{"id":229,"text":230},"47112475","Thank you for the feedback! I will triple check the rules",{"id":55,"text":56},{"id":233,"text":234},"47120766","Thank you! I'm going to review that. In the meantime I've added Undo\u002FRedo options so you can backtrack your steps.",{"commenters":236,"max_depth":237,"maker_replies":31,"first_comment_mins":237,"lifespan_hours":238},40,6,47,[240,242,244,246,250,252,254,255,257,258,259,263,267,270,272,276,278,280,281,283,286,288,290,292,293,294,297,299,300,303,305,306,308,310,313,315,317,318,320,323,327,329,330,332,335,338,340,342,344,347,349,352,356,358,363,365,368,371,373,375],[96,38,35,241,97,38],"project\u002Fcritical\u002Fexecution",[88,38,44,243,89,38],"project\u002Fmixed\u002Fexecution",[229,38,38,245,10,35],"maker\u002Fneutral\u002Fnone",[247,38,38,248,249,38],"47113277","commenter\u002Fpositive\u002Fexecution","thih9",[100,38,38,251,101,38],"commenter\u002Fneutral\u002Fexecution",[253,38,38,251,249,38],"47135908",[126,38,35,241,127,38],[55,38,38,256,10,35],"maker\u002Fneutral\u002Fexecution",[133,38,44,243,134,38],[233,38,38,245,10,35],[260,35,44,261,262,38],"47113099","project\u002Fneutral\u002Fidea","rdescartes",[264,35,38,265,266,38],"47113398","other\u002Fneutral\u002Fnone","gchamonlive",[268,40,38,265,269,38],"47116347","alexpotato",[160,44,44,271,161,38],"project\u002Fneutral\u002Fexecution",[273,44,38,274,275,38],"47117493","commenter\u002Fneutral\u002Fidea","uean",[199,36,44,277,200,38],"project\u002Fmixed\u002Fidea",[279,36,44,261,154,38],"47114270",[223,36,38,265,224,38],[282,36,38,265,200,38],"47114440",[284,36,38,265,285,38],"47119476","grougnax",[175,29,35,287,176,38],"project\u002Fcritical\u002Fidea",[289,29,38,265,108,38],"47112809",[291,29,38,265,176,38],"47112927",[215,29,38,265,216,38],[206,29,38,265,176,38],[295,29,38,265,296,38],"47118282","dugidugout",[298,29,38,265,154,38],"47114211",[209,29,38,265,176,38],[301,29,38,265,302,38],"47137960","snarf21",[304,29,38,265,112,38],"47122722",[145,237,35,241,146,38],[307,237,44,261,154,38],"47114305",[309,237,38,245,10,35],"47120752",[311,31,35,241,312,38],"47113678","thenthenthen",[137,314,44,243,138,38],8,[316,314,38,256,10,35],"47115842",[149,30,44,243,150,38],[319,30,38,245,10,35],"47120757",[167,321,44,322,168,38],10,"project\u002Fmixed\u002Fdesign",[324,321,44,325,326,38],"47112519","project\u002Fneutral\u002Fdesign","omoikane",[328,321,44,325,154,38],"47114198",[107,17,35,287,108,38],[331,17,38,265,154,38],"47114238",[333,17,35,287,334,38],"47117440","socalgal2",[81,336,29,337,82,38],12,"project\u002Fpositive\u002Fperformance",[153,339,44,325,154,38],13,[341,339,38,245,10,35],"47120760",[184,343,44,325,185,38],14,[73,345,29,346,74,38],15,"project\u002Fpositive\u002Fdesign",[77,348,29,346,78,38],16,[191,350,44,351,192,38],17,"project\u002Fmixed\u002Fdocs",[353,354,38,265,355,38],"47113141",18,"user3939382",[357,354,38,265,312,38],"47113193",[359,360,29,361,362,38],"47114271",19,"project\u002Fpositive\u002Fnone","jsmo",[111,364,35,287,112,38],20,[69,366,29,367,70,38],21,"project\u002Fpositive\u002Fexecution",[369,366,44,271,370,38],"47112497","pverheggen",[115,372,35,287,116,38],22,[374,372,38,265,154,38],"47114221",[119,372,38,376,120,38],"commenter\u002Fneutral\u002Fnone",[],[379,384,389,394,398,403],{"id":380,"name":381,"points":382,"category":383},"47075124","Micasa",657,"productivity",{"id":385,"name":386,"points":387,"category":388},"47114530","CIA World Factbook Archive",496,"learning_science",{"id":390,"name":391,"points":392,"category":393},"47104667","ntransformer",395,"ai",{"id":395,"name":396,"points":397,"category":393},"47131225","Steerling-8B",328,{"id":399,"name":400,"points":401,"category":402},"47123631","PgDog",326,"infrastructure",{"id":404,"name":405,"points":406,"category":393},"47143755","Moonshine Open-Weights STT models",316,false,"v2",{"id":410,"name":5,"line":6,"ai":407,"cat":19,"year":12,"points":13,"comments":14,"rec":26,"s":411,"top":17,"kw":412,"maker":10,"domain":5,"tier":18,"attempts":38,"strip":413,"url":9,"mix":414,"praise":65,"objection":93,"sub":20},47111981,-0.11,[20,23,24,25],"1300130303330100000013133331033355051510",[29,30,31,30],1794036694012]