Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
Native Windows port of Shadow of the Colossus (PS4, CUSA08809) - bring your own game dump. Port nativo para PC.
8h +10★ 1,664Games
Do you operate this project?
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Organization repository · verify with a repository file
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
A cozy 3D egg-cooking game for the browser (built for iPad touch first, works with mouse too).
Three.js + plain HTML/CSS/JS. No build step, no Node required to host. It's a 100% static site.
Run it
Just double-click index.html (or upload the folder to any static host). The game is pre-bundled into game.bundle.js, so it also works straight from disk (file://), where browsers block ES modules.
index.html
style.css
game.bundle.js <- all code + three.js in one classic script
The only external request is the optional Google Font (Fredoka); it falls back to the system rounded font.
After editing anything in js/, rebuild the bundle:node build.mjs (it also stamps fresh ?v= versions into index.html so browsers never mix an old cached stylesheet with new code) (needs Node + internet once for esbuild). dev.html loads the unbundled js/ modules instead; it must be served over http(s), e.g. node serve.mjs. The build regenerates dev.html from index.html, so only ever edit index.html.
Any static server works. The included zero-dependency one needs only Node:
node serve.mjs
It prints a localhost URL plus a LAN URL. Open the LAN URL on your iPad (same Wi-Fi) to play. No Node? Use python -m http.server 5173 instead.
Tip: on iPad, use Share → Add to Home Screen for a full-screen, app-like experience.
How to play
Order Mode: 5 customers, each scored out of 100 (recipe 30 · doneness 40 · condition 20 · seasoning 10).
🌙 Cozy Mode: an order round with no timers and gentler browning.
🌹 Secret Admirer: a special regular who comes in every shift (favourite: Sunday Short Stack). Every 2 hearts unlocks a love note, read from 💌 Regulars. The letters live in js/lovenotes.js: rewrite them in your own words and run node build.mjs.
🎨 Decoration caddy: the wooden caddy in front of the plate holds real squeeze bottles (ketchup, sriracha, mayo, maple syrup, chocolate, berry coulis), topping bowls (blueberries, strawberry hearts, whipped cream, chives, sprinkles, sugar skulls), shape cutters and a cloth. Once something is on the plate, press a bottle or bowl and drag onto the dish, press a cutter to squeeze that shape, or press the cloth to wipe the last thing off. Art follows the real shape of the food, shows up in photos, adds +🪙3, and the order clock stops while you decorate.
🥞 Sweet dishes: press Batter and drag over the pan to pour a pancake (hold longer for a bigger one, or just tap), flip when bubbles appear (raw batter won't lift yet; flick harder for a higher flip, or very hard for a triple), and stack them on the plate. French toast works the same way from its tray button. Six new recipes score toppings instead of seasoning.
🍹 Drinks: 80 non-alcoholic drinks in the Drink Menu (coffee, tea, cozy, juice, fizzy, spooky), made on the 3D drink shelf on the back wall. Press and hold a bottle to pour it into the cup, tap jars for extras, tap a cup to swap, and use the top shelf's RECIPES chalkboard, spoon and bucket to pick a recipe, stir or start over; name tags float over them while you're making a drink. Floating progress chips over the cup and each bottle or jar the recipe needs show how far along you are, like the chips over food in the pan. Recipes match on exact liquids and extras, with proportions telling close cousins apart. About half of orders after the first ask for a drink too: it never changes the dish score, earns tips, and a regular's favourite made perfectly adds a heart. The order clock stops while you pour. Add a drink with one line in js/drinklist.js (a new liquid or extra also needs a spot on the shelf).
Everything answers a touch: tap the mug, teapot, cookie jar, candle (blow it out), crock, plant, cutting board, jars, herbs, lamp, fairy lights, clock, cabinet doors, fridge door or the window (changes the weather). New decorations: cookbooks (open the Recipe Book), a framed photo (opens the Scrapbook), a fruit bowl, a ghost, a toaster, a pumpkin lantern and potions. Things standing on the counter can also be dragged around.
📔 Scrapbook: Snap photo pastes the polaroid into an album (up to 60) where you can add captions, share or remove it. Photos are stored in this browser on this device only. The calendar marks every visit; the first visit each day earns a treat from Noxie, with bonuses at 3, 7, 14 and 30 days. Missing one day doesn't break the streak.
Performance (iPad)
Starts at full quality and adjusts itself automatically: if frames drop it steps down through 8 tiers, lowering resolution first, then shadow refresh rate, bloom, reflections and the lamp light; shadows go only on very weak hardware. When frames are smooth again it steps back up (a tier that failed twice isn't retried). "Sharpest detail" in Settings never drops effects, only resolution.
The Claude desktop app's browser pane uses Windows' software renderer (no GPU), so it runs far slower than Chrome, Safari or the iPad. Judge speed in a real browser.
Measures the display's refresh rate and targets 120 fps on ProMotion iPads (60 elsewhere). Safari may hold pages at 60 fps: Settings › Apps › Safari › Advanced › Feature Flags → turn off "Prefer Page Rendering Updates near 60fps". The in-game Settings shows this tip on an iPad stuck at 60 Hz.
Smoothness setting: "Smoothest" lets resolution drop further to hold the frame rate, "Sharpest detail" keeps it at least 1.5×.
Open index.html?fps for an on-screen meter (fps · Hz · quality tier · resolution · bloom/env).
Static meshes are merged per material (and colour-baked where safe) at load, and all particles draw in three batches.
Code map
File
What it does
js/main.js
renderer, lighting, orbit camera, quality scaling, main loop
js/kitchen.js
room, counter, cabinets, window, gas cooktop, flames, grate, knobs, decor
Regulars (💌 on the title screen): 10 named customers with their own lines and favourite dish. Good dishes fill their heart meter (favourites count double); a full meter unlocks a thank-you note.
Tips & 🛍️ Shop: every dish earns 🪙 tips (half in practice). Spend them on looks only: pans (incl. a midnight-plum pan with a skull-bow charm), plates, spatulas (bat-wing!), Noxie's outfits, a heart-shaped egg ring and a nap cushion.
✨ Today's special: one dish a day (shown on the title screen) earns +🪙10 when served with 2+ stars.
Stickers: the Recipe Book shows your best stars and how often you cooked each dish; a 3-star dish earns a 🏅 sticker.
📸 Photo: after serving, Snap photo frames the plate as a polaroid and saves it to the Scrapbook; tap Share photo to send it on (on iPad the share sheet can save it to Photos).
Noxie the kitchen imp sits on the counter: tap for purrs and hearts; it cheers great dishes and flops at bad ones.
📻 Radio: tap the radio (or pick in Settings) for Lo-fi Kitchen, Music Box, Rainy Jazz or off.
Settings → Kitchen mood: 🌙 Midnight Plum (default, dark purple UI), ☀️ Morning, 🌇 Golden Hour, ✨ Cozy Night; Weather: rain, snow or clear outside the window.
Free Cook: no timer, experiment freely. How to Play: an interactive tutorial.
Drag 🧈 butter into the pan → turn the heat dial → drag an 🥚 over the pan → tap to crack → drag sideways to pull the shell apart.
Spatula: touch the egg to lift it · swipe UP to flip · drag onto the plate. Drag in circles in the pan: one slow circle beats the egg (then let go for an omelette); let go and stir again to scramble. A ring at the pan shows 🥚 beaten and 🥣 scramble. For a scrambled-egg order one stir goes straight through.
More dishes: omelette (stir ONE slow circle to beat the egg, let it set, add 🧀/🍖 on top, touch it with the spatula and swipe UP to fold), egg fried rice (add 🍚 rice, crack an egg in, toss both together in circles) and sides: 🥓 bacon, 🍖 ham, 🌭 sausage, 🧀 cheese.
Open fridge on the back counter holds bacon, ham, sausage, cheese, rice, toast, tomatoes, a jug of pancake batter and bread soaking for French toast in 3D: tap an item to use it, or drag it out. The same items are on the shelf above the tool tray.
Several eggs at once: crack up to 3 eggs into the pan; each cooks, flips and plates on its own (they sit side by side on the plate). Stir and they beat together into one bigger omelette or scramble.
📖 Recipe Book (title screen, the 📖 button top-right, or "How to make it" on the order card): 23 dishes with ingredients, step-by-step instructions and a chef's tip. "Practice this in Free Cook" turns any recipe into a scored practice order.
Dishes: Sunny-Side Up, Eggs for Two, Over-Easy, Soft Scrambled, Cheesy Scramble on Toast, Cheese Omelette, Ham & Cheese Omelette (3 eggs), Egg Fried Rice, Bacon Fried Rice, Bacon & Eggs, Ham & Egg on Toast, the Full Breakfast (2 eggs, bacon, sausage, grilled tomato, toast), Tomato & Egg Scramble, Sunny Eggs & Blistered Tomatoes, Midnight Breakfast, Sausage Fried Rice, Cheese Omelette on Toast, Little Pancake, Sunday Short Stack, Berry Cloud Pancakes, Midnight Pancakes, French Toast and Strawberry French Toast.
Progress chips: every item cooking in the pan has its own chip (state + progress bar) floating above it; it turns blue and says "Flip it!" when the underside is done. A blue ↻ Flip button appears in the tool tray and flips whatever is ready; or flick the spatula up over an item, even without lifting it first. Dragging the spatula through bacon/ham/sausage nudges it along, and stirring is measured around the item you are stirring.
Ingredient shelf (above the tool tray): tap an ingredient to drop it in the pan, or drag it in or onto the plate. Lift anything out with the spatula; swipe UP while carrying it to flip. Scoop rice out over the pan rim.
Orders can ask for sides and fillings ("crispy bacon", "cheese inside"); they are scored in Recipe (presence) and Doneness (how well the side is cooked).
🗑️ Toss empties the whole pan, burnt butter included, so you can start clean.
Shake 🧂 salt and pepper by dragging the shaker and wiggling it (or just tap the tray button), then 🛎️ Serve.
Camera: drag empty space to orbit · pinch / scroll to zoom · two-finger drag to pan · 📷 resets the view.
Move anything: drag the pan (by its handle), plate, egg carton, butter dish, shakers and spatula around the counter. Pull the pan off the burner and it cools down.
js/audio.js
fully synthesized Web Audio SFX, generative music and the radio stations