Creating a Simple Point-and-Click Adventure Game Using the SDL Framework - Introduction
Category: SDL Adventure Game
This is the first in a series of posts documenting the process of creating a simple point-and-click adventure game for macOS and iOS, written in C using the SDL framework.
Background
I attempted this project about five years ago without success. At that time, I used Swift and SpriteKit, but lacked a clear game design concept.
This time, I began with a game design in mind, significantly reduced the project’s scope, and managed to create a prototype game with a simple story and design.
Game Design
The game is intended for very young children (ages 2 to 4). It features a fox who wants to slide down a slide in a playground.
The game is divided into four scenes:
- Intro - Title screen and main menu
- Playground Entrance - The fox needs to find a way to enter the playground
- Playground - The fox must fix the slide with help from her friend, the squirrel
- Outro
Collection
The initial part of the series covers setting up the Xcode project to build a macOS app. I faced challenges due to using a relatively old operating system and Xcode versions, 11.7 and 12.4, respectively.
The subsequent posts focus on design choices, which were largely influenced by my inexperience with C.
In the final part, I create a new Xcode project to build an iOS app.
Posts in this collection:
- Basic SDL3 macOS Project Setup (First Attempt: Failure)
- Basic SDL2 macOS Project Setup (Second Attempt: Success)
- Basic Game Loop
- Loading Images Using SDL_image
- Music and Sound Effects Using SDL_mixer
- Mouse Events Handling
- Xcode Project Version Control Using Git
- C Code Organization, Naming Conventions, and Formatting
- Images and Sprites
- Animation Library, Scene Library, and Game Library
- Debug Overlay
- AI-Powered Code Review and The Fox Actor
- Parsing Animation Metadata
- Chain of Actions
- iOS Build (First Attempt: Failure)
- Music, Sound Effects, and Dialogs
- iOS Build (Second Attempt: Success)
- Device Independent Resolution
- Refresh Rate Independent Animations and Game-Speed-Dependent Updates
- Platform-Independent Asset References