{"id":28240199,"url":"https://github.com/etmendz/game-console-2048","last_synced_at":"2026-04-30T14:31:42.046Z","repository":{"id":184339995,"uuid":"671295891","full_name":"etmendz/game-console-2048","owner":"etmendz","description":"A simple console app version of 2048 written in C#.","archived":false,"fork":false,"pushed_at":"2023-11-16T11:37:06.000Z","size":86,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-11T22:44:02.007Z","etag":null,"topics":["2048","2048-game","console-app","console-game","csharp","csharp-game","dotnet","dotnet8","game","learn-to-code","learntocode"],"latest_commit_sha":null,"homepage":"https://github.com/etmendz/game-console-2048/wiki","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/etmendz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"custom":["https://www.paypal.me/ETMendz"]}},"created_at":"2023-07-27T02:14:00.000Z","updated_at":"2024-08-13T20:14:10.000Z","dependencies_parsed_at":"2023-11-16T12:44:19.513Z","dependency_job_id":null,"html_url":"https://github.com/etmendz/game-console-2048","commit_stats":null,"previous_names":["etmendz/game-console-2048"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/etmendz/game-console-2048","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etmendz%2Fgame-console-2048","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etmendz%2Fgame-console-2048/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etmendz%2Fgame-console-2048/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etmendz%2Fgame-console-2048/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/etmendz","download_url":"https://codeload.github.com/etmendz/game-console-2048/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etmendz%2Fgame-console-2048/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32468009,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"ssl_error","status_checked_at":"2026-04-30T13:12:06.837Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["2048","2048-game","console-app","console-game","csharp","csharp-game","dotnet","dotnet8","game","learn-to-code","learntocode"],"created_at":"2025-05-19T03:12:46.900Z","updated_at":"2026-04-30T14:31:42.030Z","avatar_url":"https://github.com/etmendz.png","language":"C#","funding_links":["https://www.paypal.me/ETMendz"],"categories":[],"sub_categories":[],"readme":"[Wiki](https://github.com/etmendz/game-console-2048/wiki)\n# GameConsole2048\nInspired by 2048 -- https://github.com/gabrielecirulli/2048/.\n\nGameConsole2048 is a simple console app version of 2048 written in C#.\n\nUses the [GameLibrary](https://github.com/etmendz/game-library/wiki) framework to define the game play, game UI and overall game flow.\n\nUses the .NET Community Toolkit High Performance package -- https://learn.microsoft.com/en-us/dotnet/communitytoolkit/high-performance/introduction.\n\n## Game UI\nThe game UI implements IGameUI.\n\nThe game UX provides the capabilities to support game play interactions.\n\nThe game IO provides the capabilities to support saving and loading game stat and game data (model).\n\nBuilt-in features include the ability to save and load game stat and game data (model).\n\n## Game Play\nThe game grid implements IGamePlay.\n\nThe game model is derived by the the game grid, which therefore also represents the game data, that can be used to save and load a game.\n\nThe game cell has the NEWS (north, east, west, south) properties, which are references to the game cell's neighbors in the game grid.\n\nBuilt-in features include the ability to keep track of goal, moves, score, won status, game time and game over state.\n\n## Native AOT\nThe GameConsole2048 and GameLibrary2048 projects are native AOT compatible/ready.\n\nSource generation contexts are created for game model and game stat, each getting its own game IO implementation. These enhancements are important to support publishing native AOT builds.\n\nPublish profiles (.pubxml) are included for the following Runtime Identifiers (RID):\n\n* For win-x64 (ex. Windows 11): dotnet publish -p:PublishProfile=FolderProfile\n* For linux-x64 (ex. WSL+Debian): dotnet publish -p:PublishProfile=FolderProfile1\n* For linux-arm64 (ex. Raspberry Pi OS): dotnet publish -p:PublishProfile=FolderProfile2\n\nThese can be used as basis/pattern for creating publish profiles that target other RIDs not listed above.\n\nBe sure to run the dotnet publish commands above in the same folder where the GameConsole2048 project is.\n\nAlthough the GameConsole2048 project is native AOT compatible/ready, publishing to a native AOT build is not required.\n\n## Tools\nScripts are provided to help publish native AOT versions for the following RIDs:\n\n* For win-x64 (ex. Windows 11): publish-nativeaot-win-x64.bat\n* For linux-x64 (ex. WSL+Debian): publish-nativeaot-linux-x64.sh\n* For linux-arm64 (ex. Raspberry Pi OS): publish-nativeaot-linux-arm64.sh\n\nThese can be used as basis/pattern for creating publish scripts that target other RIDs not listed above.\n\nAlthough the GameConsole2048 project is native AOT compatible/ready, publishing to a native AOT build is not required.\n\n## Artifacts\nBuild outputs go to the solution's artifacts\\ subdirectory:\n\n    game-console-2048\\\n        artifacts\\\n            bin\\\n                GameConsole2048\\\n                    debug\\\n                    release\\\n                    release_\u003cRID\u003e\\*\n            obj\\\n                GameConsole2048\\\n                    debug\\*\n                    publish\\\u003cRID\u003e\\\n                    release\\*\n                    release_\u003cRID\u003e\\*\n            publish\\GameConsole2048\\release\\\u003cRID\u003e\n        src\\\n            GameConsole2048\\\n                Properties\\PublishProfiles\\\n        tools\\\n\n## Known Issues\nThe ProcessExit event handler calls the methods to save game stat and game data (model). This event handler is called when the player presses [Esc], or clicks on the console/terminal tab/window's close [x] button.\n\nFor the native AOT builds though, the ProcessExit event handler is called only when the player presses [Esc]. This event handler is not called when the player clicks on the console/terminal tab/window's close [x] button.\n\n---\n\n(c) Mendz, etmendz. All rights reserved.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fetmendz%2Fgame-console-2048","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fetmendz%2Fgame-console-2048","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fetmendz%2Fgame-console-2048/lists"}