Web4Games vibecoding web2
This project will create a game with its correspondent multiplayer server and role based mbmobile responsive web first primitive visual.
All artifacts of this project will be fully vibe coded, that means generated by GitHub Copilot and one of its LLM models. The LLM shall act as a complete development team, with Product Owner (managing hte requirements), Scrum Master (overseeing which role is active when), Dev Ops, docker admin, shell programmer, Typscript backen expert, Javascript ES2020 frontend expert, tester and whatever role is required by the tech stack.
Each Role will have its own prompt documentation in its own directroy and the scrum master orchestrates which task is currently active and what role is doing it.
The Prompting User (me) will act as a quality assurance and steer the development process by feedback, that the Scrum master picks up from me as the user.
The PO creates a task breakdown for roles as md files adn the scrum master works them of and picks up the quality assuring prompts from the user.
The scrum master asign a task and then switches to the role that has to do the tasks and executes the prompts for that role and task, that where generated by the product owner.
Goal is to create a full work breakdown structure into tasks for the whole project, architecture layer by layer. from coarse grained to adding details later until a deliverable product can be shipped.
The game server and client will be written in modern 100% OOP Javascript/Typescript code.
The Project will host all files to selfcreate a runtime environment using modern GitHub devcontainers, that serverlessly deploy to GitHub. The GitHub CI-CD action files will be fully included in the project.
The serverside environment will be running in a GitHub devcontainer, that starts from a naked ubuntu and install all base software through one bash script. The core runtime for the typescript server will be bun, that the shell script developer has to setup.
The main client side environment will be chrome and safari browser on a mobile phone.
The main web visualisation will use LIT webComponents. On server and client side all is done with the lates javascript and typescript language features like ES modules, private attributes, serialized model JSONs for class state, proxys for event, security and persistence intercepors, client side Drag and Drop and webSocket communication betwen client and server notes.
The server will be suitable to create a multipage, multirole PWA (Progressive Web App), that runs fully offline and can install itself as an app. The offline capabilities try to enable a browser virtual file system, that enable first time online loading but later offline starting and syncing back file states, when the server comes back online.
Clients shall be able to talk to the server, but also to other clients directly P2P. For all requirements suggest latest state of the art Typescript libraries.
Let the LLM act as the scrum master to coordinate the different roles and prompt the user about what the next planned step is. Then let the PO structure the requirements and create tasks in seperated nubered files for a work breakdown structure. At first coarse grained and the later detailed in a braod first approach. The PO (Product Owner) creates a role based prompt for each task and the scrum master then loops through the tasks and works them of by assining the tasks to the next LLM role. between each assignment and execution the user is prompted for what will happen next and if there is any feedback for quality assurance.
Quality assurance is always first priority and will lead to restructuring and repriorisation of the next tasks. If the user feedback is empty, just continue to loop the execution. Otherwise try to plan the user feedback with the PO and continue looping the tasks.
Start with the creation of the work breakdown for the docker dev container and its execution. then dive into the product specification.
Up and Down (UD) is a multiplayer card game. The main goal is to get as many guesses correct and use the special effect cards as efficient as possible. The Game is based on rounds where the “dealer” or the table master plays a card. The card is from a classic French Suited card deck (52 cards in total). The player now try to guess if the next card is higher or lower in value than the card dealt by the table master. If the player guesses right, he will go to the next round, where he can guess again. If he is wrong, he will lose this round. The player gains Points for every round he manages to survive, and the highest scores are displayed in a leaderboard. The game is free to play, and the player has unlimited tries. However, the special booster cards cost some Diamonds (ingame currency) to buy. He can buy Diamonds and some character designs in the ingame shop. Following the description of how a multiplayer game round looks like: All players (up to 8 per lobby, maybe more?, flexible lobby settings possible, every player can set up own lobby), spawn in the spawning area (around the playing table, round shape). After spawning the game master (GM) will start the game with drawing his first card from his hand. The GM always holds 7 cards in his hand and has a stating deck of 52 cards (French- suited card set). The GM chooses the cards he plays always at random! Now the placing phase of the player starts. All players have to place one of their cards within the next 10 Seconds. Every player can only play one card per round. There are four card categories, which the player can choose from:
- Up-Card: If the Up-Card is played, the player guesses, that the next card played by the GM will be of higher value than the current card.
- Down-Card: If the Down-Card is played, the player guesses, that the next card played by the GM will be of lower value than the current card.
- Even-Card: If the Even-Card is played, the player guesses, that the next card played by the GM will be of the same value than the current card.
- Special Effect Card: The special effect cards do contain special effects, which influence the round of the player. More Details about those cards in the special effects card section. The player now places his card of choice. If the countdown of 10 Seconds has run down to zero seconds or every player has played a card, the game phase ends and the new game phase starts. This game phase is called exchange. During the exchange phase, player can leave or join lobbies. If there is no player waiting for entry, the game will go to the next round. If a player descides to leave, he can do that at any point in time, but his seat will only be free when the next exchange phase takes place. During the exchange phase all entry animations will be played out (see Character -> animations for more information). After the exchange phase has been completed, the next phase starts, where the GM draws a new card. He now plays a random card again. If the new played card is higher, than the last played card, every player who has played the higher card will win and proceed to the next round. If the same value or a lower value card has been played out by the GM, the respective party who has chosen the correct card will progress. All other players will be eliminated from this game round. After the GM placed his card, another 10 second cooldown starts, and the players turn begin again. When the Countdown starts, the player gains a new Up-, Down-, or Even-Card if they have played it last round. For example, a player played an Up-Card and was correct, he will get a new Up-Card again to play this round. The special effect cards will not be replaced. The game round ends if the GM can not draw any new card from his deck or all players are eliminated. Leaderboard points are given to all players depending on their success in the game. Now we understand the general game concept and design and we are able to dive deeper into the different aspects of the game development.
Every player gets points, depending on his success in guessing the correct cards. There are points per correct guessed card, and minus points, if the card was guessed wrong. However, there are always more points to gain than to lose. Therefore, player usually get higher total scores if they play more. Bonus points are rewarded for longer correct guessing streaks. For example, every 5 correct cards in a row (5-10-15-20-...) will have a point multiplicator. Players will also get special cards as rewards if they manage to hit a certain amount of consecutive right guesses. Those special cards can be used in future matches/game rounds but not in the ongoing one. Therefore, all achievements come within the shop system/gift section. The player needs to claim the reward first, before using it in a game. The leaderboards will show the players with the most points in a ranking. The ranking is with all players in it and players can check the next 50 players before them and the next 50 players behind them in the high score list. If two players have the same number of points, the one who achieved the points first will stay at the top. Additional to the total point rankings a max streak ranking is included as well. The top 100 players with the highest streak of guessing the correct card in a row will be ranked there. There will be rankings for “clans” as well, where a player can choose a region or a VIP player to follow or help in the rankings. This way popular player can combine points of followers to obtain top spots in a separate ranking. For example a player can choose various rankings like country ranking, platform ranking (Youtube, Twitch, etc.) and many more.
The game needs to be translatable in every language.
The game client has a login and then the player is in the main overview menu. From here he can choose a character, modify his characters, adjust settings, enter the shop , create or join lobbies etc. It is the general interface between games. He can dress his character or modify it. He can enter rankings and generally manage his account. The game development team has also the possibility to push news and information to the players via information menu (like shop updates or special events).
The multiplayer mode needs a dedicated anti cheat system. The focus is to protect lobbies from cheaters. Every cheater will be banned for life. It is important, that the player will never have access to information about the next card played or is in any way able to manipulate the game to his advantage. It is important, that no bots or bot systems can run the game. Bot behaviour and auto click systems need to be detected and banned. Currently we have not decided on an anti cheat system or a method yet. Needs further discussion and your input is welcome.