Logo

dev-resources.site

for different kinds of informations.

Empowering Indie Game Developers: A Showcase Platform Built with Passion

Published at
11/18/2024
Categories
indiegamedev
firebase
gamedev
react
Author
gladiatorsbattle
Author
16 person written this
gladiatorsbattle
open
Empowering Indie Game Developers: A Showcase Platform Built with Passion

Indie games are more than just entertainmentā€”they're a testament to the creativity and passion of developers worldwide. Unlike mainstream games, indie titles often carry unique stories, unconventional mechanics, and a love for the art of game design.

Driven by this belief, I set out to build a platform that provides indie developers with a stage to shine. This article takes you behind the scenes of the Indie Games Showcase Platform, detailing the inspiration, development process, technologies used, and the challenges faced along the way.

šŸŒŸ What is the Indie Games Showcase Platform?

Itā€™s a community-driven platform where:

  • Developers can upload their games, complete with descriptions, videos, and links.
  • Gamers can explore, vote for their favorite games, and engage with indie developers.
  • The Community decides which games deserve special recognition and featured spots.

The Vision: Why Build This Platform?

The idea was born out of a simple question:

How can I help indie game developers gain visibility without any costs?

Hereā€™s the problem: existing platforms often charge developers for exposure or drown indie games in a sea of mainstream titles. I wanted to create a space that:

  • Levels the playing field for all developers.
  • Promotes games based on community votes and engagement.
  • Provides a user-friendly experience for both developers and players.

Building the Platform: A Developer's Journey

Letā€™s dive into the development process. From choosing the tech stack to creating intuitive UI components, every decision was made to serve the indie game community better.

Tech Stack: Tools That Made It Possible
The platform relies on modern, scalable technologies:

  • React.js: For building reusable and responsive UI components.
  • Firebase: For hosting, database, authentication, and real-time data updates.
  • React-Bootstrap: To ensure a clean, responsive, and visually appealing interface.

Hereā€™s an overview of how I structured the app:

Folder Structure

src/
  components/
    GameCard.js
    GameSubmissionForm.js
    GameCategories.js
    Leaderboard.js
  pages/
    IndieGamesPage.js
    GameDetailsPage.js
  services/
    firebase-config.js
  styles/
    GameCard.css
    GameSubmissionForm.css
    IndieGamesPage.css
Enter fullscreen mode Exit fullscreen mode

This structure ensures separation of concerns, making the project easier to maintain and scale.

Core Components

  1. Indie Games Homepage The homepage serves as the entry point, designed to inspire developers and players alike. Hereā€™s what it includes:

A Call-to-Action Header
Encourages users to upload games or start exploring immediately.

<header className="indie-games-page-header">
  <div className="indie-games-header-content">
    <h1>šŸŽ® Indie Games Showcase</h1>
    <p>Discover and celebrate the creativity of indie developers!</p>
    <Button
      variant="warning"
      onClick={() => tabContainerRef.current.scrollIntoView({ behavior: 'smooth' })}
    >
      šŸš€ Start Exploring
    </Button>
  </div>
</header>
Enter fullscreen mode Exit fullscreen mode

Featured Games Section

Dynamically fetches and displays games tagged as "featured" in the database.

const featuredQuery = query(
  collection(db, 'indieGames'),
  where('featured', '==', true)
);
const featuredDocs = await getDocs(featuredQuery);
setFeaturedGames(featuredDocs.docs.map((doc) => ({ id: doc.id, ...doc.data() })));
Enter fullscreen mode Exit fullscreen mode
  1. Game Submission Form The form is the heart of the platform, designed to make game uploads effortless for developers.

Features:

Real-time validation for fields like video and image URLs.
An intuitive design with icons and tooltips for better guidance.

<Form.Group>
  <Form.Label>
    <FaGamepad /> Game Title
  </Form.Label>
  <Form.Control
    type="text"
    value={newGame.title}
    onChange={(e) => setNewGame({ ...newGame, title: e.target.value })}
    maxLength={100}
    required
  />
  <Form.Text>Maximum 100 characters.</Form.Text>
</Form.Group>
Enter fullscreen mode Exit fullscreen mode

Validation Example:

const isValidYouTubeUrl = (url) => {
  const regex = /^(https?:\/\/)?(www\.youtube\.com|youtu\.be)\/.+$/;
  return regex.test(url);
};
Enter fullscreen mode Exit fullscreen mode
  1. Game Categories Games are divided into Featured, Popular, and Recent tabs for seamless exploration. Each category fetches and displays games dynamically from Firebase.
const filterGamesByCategory = (category) => {
  switch (category) {
    case 'featured':
      return games.filter((game) => game.featured);
    case 'recent':
      return [...games].sort((a, b) => b.submittedAt.seconds - a.submittedAt.seconds);
    case 'popular':
      return [...games].sort((a, b) => b.likes - a.likes);
    default:
      return games;
  }
};
Enter fullscreen mode Exit fullscreen mode
  1. Leaderboard

