GamesCenter - Elevating the Web Experience

June 2023

Downosaur of GamesCenter

Context

GamesCenter was born out of a need for a more user-friendly alternative to the clunky default “browse files” interface commonly found on the web. This project aimed to provide a seamless and efficient browsing experience for users accessing HTML game-related content.

Quest for Improvement

The initial inspiration for GamesCenter stemmed from the frustration of navigating a cluttered web folder devoid of essential features such as search functionality, game descriptions, and appealing cover art. The objective was clear: transform this lackluster digital environment into a vibrant game hub equipped with enhanced browsing capabilities.

Here’s a screenshot of what it was like to browse, with only a little files :

The actual UX before GamesCenter

The development journey of GamesCenter was not without its obstacles. Server-side scripting restrictions necessitated the use of client-side JavaScript for data manipulation. Additionally, security headers and an HTTP AUTH mechanism with token-based authentication presented further hurdles.

Despite these challenges, innovative solutions were devised to overcome technical limitations and ensure the smooth functioning of GamesCenter.

Constraints can often lead to innovative solutions, and allowed the single file “app.html” to be a stone thowards the idea of having a “Portable Web App” single file, that you could drop on any webserver and expect it to work.

A fully featured web app that's portable for only 303Kb

Designing the Experience

A key focus of GamesCenter was to deliver a user-friendly interface that prioritized ease of navigation and accessibility. The decision to implement hash-based routing, instead of more complex JavaScript-driven SPA navigation, was made to preserve scroll positions and enhance user experience. Real-time search functionality and a streamlined details pane further enriched the browsing experience, providing users with quick access to game information.

GamesCenter could have been a small game shop, but we decided to take a different route – everything would be free and open.

Search Features

GamesCenter offers a streamlined search functionality, allowing users to quickly find their favorite games with ease. The search feature scans both the title and translated English title for comprehensive results, ensuring a double dose of convenience. With real-time filtering, there’s no need to wait around – simply type your query and watch as the results light up before your eyes.

Simple search that works

Details Pane

The details pane in GamesCenter provides users with essential game information in a simple and easily accessible format. Rather than a separate window, the details pane functions as a popup, allowing for seamless interaction. Behind the scenes, it queries a pre-computed meta file, now represented as a JSON, which contains a wealth of details about each game.

Details pane. Radicaly simple yet functionnal

This efficient approach not only simplifies the user experience but also reduces the need for complex backend processing. By dynamically creating content based on the meta file, GamesCenter offers users a deeper dive into game details without unnecessary clutter or complexity.

{#if gameStore?.description?.length > 0}
  <div class="description">
    {#each gameStore?.description as block}
      <div>
        {#if block?.head}
          <h3>{block?.head}</h3>
        {/if}
        {#if block?.body}
          <p>
            {#each block.body.split("\n") as line}
              {line}<br />
            {/each}
          </p>
        {/if}
      </div>
    {/each}
  </div>
{/if}

This minimalist approach highlights the importance of simplicity in web development, demonstrating that the best code is often the code that isn’t there. By prioritizing efficiency and functionality, GamesCenter steps towards new standard for web-based experiences.

Learning Through Packaging and Optimization

Exploration of Vite and packaging techniques provided valuable insights into code bundling and optimization. Leveraging these tools, GamesCenter was streamlined into a single-file application, optimized for production deployment. This approach not only simplified the deployment process but also improved the overall performance of the application.

At the end I managed to deliver the streamed down single file app that’s having everything needed, automatically packaged and ready for production. Some may call this DevOps but I’m simply assuming it’s what need to be done when building stuff that aren’t made to be PoC.

Only one command and everything's ready to ship !

Final Result and Lessons Learned

The culmination of the GamesCenter project yielded a visually appealing and functional web application that addressed the shortcomings of traditional file browsing interfaces. Beyond its immediate utility, GamesCenter served as a learning experience, demonstrating the importance of creative problem-solving and the potential of innovative web development techniques.

The concept of a Web Portable Executable (WebPE) emerged as a promising idea, offering simplified deployment and enhanced accessibility for web applications.

Also the final UI was looking pretty good, re-using the visual UI I drafted a while ago for the where-to-be game shop :

The actual UI of GamesCenter

In conclusion, GamesCenter represents a significant step forward in the evolution of web-based file browsing, showcasing the power of ingenuity and technological innovation in enhancing user experiences on the web.

Also Read

  • Document Parsing

    PDF Parser

    A group project aimed at generating summary from PDF.
    I wrote the both the front-end in CEF and the back-end in Python using NLP toolkits.

    • CEF
    • NLP
    • PDF Summary
    • Python
  • SuperH Emulator

    RuK

    A simple yet powerful CPU emulator, capable of emulating a subset of SuperH instructions.
    It is built in Python with TKinter Canvas that provide a cool GUI.

    • SuperH Emulator
    • Python
    • TKinter
    • Canvas
    • CPU ISA
  • Messaging Broker

    O3one MQ

    Based on the lightweight ØMQ protocol, this tool was a hands-on message broker project.
    It integrates a Flask based REST API and a Bootstrap 4 front-end with Jinja2 templates. MMAP was the chosen way of transporting data.

    • ØMQ
    • Python
    • Flask
    • Bootstrap
    • MMAP

Want more ?

I've got a lot of other awesome projects

See them all !