Skip to content

About

๐Ÿ•น๏ธ Arcade-style game dev portfolio: insert coin, 3D intro and a character-select screen for projects

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

ย 

History

42 Commits

Folders and files

Repository files navigation

๐Ÿ•น๏ธ Leandro Custรณdio ยท Game Dev Portfolio

A portfolio that plays like an arcade game: insert a coin, watch the intro
and pick a project from a 3D character select screen.

Next.js React Three.js TypeScript Tailwind CSS GitHub Pages

๐ŸŽฌ Demo GIF coming soon


๐ŸŽฎ How it plays

Screen What happens
1 Insert Coin A blinking INSERT COIN on a black screen. Click anywhere to start.
2 Intro A 3D logo flies in over a sky of clouds, with music, then flashes to white.
3 Select Screen Projects are laid out as slots on a 3D globe. Hover one to see its banner and portrait, with a spinning PLAYER ring locking onto it. Click to open it.

๐Ÿ—‚๏ธ Projects inside

Project Where it goes
Trail To Elenki itch.io
Eu Presidente itch.io
Until It Blooms itch.io
Flappy Bird GitHub
Bad Apple ASCII Live demo

โœจ Highlights

  • Real-time 3D with React Three Fiber and drei: the cloud sphere, the 3D logo, the project globe and the rotating ring.
  • Slots placed on a sphere: each row of the globe is projected onto the sphere surface and turned to face outward, so the cards curve like a real select screen.
  • Arcade feel: pixel font, select screen music and hover sound effects.
  • Data-driven: every project on the globe comes from a single JSON file.
  • Static export: built with next build (output: "export") and deployed to GitHub Pages on every push to main.

โž• Adding a project

Add an entry to public/data/projects.json:

{
  "id": "my-game",
  "name": "My Game",
  "icon": "/projects/icons/my-game.png",
  "portrait": "/projects/myGameBanner.png",
  "url": "https://example.itch.io/my-game"
}

Put the images in public/projects/ and push. The globe picks it up automatically.

๐Ÿ› ๏ธ Running locally

npm install
npm run dev

Then open http://localhost:3000.

Note

In production the site is served from /portifolio-gameDev, so next.config.ts sets a basePath only when NODE_ENV=production. Asset paths in components are prefixed with NEXT_PUBLIC_BASE_PATH for the same reason.

๐Ÿš€ Deploy

Every push to main runs .github/workflows/deploy.yml, which builds the static site into out/ and publishes it to GitHub Pages.

๐Ÿ“ Structure

portifolio-gameDev/
โ”œโ”€โ”€ app/                    # Next.js app router (layout, page, global styles)
โ”œโ”€โ”€ components/
โ”‚   โ”œโ”€โ”€ InsertCoin/         # "INSERT COIN" start screen
โ”‚   โ”œโ”€โ”€ Intro/              # 3D intro: cloud sphere + logo
โ”‚   โ”œโ”€โ”€ Globe/              # 3D select screen: globe, slots, player ring, title
โ”‚   โ”œโ”€โ”€ ProjectBanner/      # Banner of the hovered project
โ”‚   โ”œโ”€โ”€ ProjectPortrait/    # Portrait of the hovered project
โ”‚   โ”œโ”€โ”€ Background/
โ”‚   โ””โ”€โ”€ Sfx/                # Music and hover sounds
โ”œโ”€โ”€ lib/projects.ts         # Project type
โ”œโ”€โ”€ public/
โ”‚   โ”œโ”€โ”€ data/projects.json  # Projects shown on the globe
โ”‚   โ”œโ”€โ”€ projects/           # Icons and banners
โ”‚   โ”œโ”€โ”€ music/              # Intro, select screen and hover sounds
โ”‚   โ””โ”€โ”€ fonts/
โ””โ”€โ”€ .github/workflows/      # GitHub Pages deploy

๐Ÿ“ซ Contact

GitHub LinkedIn


Press START to play ยท If you liked it, drop a โญ

About

๐Ÿ•น๏ธ Arcade-style game dev portfolio: insert coin, 3D intro and a character-select screen for projects

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages