Writing a game the hard way – from scratch using C – Part 1

Join me on a journey as I attempt to write a game for my Agon Light using nothing but raw C programming. In this first episode I figure out what kind of game to make, look at some shareware games of the past and get a basic game engine working, using nothing but C code – no external game engines or modern development tools.

I’m using my Agon Light proto game library which is available over on my Github repo. If you want to follow along, grab a copy!

The kind of game I want to make is similar to the games I used to play on my ZX Spectrum or Atari ST. A kind of game known as “shareware”. This was a way of releasing software back before it was easy to upload files to the Internet. A person releasing a piece of software as shareware would usually create a demo version. In this demo version would be a request to buy the full version of the game by mailing money to the developer, in exchange for receiving a copy of the full piece of software.

Some developers made this work very well and allowed them to create games that otherwise wouldn’t have been possible with a big commercial distributor. It also gave games a certain style as they weren’t restricted by having to be “marketable” to the mainstream game playing public.

Having played a few of the shareware games I remember from the past, I have come up with the following game design ideas. I want my game to

  • Be an arena shooter
  • Have multiple types of enemies that behave differently
  • Include some sort of problem solving to the gameplay
  • Maybe the player does something to open the exit of the level
  • This might involve manipulating the game world in some way

I don’t yet have much clue what the game will look like, or what the theme or story behind it will be. I’m open to suggestions though!

The next part that I need to do is get collision detection working. So far I have a very rudimentary “moving rectangles” prototype where I can play around with getting satisfying controls and game mechanics working.

One response to “Writing a game the hard way – from scratch using C – Part 1”

  1. Des Kitten avatar
    Des Kitten

    You want a setting? Here it is (much full for the retro game with limited resources). enjoy and use it free and anyhow as you want. I hope I help you:

    Cyberoseum

    low-concept: human-being lead to survive on Arena, to dive in ‘hell’ of challenge to arise from a common guy to a noble citizen of the Paradise Space Station

    Genre: arena shooter (retro)
    Setting: cybernetic future
    Time: 2327 AD
    Place: planet Cyberoseum, Paradise Space Station on an orbit of this planet

    Player: at 1st level player is a weak guy, then with getting skills, weapons and cybernetic augmentation player transformates to a pro gladiator capable to kill the Final Boss.
    Enemies: metallic orbs, and other variations of drones, mechanical spiders, movable turrets, cybernetic people.
    Bosses: Trio (three smart dromes: laser, rocket, gun), HEX (Human-ex Cyborg), Cyberatula (Mega Spider with little spider-form drones), ED-die (e.g. ED-209 form Robocop, rocket turrets and miniguns)…

    Player goals:
    Regular levels: Player needs to collect all pass-cards (red, blue, yellow) to move to the next one.
    Inbetween screen (shop): Player needs to spend cards to upgrade weapons, to increase abilities, to set augmentations.
    Boss-levels: killing the Boss, and get big green-colored pass-card.

    Features:
    – collectable pass-cards
    – excitable arena
    – bosses
    – various enemies
    – cybernetic gladiator aesthetics
    – retro gaming aesthetics
    – short time play sessions

    Similarities:
    – Vampire Survivor
    – Deep Rock Galactic Survival
    – ‘Love, Death & Robots’, s01ep01 “Sonnie’s Edge”

    Story:
    In the year of 2327, in the low-life cybernetic slums of the planet Cyberoseum people only dream of luxurious life on a Paradise Space Station. To be able to go there, people need to get a pass, which in obtained by only way… surviving on the Cyberoseum Arena.

    P.S. “I’m Russian, English isn’t my native language, so sorry for mistakes that are could be found…”