To celebrate top-rated games, I created a Leaderboard with real-time updates.

Features:

Highlights the top 5 games with badges for gold, silver, and bronze ranks.
Dynamically updates likes and ranks.

const gamesQuery = query(
  collection(db, 'indieGames'),
  where('approved', '==', true),
  orderBy('likes', 'desc'),
  limit(5)
);
Enter fullscreen mode Exit fullscreen mode
  1. Game Details Page

Each game has a dedicated page with:

Embedded YouTube videos for gameplay previews.

Developer links to social media and official game pages.

Real-time stats for views and likes.

const embedUrl = `https://www.youtube.com/embed/${game.videoUrl.match(/[?&]v=([^&#]+)/)?.[1]}`;
Enter fullscreen mode Exit fullscreen mode

Challenges and Solutions

Real-Time Data Updates

Firebaseā€™s real-time database enabled seamless updates, but ensuring consistent performance required careful optimization of queries and indexing.

Responsive Design
Indie games deserve to shine on all devices. Implementing flexible CSS and media queries was crucial.

.indie-games-page-header {
  background: linear-gradient(145deg, #1e1e28, #343444);
  padding: 50px 20px;
  border-radius: 20px;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.6);
}
Enter fullscreen mode Exit fullscreen mode

Whatā€™s Next?

This platform is just the beginning. Hereā€™s what Iā€™m planning for the future:

  • Comments on Game Pages
  • Enable players to leave feedback and connect with developers directly.
  • Voting Contests
  • Create community-driven events to spotlight the most loved games.
  • Advanced Leaderboards
  • Add filters for categories like puzzle, action, or strategy games.

Join the Indie Revolution

Are you ready to showcase your game? Hereā€™s how you can get started:

Watch the video walkthrough to see the platform in action.

Upload your game and be among the first 10 developers to get free promotion.

Retweet and share the platform to help more indie developers shine.

Links to Get Started
šŸŒ Visit the Indie Games Showcase: https://gladiatorsbattle.com/indie-games
šŸ“¢ Follow us on Twitter: https://x.com/GladiatorsBT
šŸŽ„ Watch the walkthrough video: https://www.youtube.com/watch?v=xfPZPYwZjP0

Stay Connected with Us
šŸŒŸ Follow and support our journey:

Twitter: https://x.com/GladiatorsBT
Discord: https://discord.gg/YBNF7KjGwx
Website: https://www.gladiatorsbattle.com
Letā€™s make the indie gaming world a better placeā€”one game at a time. šŸŽ®āœØ

indiegamedev Article's
26 articles in total
Favicon
Empowering Indie Game Developers: A Showcase Platform Built with Passion
Favicon
JavaScript MMORPG - Maiu Online - #babylonjs - Ep37: Items model and equipment
Favicon
JavaScript MMORPG - Maiu Online - #babylonjs - Ep35: Simple quest system
Favicon
JavaScript MMORPG - Maiu Online - #babylonjs - Ep30: Spells and visual effects
Favicon
JavaScript MMORPG - Maiu Online - #babylonjs - Ep29: Chat message clouds
Favicon
JavaScript MMORPG - Maiu Online - #babylonjs - Ep27: Music and sound settings
Favicon
JavaScript MMORPG - Maiu Online - #babylonjs - Ep28: Global countdown
Favicon
JavaScript MMORPG - Maiu Online - #babylonjs - Ep: 26 Abilities definitions and new targeting marks
Favicon
Maiu Online - Browser MMORPG #indiegamedev #babylonjs Ep23 - Global Chat
Favicon
Maiu Online - Browser MMORPG #indiegamedev #babylonjs Ep22 - Map editor
Favicon
#babylonjs Browser MMORPG #indiegamedev Ep21 - Spatial Hash Grid Area of Interest
Favicon
Browser MMORPG #indiegamedev #babylonjs Ep20 - Client Side Prediction & Reconciliation
Favicon
Babylon.js Browser MMORPG - DevLog - Update #10- Entities interpolation
Favicon
Babylon.js Browser MMORPG - DevLog - Update - #9 - Floating combat text optimization
Favicon
Babylon.js Browser MMORPG - DevLog - Update #8 - Syncing combat animations, sound and damage text
Favicon
Babylon.js Browser MMORPG - DevLog- Update #7 - Player combat abilities
Favicon
Lus: Last Unit Standing Trailer
Favicon
Hello everyone!
Favicon
Project Universe Game Dev Update
Favicon
Project Universe Game Dev update
Favicon
Project Universe Indie Game Dev update
Favicon
Unity Tutorial: Simple Aseprite to Unity workflow using an Automated Scripted Importer
Favicon
New version of Crystal Blast 2.0
Favicon
Crystal Blast 2.0
Favicon
Game development is hard
Favicon
Making Story-Driven Indie Games with No Budget

Featured ones: