James Hendershott

Case study

Retro Adventure Game

A Django‑powered web version of my 1980s‑style text adventure with database‑backed progress and session‑based gameplay.

PythonDjangoPostgreSQLInteractive Fiction

Overview

Retro Adventure Game is the evolved version of my earlier text adventure project, rebuilt as a Python/Django app with persistent game state. It captures the nostalgia of classic text adventures while adding web interactivity and a retro CRT‑style theme.

Role & Stack

Solo developer using Python, Django, and PostgreSQL.

Background

This project originated from the 1980 Style Adventure Game (https://github.com/James-Hendershott/1980_Style_Adventure-Game.git) and represents a complete refactoring and expansion of the original concept.

Problem

The original adventure game was a good start but needed:

  • Better code organization for maintainability
  • More sophisticated command parsing
  • Expanded gameplay and story elements
  • Improved state management
  • Enhanced player feedback

Solution

Rebuilt the game from the ground up with:

  • Django project structure (apps, models, views) + PostgreSQL persistence
  • Enhanced parser supporting more natural command patterns
  • Expanded world with multiple locations and puzzles
  • Session‑based progress tracking and save/load
  • Retro CRT visual style (templates/static files)
# Example: Django view handling a command (simplified)
def submit_command(request):
    cmd = request.POST.get("command", "").strip()
    game = get_game_for_session(request)
    result = game.process(cmd)  # updates state, returns messages
    return render(request, "game/play.html", {"game": game, "result": result})

Gameplay Features

  • Multiple interconnected locations to explore
  • Inventory system for collecting and using items
  • Puzzle-solving mechanics
  • Save/load game state
  • Contextual hints and help system

Results

  • More engaging player experience
  • Cleaner, maintainable codebase
  • Active development with regular improvements
  • Foundation for future adventure game projects

What I Learned

  • Moving from a CLI prototype to a web app with Django
  • Database‑backed state and session management
  • Parser design for natural language input
  • Game design principles (pacing, feedback, challenge)
  • Value of playtesting and user feedback

Future Plans

  • Additional chapters and story branches
  • More sophisticated AI for NPCs
  • Achievement system
  • Multiple ending paths