this almost triggered my PTSD! I used to work as a game programmer, and the first game I worked on started from scratch, starting from, int main() and a bunch of SDK documentation. It was back in 2007 on the Nintendo DS. I learned a lot, but I wouldn't do it again, never :D
@@jimbotron70 yep, I know right! Imagine 10-15 years earlier with only an assembler and a book with registers addresses and not much more. I do a bit of C64 programming in assembly in my spare time and it’s always a blast!
The bedroom coders of the 80s and 90s were the original members of the indie gaming scene. They were the pioneers and following in their footsteps is a great honour.
We were 11 years old and wanted our games to be in the computer magazine lol. Using an assembler we made by inputing pokes in basic from a magazine listing. :) those were the days. And doing our own sprites on paper and converting them to code 😂
being as old as I am, i remember having to go to the library and find books on coding tricks and things when I was like 10. When I was a wee lad, probably about the same age, I coded a rudimentary pac-man clone in C++ and every step strengthened my skill as a coder because I had to actually work out every bit myself, for the most part. Nowadays I've bumped into quite a few gamedev folks who simply cannot work out a problem if there's not a tutorial on youtube to help out. So I look at my hardcore no-internet up-bringing as a blessing. That said, I do love having an actual game engine built by others these days.
He could have had a C compiler in the 80s but no JSON, no Python, no ChatGPT, no Stack Overflow. Maybe Writing a game the medium way is more fitting? Just kidding! LOL
I had a game like that for my ST. It was GEM based and I remember you somehow built the robots using some sort of logic symbols and set them loose in a little arena. I "registered" my copy of Llamatron about 20 years after by buying Jeff Minter a pint. As a kid my parents would never let me post money randomly to people.
Randomly came across this video, and hope it's not too late; but some game inspiration: game title - Kernel Sprite, game idea - Kernel Sprite is a binary soldier who wants to go further. At the start it's a bit. But this sprite fights for every little bit, building itself, well - bit by bit. Wants to make it to the interface. To becomes a complete retro graphic. Along the way fighting resistors, and using some simple logic to make it through the gates.
Your mention of Crystal Quest led me down a nostalgic trip to discover a game I used to play as a kid but could not remember the name of called XQuest.
This is very a very cool idea for a youtube series and I am sure I will follow the updates, as someone who is currently making a small shoot em up game in my spare time (though not in C) I find this very interesting and entertaining. Nice one
I have two ideas for traps and enemies. The first idea is shadowy enemies that are initially invincible until they come into contact with a light source, after which they become vulnerable. Maybe they could be slower than other enemies on screen, so that you have to lure them into a light source while evading other enemies. The second idea is a weapon that fires two bolts per round, where the bolts are connected to each other by a wire. You could create trip wires that could electrocute enemies, or possibly create gates to funnel enemies through. If the wire is a set length, your movement could be restricted after firing the initial bolt, until you fire the second bolt. You could also get upgrades for longer wire lengths and an increased number of bolts. Okay, I just thought of one more idea: you could have traps where a particular status or quality is applied to an enemy that moves into that space, and it could also apply to the player if they move into that space, by mistake or choice. For example, an effect that modulates movement speed, size, elemental vulnerabilities, etc.
What about something inspired by 'The Running Man'? You could have tricks and traps in each arena (spikes, fire, trapdoors) with a unique boss and minions for each themed arena. It would fit with the top-down/sci-fi arena shooter theme. You could maybe take some hints from roguelikes too - random item drops, shops, secret rooms etc.
Errm... yeah 😆 Although actually I've only installed two. One for Aseprite, the other for something that tried to fill my Steam library with hundreds of shareware-quality software.
Sir, you really did it the hard way and the custom sprite type that just took my breath, I mean what are you even doing, well all the respect as programmer.
I was thinking about the sprite naming conventions. Perhaps something to indicate protagonist, antagonist, effect, pickup, collidable object and non-collidable object/effect. Maybe prosprite, antasprite, effingsprite, pickasprite, smackasprite and effingghostsprite. I love the video and look forward to future videos in a series. I respect programming to constraints, and it sounds like a fun puzzle to work on.
Many of us back then could not afford a fancy compiler, so you learn assembler that would have been z80, 6502, 8088 for most but the commodore had the most to offer bang for the buck idea.
Super cool video 😁 , i'll check out that sprite editor for any future game ideas I have and I look forward to the next video. Maybe your game could be inspired by aliens vs predator and your character is stuck on a spaceship fighting off enemies or maybe it's set in a war zone and your character is behind enemy lines or something
I like this so far! Very relaxed, with some novel ideas, but most concepts should be familiar to viewers with prior programming and game dev knowledge. The music in the background makes the video feel more cozy, and I appreciate your sincerity. I enjoy seeing how you program in C as well. I personally prefer using arrays of function pointers rather than structs with function pointers inside them, and I nowadays I use CMake instead of Make for my C projects. However I like seeing the way you do things. Also! I’d recommend looking into the C “X macro” idiom. It’s a pattern for programming in C with macros that makes it very easy to group related data and functionality together at compile time. You may find it helpful for defining your game states. Looking forward to the rest
Great video! Since my first language was C I find this strangely nostalgic and slightly trauma inducing. Also GAME IDEA: the player is a lone triangle fighting for his freedom in the Shape Pits full of square, pentagonal and hexagonal gladiators on Planet Geom.
In the 80s I wrote games in pure assembly and then in the early 90 I used c for the game logic but I wrote all my graphics lib code in 8086……way tougher than modern game coding but by god the code was optimised and ripped along….
hello sir, thank you for offering that beautiful framework/library thing your showing off in the video.. i LOVE C. its the language i learned first (that made sense to me) and is when 'programming' clicked for me. so i'm very glad you threw it up on git.. i'm about to clone it and see if i can take it apart line by line until i understand it. i'll even download Kate because i've been searching for something to replace Visual Studio 2022. i just love the debugger and have been trying to tear myself away. bless you and your work.
I can't wait for an update on this, awesome job man❤️ I'm personally a huge fan of the diablo series, and it's dark Gothic dungeon astethic, it could be a great inspiration for the art of the game!
I often couldn't even find a book, but I met a few programmers through computer clubs where 99% of the members were just copying games, but the other 1% had useful info to share with like-minded individuals.
I remember the computer (cough...copy) clubs back in the day. I also remember the game rental scene where an azimuth screw-modified tape deck could be used to copy software. As for programming, with such an extreme lack of documentation and examples, it was critical thought/innovation that ruled in those days...sadly today, almost 100% offloaded onto 'others'.
I learnt from an early age how important the tech you choose is. I was 12 living in South Africa and got addicted to making games on my Commodore 64, the year was 1987 and with only a couple of books from my local library I was able to build a bunch of terrible games. I just couldn't fathom how the developers at companies were building such cool games for the system. No matter how hard I tried I couldn't get close.... Remember this was a time of no Internet where I was... Years later i found out they were all using assembly.... I was using BASIC.... Who knew..... Still... Such good times.. 😂😂😂
I mostly play older games. I just like them better. I'm not that old, i'm only 42 but i just like the games i grew up with better. And now i can emulate the games i didn't have access to during that era, i like the whole rom hacking scene too.
Fun stuff! Next to my game projects I write in 6502/10 assembly, I tried to write a modern game in C# using OpenGL. As displaying rectangular images isn’t too hard (you just need to connect to triangles 😅), I got stuck on trying to display TTF fonts LOL 😅. Your game ideation process triggered one game for me: Anarchy on Commodore 64. I’ve found this game really fun to play and addictive. Good luck with the project!
10:15 - "This is what all makes it work. It's awfull." Truer words have never been said with the perfect mix of disdain and acceptance. Take my like, guv.
Love how things were so different back then that devs had to literally dox themselves in order to get people to pay them for their games.... Although it's not like it's any easier to make money off of your games nowdays, in fact, I don't think I ever made anything that comes close to being comercially viable...
Interesting project, eagerly waiting to see something run in HW also.. btw DeltaTime in physics is used to make the game run in same speed even when using faster or slower processors. Old pc's had turbo button that put processor to a standard speed, so they ran ok when code was designed for old slow hw. .
Maybe a Bomb Jack style game? That would be interesting! Had numerous enemies, and our hero! I suppose it depends how complicated you want to make it and how in-depth you want to go with it! If you prefer a shooter, maybe an Ikari Warriors style game? - you verus bad guys, shooting your way to the clear the level.
@ShR33k Yh I was thinking of an Ikari Warriors style game but as a history buff who watches a lot of ww2 documentaries I could come up with a lot of ideas for a game set in a war zone that I've never seen explored in commercially released games before like fighting behind enemy lines where you have to sabotage enemy supply lines, action adventure/RPG elements(I'm not talking up upgrading skill sets) where you occupy a town/city and you have to ask civilians and non combatants for help in order to advance , or the game progressively getting harder as you lose control of territory at the hands of the enemy
As a former ocean software developer, let me tell you something. we wrote in 6502 and Z80 assembly not C. Fun trip down memory lane though otherwise :)
@@techsalesandmore3649 yeah I know, but if you could have, you would wouldn't you? I want to make a game, not lose my mind trying to hand code everything from nothing. At least I'm not using C++ or JavaScript 😉 Out of interest, what did you work on? Think most of thr Ocean games I played were on the speccy.
@@ncot_tech Worked on behind the scenes sort of stuff like faster sprite routines, line draws and rectangle fills etc. Most of my work was using 6502. And yes, given the immense amount of spare cpu power nowadays, I do don't blame you using C. But in the day, maybe not. We removed every single T state we could remove from loops etc. So hand optimised assembly due o weak cpus of the time. We even did crazy stuff like alter the address in absolute instructions in realtime, effectively giving you 16 bit indexed addressing in 6502. Heady days, damn I wish it was 1980 again! Best of luck with your project. Will defo keep watching
Yeah interesting...There's a bit of soft "history rewriting" on TH-cam that games were programmed in high-level languages in the 80s & 90s when, in fact it was targeted Assembly extensively industry standard right up until the PlayStation 1 generation really. I was a games dev circa 2000 in the UK and although the luxury of C++ was fairly standard inline Assembly was still common. I've watched videos on Americans that think Chris Sawyer wrote Roller Coaster tycoon in a crazy one off vacuum purely to make sure it ran on as many PC architecture as possible, in fact he wrote everything in assembly because it was industry standard and pretty much every game previously published had been written in assembler, people contracted him to port assembly from other systems to x86. In fact, when C & C++ were standard, it was to make reusable code to target all kinds of architecture (with some modifications) assembly was about optimisation not portability.
I remember those days with great fondness as well and yes, C compilers were very basic/infant back then, producing code that was very frequently speed and size very, very sub optimal compared to that from a hand written assembly expert. Slow CPU's and limited memory meant that all the 80's (and before) and most of the 90's games were written in 100% assembly (especially the 80's).
was hoping for such content for years as I loved games from the late 80s and early 90s but most content is about including APIs like 3dfx/DirectX etc probably most used Assembly straight but anyway :D I remember putting cash in the mail and hope getting a 3.5 inch disk with the correct game and as we didn't care about security we just installed whatever was on that.
Thanks for sharing! Would be fun to see a physics-driven platformer with a unique movement mechanic, like Celeste or Super Meat Boy. Would push you to flesh out the physics engine more than than an RPG or something.
It's interesting that there are so many people making Commodore 64, ZX Spectrum, etc. games and very few making Nintendo Entertainment System or Sega Master System games. I think the turn from the 1980s to 1990s was when video games went from a hobbyist activity to a more business/consumer relationship.
"I think the turn from the 1980s to 1990s was when video games went from a hobbyist activity to a more business/consumer relationship." - Absolutely! ...once the 'big corps' sniffed the huge profit potential in games. Game developer houses were established waay before this though (Melbourne House, Gremlin, Ocean etc etc).
I have been favourable to Geany on Linux. Still use Dev-C++ (Embarcadero maintained) on Windows and found FED (Folding text EDitor best for DOS. > 13:01 I paused the video to read the code and naturally scrolled down for more lines X-) (3 times lol) > I have been working off of the Allegro5 Vivace tutor template which is quite similar. Logging; use error logging file(fprintf(FileHandle, ...)), -Enable the console screen and use printf() or fprintf(stderr, or stdout) while debugging, send to separate graphic pop up msgbox (if available). *Looks pretty kool,* A few of my first attempts had everything in main() which turned ugly rather fast lol FreeDOS, Windows, and Ubuntu at the moment :) > Why do Java programmers wear glasses? Because they can't C.
If I were building this game I would consider building asteroids, robotron, or space invaders. If I were really ambitious I would try to recreate Castle Wolfenstein. Thanks for this video!
Thank you for these videos. Love the channel. Game idea. Protect player 2 from being shot by player 3. Celebrity from paparazzi or crazy fan. Political leader from a shooter? Perhaps player 2 needs to transition the screen or complete a task in a time limit...might be interesting if player 2 could also be human as an option. Player 3 should always be AI.
Llamatron itself was not an original, it was a ripoff of Williams 1982 arcade game Robotron 2084, itself heavily based on Stern's 1980 arcade game Berzerk.
That sprite editor you were using .. Aseprite ... I believe it's pronounced Ace-prite (or maybe A-sprite?)... Either way it was originally the Allegro Sprite Editor ... a sprite editor used by lots of people using the Allegro game programming library back in the day.
I'll be following this with great interest because I'm looking for tips on how to turn a half-finished game into a finished game, that's the part I always fail at. Your title grabbed me. Until recently I would have said "what other way is there to make a game??" but having started out making games on ZX81 and Vic (and still having no desire to do anything in modern 3d) It made my head explode when I watched a video recently where a 'game dev' started making a game. First question "what engine should I use?" (the first mind blower) and then "this game engine requires me to write some code, which I have no experience of" (total mind blower). I kinda get that modern 3d rendering is insane and not something anyone wants to write from scratch, but the fact that games are now written using drop-down menus is something I still can't really get my head around.
As someone with a lot of assembly programming experience on the C64 and Amiga waay back then, the lack of actual 'programming requirement' today stuns me as well. with the most difficult part (writing the game engine) side-stepped. As for getting your own game finished, please do continue with it. Make use of all the instantly available documentation and examples available, and do ask for help when needed (stackoverflow etc)...but do also try to push yourself into solving as many problems yourself as possible. Crucially, do things 'your own way' - there's lots of ways to achieve the same thing in programming.
I miss those old days, working with Turbo C, with inline assembly to access the screen directly in mode 13, at 0xA000 for speed. That my friend, is from scratch in my opinion. Still good video
@laughingvampire7555 I think the only way it could count as retro is it looking like a 32bit 2d game from the ps1/sega saturn , I think those were done in C. Interestingly enough as an English speaker I haven't been able to find any books or programming manuals for assembly language for the hitachi SH architecture family of CPUs used in the 32x , saturn and dreamcast
@@cryptocsguy9282 C compilers waay back then were basic...very basic i.e. they produced machine code that was very frequently not as fast or small as that from a human assembly expert, and speed and size were 100% crucial back then with slow CPU's and low memory. This means that game devs back then absolutely had to inline a great deal of assembly - much, much more than you'd think.
Story: You've woken up in a cybernetics testing facility and have been been augmented with a gun arm. Your memory is coming back to you slowly as you fight your way out of the heavily armed facility, room by room. You might even pick up some more enhancements on the way out. Title: Cybershot: Lost Recall The title I think is cheesy but fitting. We can workshop it. Alternative title: Subject Seven Don't ask why, just kinda sounds cool, it's a shot in the dark really. ... :D Alternative alternative title: A shot in the dark.
i think this is my 6th rewatch trying to figure this out hahah [edit]: i'm really close to having {make} do cool magic for me also [edit2]: my emulator runs my .bin files now but i dont have any graphics with it.. been doing... this...all..dayy... i just wannt to start using C already!
I did have an idea for the issue that you have with getting status messages on the screen is to use your "screen state machine" to define an additional screen to implement a console/terminal screen with a different higher resolution and switch between it and the other screen using a key. Then you could store the log messages into some kind of buffer and display them on this other screen and switch between this screen and the game. Plus if you add an command line, you can modify the game as it runs for debugging. I know it sounds a bit like extra work but at least it might help if you write other games using the Agon Light. As for a design, i did wonder if something like Ancipital (opening doors by collecting stuffor via shooting stuff) or Berzerk (run around a large maze) might be a good base game to add some mechanics to. And as for a name..what about "CuppaQuest" in homage to the previous game that were inspiration coupled with the Nice Cup of Tea branding :)
I always liked the games where you need to act frantically and efficiently to stay on top of the objective. Like Tapper!, for example, where you needed to fill up root beer cups to a steadily increasing stream of customers.
C was almost never used in the 80s, 99% of the time assembly language as the raw that was needed to run on 8bit hardware. I'm saying that from someone who was an in-house game developer who worked during the 80s.
Yeah I know. Imagine getting a C compiler running on an 80s machine. A ZX Spectrum compiling and linking from/to tape 😆 I want to build something and not take six months to do it. It was fun writing assembly a while back, but I see why it's so efficient. Having to hand craft basic things like multiplication and division and track register contents makes you try to write as little code as possible to save the headaches 😉
Some ideas: title: Retro Robot Rewind. Theme: the character has been caught in a time warp that takes them back to the 80's and they have to battle their way out of the graveyard of unmade games (ie retro ideas that never got made because technology progressed instead)
Does that quantize really quantize to 64 colours? The integer divide-then-multiply is right, sure, but 85 is very sus. 255/85=3, which would give 27 colours total or 3 per channel, not 4. You're trying to get 2 bits per channel right? So you probably want "p // 64 * 85". (I was going to recommend a longer expression but then I tested it and realized chatgpt had *almost* got it right. So very close! The general form for quantizing integer x from K to Q, K-1=n(Q-1) where n is integer > 0, is "x // (K//Q) * ((K - 1) // (Q - 1))" and in this case K=256 and Q=4 because it's per channel. Note this is kind of a special case and there's a more complex general form when K-1 and Q-1 aren't tidy multiples...)
How about a 3D (wireframe) shooter. Using modern WASD and mouse (if it can use a mouse) but represented with old school 3D graphics (wireframe meshes).
I laughed at your expression of hot garbage. That would make a funny name for the game. Enemies bringing steaming piles of trash to litter. Keep your territory clean by shooting enemies or the piles of hot garbage with fun little explosions. I nominate the name “Hot Garbage”. I can’t wait to see how it all comes along.
Me rubbing sticks together in a game engine, grunting, gesturing, wondering why scary sounds and light come from the sky. This guy writes his own game engine in C and decides to write a game with it like it’s 1989. Me Grunk like. Grunk subscribe.
That's all great, but how are you actually getting pixels on the screen? 3D graphics APIs today don't let you just index from a base memory address to set a pixel (ie a frame buffer). Have you created your own abstraction simulating frame buffers on top of opengl / vulkan?
@@stephenmackenzie9016 It's still alive. Although the Amiga and ST demoscene and early DOS was the best. They seem to have moved onto either making old hardware do actual magic, or have figured out how to cram raytraced animations into 4k that runs on a GPU. I think there's a demoscene for microcontrollers too.
this almost triggered my PTSD! I used to work as a game programmer, and the first game I worked on started from scratch, starting from, int main() and a bunch of SDK documentation. It was back in 2007 on the Nintendo DS. I learned a lot, but I wouldn't do it again, never :D
And those were easy times with SDKs...
@@jimbotron70 yep, I know right! Imagine 10-15 years earlier with only an assembler and a book with registers addresses and not much more. I do a bit of C64 programming in assembly in my spare time and it’s always a blast!
Nowadays there are entire homebrew game engines and SDKs for the DS
@@subtledemisefox and they are probably better than the old official sdk of 15 years ago 🤣
Makes me think of Roller Coaster Tycoon. Entirely made in ASM.
The bedroom coders of the 80s and 90s were the original members of the indie gaming scene. They were the pioneers and following in their footsteps is a great honour.
In the 80s almost every coder was a "bedroom" coder.
I disagree. They were the original members of the Game Scene. Without them a scene wouldn't exist.
Ok
@@merial9I would say the original coders of the game scene were people who were working on side projects at work.
We were 11 years old and wanted our games to be in the computer magazine lol. Using an assembler we made by inputing pokes in basic from a magazine listing. :) those were the days. And doing our own sprites on paper and converting them to code 😂
being as old as I am, i remember having to go to the library and find books on coding tricks and things when I was like 10. When I was a wee lad, probably about the same age, I coded a rudimentary pac-man clone in C++ and every step strengthened my skill as a coder because I had to actually work out every bit myself, for the most part. Nowadays I've bumped into quite a few gamedev folks who simply cannot work out a problem if there's not a tutorial on youtube to help out. So I look at my hardcore no-internet up-bringing as a blessing. That said, I do love having an actual game engine built by others these days.
A C compiler, in the '80s? Fancy!!
@@andrewdunbar828 mild modern conveniences are being taken to preserve my sanity.
Although it is C99, so I guess a 25 year old language is retro? 🤔
pardon my naivete, but how was C compiled in the '80s if not with a compiler?
He could have had a C compiler in the 80s but no JSON, no Python, no ChatGPT, no Stack Overflow. Maybe Writing a game the medium way is more fitting? Just kidding! LOL
Every Unix had one.
@@adib68 Top '80s gaming platform.
you know you want to watch it when even the algorithm recommends this, even though you are trying to focus on android dev.
My exact situation. Started kotlin this week.
I remember stuffing a fiver into an envelope to purchase a game where you programmed robots to fight each other. All very meta for the 90s!
I had a game like that for my ST. It was GEM based and I remember you somehow built the robots using some sort of logic symbols and set them loose in a little arena.
I "registered" my copy of Llamatron about 20 years after by buying Jeff Minter a pint. As a kid my parents would never let me post money randomly to people.
I loved that game
90s? You mean early 80s.
Was that crobots ?
I remember a game like that! Begging my mom for $5 so I could “learn to program robots”
Randomly came across this video, and hope it's not too late; but some game inspiration:
game title - Kernel Sprite,
game idea - Kernel Sprite is a binary soldier who wants to go further. At the start it's a bit. But this sprite fights for every little bit, building itself, well - bit by bit. Wants to make it to the interface. To becomes a complete retro graphic. Along the way fighting resistors, and using some simple logic to make it through the gates.
Great vid, one idea i got is a bunch of penguins with uzis fighting each other to control the antarctic as a story for the game
"These ideas were nicked from (sorry...I mean 'inspired by"...)"
Love it! 🤣 Anyone with that level of honesty is OK in my book.
Your mention of Crystal Quest led me down a nostalgic trip to discover a game I used to play as a kid but could not remember the name of called XQuest.
This is very a very cool idea for a youtube series and I am sure I will follow the updates, as someone who is currently making a small shoot em up game in my spare time (though not in C) I find this very interesting and entertaining. Nice one
@callum_monk SAME to me finding it interesting and working on a small shoot em up game but in 6502 assembly language
Seeing the llamatron splash screen triggered some locked childhood memory lmao
Tommy Vercetti teaching game dev in a beach shirt 😎
I have two ideas for traps and enemies. The first idea is shadowy enemies that are initially invincible until they come into contact with a light source, after which they become vulnerable. Maybe they could be slower than other enemies on screen, so that you have to lure them into a light source while evading other enemies. The second idea is a weapon that fires two bolts per round, where the bolts are connected to each other by a wire. You could create trip wires that could electrocute enemies, or possibly create gates to funnel enemies through. If the wire is a set length, your movement could be restricted after firing the initial bolt, until you fire the second bolt. You could also get upgrades for longer wire lengths and an increased number of bolts. Okay, I just thought of one more idea: you could have traps where a particular status or quality is applied to an enemy that moves into that space, and it could also apply to the player if they move into that space, by mistake or choice. For example, an effect that modulates movement speed, size, elemental vulnerabilities, etc.
What about something inspired by 'The Running Man'? You could have tricks and traps in each arena (spikes, fire, trapdoors) with a unique boss and minions for each themed arena. It would fit with the top-down/sci-fi arena shooter theme.
You could maybe take some hints from roguelikes too - random item drops, shops, secret rooms etc.
That reminds me of Smash TV, which was also pretty fun to play. Cool ideas.
That's a Steam library that's been subject to a lot of Humble Bundles!
Errm... yeah 😆
Although actually I've only installed two. One for Aseprite, the other for something that tried to fill my Steam library with hundreds of shareware-quality software.
Sir, you really did it the hard way and the custom sprite type that just took my breath, I mean what are you even doing, well all the respect as programmer.
I absolutely love this kind of content 🙂 Thank you, and good luck with the project!
I was thinking about the sprite naming conventions. Perhaps something to indicate protagonist, antagonist, effect, pickup, collidable object and non-collidable object/effect. Maybe prosprite, antasprite, effingsprite, pickasprite, smackasprite and effingghostsprite.
I love the video and look forward to future videos in a series. I respect programming to constraints, and it sounds like a fun puzzle to work on.
Many of us back then could not afford a fancy compiler, so you learn assembler that would have been z80, 6502, 8088 for most but the commodore had the most to offer bang for the buck idea.
Props for using Kate!!! A wonderful text editor!!!!!!
Personally I code in nano. Kate is too "new school" for me. I can recall the days when I coded in ed.
Ed now has a new meaning
Ed , fancy - I could only afford Edln.
Thanks for this video. I was thinking back to the first game I programmed using C+. Now I get to watch your video on that!!
Totally here for this. I have the same dream.
Super cool video 😁 , i'll check out that sprite editor for any future game ideas I have and I look forward to the next video.
Maybe your game could be inspired by aliens vs predator and your character is stuck on a spaceship fighting off enemies or maybe it's set in a war zone and your character is behind enemy lines or something
There's a free fork called Libresprite.
@@evertonshorts9376 Oh if it's free that's even cooler , I guess I'll go with that one instead 😃, save £20
I like this so far! Very relaxed, with some novel ideas, but most concepts should be familiar to viewers with prior programming and game dev knowledge. The music in the background makes the video feel more cozy, and I appreciate your sincerity.
I enjoy seeing how you program in C as well. I personally prefer using arrays of function pointers rather than structs with function pointers inside them, and I nowadays I use CMake instead of Make for my C projects. However I like seeing the way you do things.
Also! I’d recommend looking into the C “X macro” idiom. It’s a pattern for programming in C with macros that makes it very easy to group related data and functionality together at compile time. You may find it helpful for defining your game states.
Looking forward to the rest
I saw Factorio in your steam library, truly a man of culture. The factory must grow.
Great video! Since my first language was C I find this strangely nostalgic and slightly trauma inducing. Also GAME IDEA: the player is a lone triangle fighting for his freedom in the Shape Pits full of square, pentagonal and hexagonal gladiators on Planet Geom.
In the 80s I wrote games in pure assembly and then in the early 90 I used c for the game logic but I wrote all my graphics lib code in 8086……way tougher than modern game coding but by god the code was optimised and ripped along….
I fell here out of nowhere, and i like this.
hello sir, thank you for offering that beautiful framework/library thing your showing off in the video.. i LOVE C. its the language i learned first (that made sense to me) and is when 'programming' clicked for me. so i'm very glad you threw it up on git.. i'm about to clone it and see if i can take it apart line by line until i understand it. i'll even download Kate because i've been searching for something to replace Visual Studio 2022. i just love the debugger and have been trying to tear myself away.
bless you and your work.
This is interesting. I'll subscribe and wait for part 2.
I can't wait for an update on this, awesome job man❤️ I'm personally a huge fan of the diablo series, and it's dark Gothic dungeon astethic, it could be a great inspiration for the art of the game!
I often couldn't even find a book, but I met a few programmers through computer clubs where 99% of the members were just copying games, but the other 1% had useful info to share with like-minded individuals.
I remember the computer (cough...copy) clubs back in the day. I also remember the game rental scene where an azimuth screw-modified tape deck could be used to copy software. As for programming, with such an extreme lack of documentation and examples, it was critical thought/innovation that ruled in those days...sadly today, almost 100% offloaded onto 'others'.
I learnt from an early age how important the tech you choose is. I was 12 living in South Africa and got addicted to making games on my Commodore 64, the year was 1987 and with only a couple of books from my local library I was able to build a bunch of terrible games. I just couldn't fathom how the developers at companies were building such cool games for the system. No matter how hard I tried I couldn't get close.... Remember this was a time of no Internet where I was... Years later i found out they were all using assembly.... I was using BASIC.... Who knew..... Still... Such good times.. 😂😂😂
I mostly play older games. I just like them better. I'm not that old, i'm only 42 but i just like the games i grew up with better. And now i can emulate the games i didn't have access to during that era, i like the whole rom hacking scene too.
A lot of great games were written in assembly, especially on 6502. That was pretty hard.
Fun stuff! Next to my game projects I write in 6502/10 assembly, I tried to write a modern game in C# using OpenGL. As displaying rectangular images isn’t too hard (you just need to connect to triangles 😅), I got stuck on trying to display TTF fonts LOL 😅. Your game ideation process triggered one game for me: Anarchy on Commodore 64. I’ve found this game really fun to play and addictive. Good luck with the project!
10:15 - "This is what all makes it work. It's awfull." Truer words have never been said with the perfect mix of disdain and acceptance. Take my like, guv.
Thanks for this series. It’s neat getting insights into your process. 👏
Noticed the STOS book on your shelf- that sprite editor is very reminiscent of those days!
Love how things were so different back then that devs had to literally dox themselves in order to get people to pay them for their games....
Although it's not like it's any easier to make money off of your games nowdays, in fact, I don't think I ever made anything that comes close to being comercially viable...
I would love to see it actually being prpgrammed, line by line almost, not just explanation of part of the code, with some concepts, would be great.
Interesting project, eagerly waiting to see something run in HW also.. btw DeltaTime in physics is used to make the game run in same speed even when using faster or slower processors. Old pc's had turbo button that put processor to a standard speed, so they ran ok when code was designed for old slow hw. .
Maybe a Bomb Jack style game? That would be interesting! Had numerous enemies, and our hero! I suppose it depends how complicated you want to make it and how in-depth you want to go with it! If you prefer a shooter, maybe an Ikari Warriors style game? - you verus bad guys, shooting your way to the clear the level.
@ShR33k Yh I was thinking of an Ikari Warriors style game but as a history buff who watches a lot of ww2 documentaries I could come up with a lot of ideas for a game set in a war zone that I've never seen explored in commercially released games before like fighting behind enemy lines where you have to sabotage enemy supply lines, action adventure/RPG elements(I'm not talking up upgrading skill sets) where you occupy a town/city and you have to ask civilians and non combatants for help in order to advance , or the game progressively getting harder as you lose control of territory at the hands of the enemy
It's 3.40 AM and here i am watching a man making retro game from scratch, i am not even programmer the last time i touched code are HTML
Nice! Will definitely follow this series, keep it up!
You had me at llamatron! Jeff winters… gameplay… a toilet bouncing about throwing bog rolls at you…
The obligatory pedant here: the player is the one watching the screen, the one inside is the character.
As a former ocean software developer, let me tell you something. we wrote in 6502 and Z80 assembly not C. Fun trip down memory lane though otherwise :)
@@techsalesandmore3649 yeah I know, but if you could have, you would wouldn't you? I want to make a game, not lose my mind trying to hand code everything from nothing.
At least I'm not using C++ or JavaScript 😉
Out of interest, what did you work on? Think most of thr Ocean games I played were on the speccy.
@@ncot_tech Worked on behind the scenes sort of stuff like faster sprite routines, line draws and rectangle fills etc. Most of my work was using 6502.
And yes, given the immense amount of spare cpu power nowadays, I do don't blame you using C. But in the day, maybe not. We removed every single T state we could remove from loops etc. So hand optimised assembly due o weak cpus of the time. We even did crazy stuff like alter the address in absolute instructions in realtime, effectively giving you 16 bit indexed addressing in 6502. Heady days, damn I wish it was 1980 again! Best of luck with your project. Will defo keep watching
Yeah interesting...There's a bit of soft "history rewriting" on TH-cam that games were programmed in high-level languages in the 80s & 90s when, in fact it was targeted Assembly extensively industry standard right up until the PlayStation 1 generation really.
I was a games dev circa 2000 in the UK and although the luxury of C++ was fairly standard inline Assembly was still common. I've watched videos on Americans that think Chris Sawyer wrote Roller Coaster tycoon in a crazy one off vacuum purely to make sure it ran on as many PC architecture as possible, in fact he wrote everything in assembly because it was industry standard and pretty much every game previously published had been written in assembler, people contracted him to port assembly from other systems to x86. In fact, when C & C++ were standard, it was to make reusable code to target all kinds of architecture (with some modifications) assembly was about optimisation not portability.
I remember those days with great fondness as well and yes, C compilers were very basic/infant back then, producing code that was very frequently speed and size very, very sub optimal compared to that from a hand written assembly expert. Slow CPU's and limited memory meant that all the 80's (and before) and most of the 90's games were written in 100% assembly (especially the 80's).
The classic "hello world" game is Pong. Yes, very simple game but surprisingly tricky if you start programming a game for the first time.
...and infinitely more tricky if you did this back in the day with everything 'hand writted'...minimal libs etc etc.
this is nice man , i'm gonna enjoy this series
was hoping for such content for years as I loved games from the late 80s and early 90s but most content is about including APIs like 3dfx/DirectX etc
probably most used Assembly straight but anyway :D
I remember putting cash in the mail and hope getting a 3.5 inch disk with the correct game and as we didn't care about security we just installed whatever was on that.
awesome classic C, great job! I love this video
Sounds great. I will tell my students that learn C about your channel.
Thanks for sharing! Would be fun to see a physics-driven platformer with a unique movement mechanic, like Celeste or Super Meat Boy. Would push you to flesh out the physics engine more than than an RPG or something.
It's interesting that there are so many people making Commodore 64, ZX Spectrum, etc. games and very few making Nintendo Entertainment System or Sega Master System games. I think the turn from the 1980s to 1990s was when video games went from a hobbyist activity to a more business/consumer relationship.
"I think the turn from the 1980s to 1990s was when video games went from a hobbyist activity to a more business/consumer relationship."
- Absolutely! ...once the 'big corps' sniffed the huge profit potential in games. Game developer houses were established waay before this though (Melbourne House, Gremlin, Ocean etc etc).
I have been favourable to Geany on Linux. Still use Dev-C++ (Embarcadero maintained) on Windows and found FED (Folding text EDitor best for DOS.
>
13:01 I paused the video to read the code and naturally scrolled down for more lines X-) (3 times lol)
>
I have been working off of the Allegro5 Vivace tutor template which is quite similar.
Logging; use error logging file(fprintf(FileHandle, ...)), -Enable the console screen and use printf() or fprintf(stderr, or stdout) while debugging, send to separate graphic pop up msgbox (if available).
*Looks pretty kool,*
A few of my first attempts had everything in main() which turned ugly rather fast lol
FreeDOS, Windows, and Ubuntu at the moment :)
>
Why do Java programmers wear glasses? Because they can't C.
If I were building this game I would consider building asteroids, robotron, or space invaders. If I were really ambitious I would try to recreate Castle Wolfenstein. Thanks for this video!
oh my god a TryHard on game Development, master of masters... beyond human comprehension.
@@hyperiontitan463 oh my god a sarcastic comment on a TH-cam video.
Thanks for feeding the algorithm 😁
Alien plant ennemies, puzzles in a weird jungle. Thanks for a very nice video!
Theres a book that has like 100 games to code in basic. A good game to start with in c/c++ is snake.
Love it! A few minutes in, I was thinking "Yep, I'll join you coding!" ;)
What is the background music?
Thank you for these videos. Love the channel. Game idea. Protect player 2 from being shot by player 3. Celebrity from paparazzi or crazy fan. Political leader from a shooter? Perhaps player 2 needs to transition the screen or complete a task in a time limit...might be interesting if player 2 could also be human as an option. Player 3 should always be AI.
27:15 hahaha the subtle shade throwing at stackoverflow, so true man
Wish you as much success with this series as Casey Muraturi had with Handmade Hero. However, scale your game a way that allows for getting finished. 😅
Llamatron itself was not an original, it was a ripoff of Williams 1982 arcade game Robotron 2084, itself heavily based on Stern's 1980 arcade game Berzerk.
12:42 you made this in 10 minutes?? that would take me 10 years!!! 😆 Thanks for your hard work!
That sprite editor you were using .. Aseprite ... I believe it's pronounced Ace-prite (or maybe A-sprite?)... Either way it was originally the Allegro Sprite Editor ... a sprite editor used by lots of people using the Allegro game programming library back in the day.
I'll be following this with great interest because I'm looking for tips on how to turn a half-finished game into a finished game, that's the part I always fail at. Your title grabbed me. Until recently I would have said "what other way is there to make a game??" but having started out making games on ZX81 and Vic (and still having no desire to do anything in modern 3d) It made my head explode when I watched a video recently where a 'game dev' started making a game. First question "what engine should I use?" (the first mind blower) and then "this game engine requires me to write some code, which I have no experience of" (total mind blower). I kinda get that modern 3d rendering is insane and not something anyone wants to write from scratch, but the fact that games are now written using drop-down menus is something I still can't really get my head around.
As someone with a lot of assembly programming experience on the C64 and Amiga waay back then, the lack of actual 'programming requirement' today stuns me as well. with the most difficult part (writing the game engine) side-stepped. As for getting your own game finished, please do continue with it. Make use of all the instantly available documentation and examples available, and do ask for help when needed (stackoverflow etc)...but do also try to push yourself into solving as many problems yourself as possible. Crucially, do things 'your own way' - there's lots of ways to achieve the same thing in programming.
I miss those old days, working with Turbo C, with inline assembly to access the screen directly in mode 13, at 0xA000 for speed.
That my friend, is from scratch in my opinion. Still good video
that is not retrostyle, that is just hardcore style, but the "real man" style would be in assembly like with Roller Coaster Tycoon.
@laughingvampire7555 I think the only way it could count as retro is it looking like a 32bit 2d game
from the ps1/sega saturn , I think those were done in C. Interestingly enough as an English speaker I haven't been able to find any books or programming manuals for assembly language for the hitachi SH architecture family of CPUs used in the 32x , saturn and dreamcast
@@cryptocsguy9282 Take a look th-cam.com/video/yASyr603Kfo/w-d-xo.html and his book www.amazon.de/dp/B0D2TV15LP
@vampire
I'm sure you haven't written a line of code in your life
@@stalinstylez4034 hes right tho. even a regurgitated mainstream fact is still fact
@@cryptocsguy9282 C compilers waay back then were basic...very basic i.e. they produced machine code that was very frequently not as fast or small as that from a human assembly expert, and speed and size were 100% crucial back then with slow CPU's and low memory. This means that game devs back then absolutely had to inline a great deal of assembly - much, much more than you'd think.
Story: You've woken up in a cybernetics testing facility and have been been augmented with a gun arm. Your memory is coming back to you slowly as you fight your way out of the heavily armed facility, room by room. You might even pick up some more enhancements on the way out.
Title: Cybershot: Lost Recall
The title I think is cheesy but fitting. We can workshop it.
Alternative title:
Subject Seven
Don't ask why, just kinda sounds cool, it's a shot in the dark really. ... :D
Alternative alternative title:
A shot in the dark.
looking forward to see how you handle collision detection
Crystal Quest... "ahhh!" I remember it well, with all its wacky sound effects.
This video is awesome.
i think this is my 6th rewatch trying to figure this out hahah
[edit]: i'm really close to having {make} do cool magic for me also
[edit2]: my emulator runs my .bin files now but i dont have any graphics with it.. been doing... this...all..dayy... i just wannt to start using C already!
I did have an idea for the issue that you have with getting status messages on the screen is to use your "screen state machine" to define an additional screen to implement a console/terminal screen with a different higher resolution and switch between it and the other screen using a key. Then you could store the log messages into some kind of buffer and display them on this other screen and switch between this screen and the game. Plus if you add an command line, you can modify the game as it runs for debugging. I know it sounds a bit like extra work but at least it might help if you write other games using the Agon Light. As for a design, i did wonder if something like Ancipital (opening doors by collecting stuffor via shooting stuff) or Berzerk (run around a large maze) might be a good base game to add some mechanics to. And as for a name..what about "CuppaQuest" in homage to the previous game that were inspiration coupled with the Nice Cup of Tea branding :)
I always liked the games where you need to act frantically and efficiently to stay on top of the objective. Like Tapper!, for example, where you needed to fill up root beer cups to a steadily increasing stream of customers.
C was almost never used in the 80s, 99% of the time assembly language as the raw that was needed to run on 8bit hardware. I'm saying that from someone who was an in-house game developer who worked during the 80s.
Yeah I know. Imagine getting a C compiler running on an 80s machine. A ZX Spectrum compiling and linking from/to tape 😆
I want to build something and not take six months to do it. It was fun writing assembly a while back, but I see why it's so efficient. Having to hand craft basic things like multiplication and division and track register contents makes you try to write as little code as possible to save the headaches 😉
I see the beginnings of a souvlaki tycoon game that takes place in ancient greece.
Some ideas: title: Retro Robot Rewind. Theme: the character has been caught in a time warp that takes them back to the 80's and they have to battle their way out of the graveyard of unmade games (ie retro ideas that never got made because technology progressed instead)
Nice video! I started with STOS and I see you have it too :) I always wondering how to make a game on ST other than with STOS
Kate is a gem.
Does that quantize really quantize to 64 colours? The integer divide-then-multiply is right, sure, but 85 is very sus. 255/85=3, which would give 27 colours total or 3 per channel, not 4. You're trying to get 2 bits per channel right? So you probably want "p // 64 * 85".
(I was going to recommend a longer expression but then I tested it and realized chatgpt had *almost* got it right. So very close! The general form for quantizing integer x from K to Q, K-1=n(Q-1) where n is integer > 0, is "x // (K//Q) * ((K - 1) // (Q - 1))" and in this case K=256 and Q=4 because it's per channel. Note this is kind of a special case and there's a more complex general form when K-1 and Q-1 aren't tidy multiples...)
How about a 3D (wireframe) shooter. Using modern WASD and mouse (if it can use a mouse) but represented with old school 3D graphics (wireframe meshes).
"Just people making stuff"
That's it, I'm in.
Wow, a sane person no the internet.
I laughed at your expression of hot garbage. That would make a funny name for the game. Enemies bringing steaming piles of trash to litter. Keep your territory clean by shooting enemies or the piles of hot garbage with fun little explosions. I nominate the name “Hot Garbage”. I can’t wait to see how it all comes along.
Me rubbing sticks together in a game engine, grunting, gesturing, wondering why scary sounds and light come from the sky.
This guy writes his own game engine in C and decides to write a game with it like it’s 1989.
Me Grunk like. Grunk subscribe.
I like this guy. Subscribed.
In C is the hard way?! ... The original Rollercoaster Tycoon was created entirely by ONE guy and was written entirely in Assembly! 😂
This keeps coming up. In the 80s and early 90s many games were written 100% in assembly language. Especially on systems like C64 or Amiga.
Ello James! C for the win! :D
Thank You!
I think Jeff Minter wrote 0's to my frontal lobes
"Let's make a video game, Retro style"
*looks around desperately for some assembly code*
That's all great, but how are you actually getting pixels on the screen? 3D graphics APIs today don't let you just index from a base memory address to set a pixel (ie a frame buffer). Have you created your own abstraction simulating frame buffers on top of opengl / vulkan?
Hands up if you looked at the title and thought C#.
PMSL at the Steam folder comment - I feel called out!
Who remembers the demo scene?
@@stephenmackenzie9016 It's still alive. Although the Amiga and ST demoscene and early DOS was the best.
They seem to have moved onto either making old hardware do actual magic, or have figured out how to cram raytraced animations into 4k that runs on a GPU.
I think there's a demoscene for microcontrollers too.
Ah yes, of course! Fairlight etc and cool tracker music. I loved that stuff
@@ncot_tech C64 scene was the best :P still is.
Amiga demos were incredible. Mostly from Europe. Lots of techno.
How about stealth and traps, whether that be traps to avoid or as weapons against enemies?
Nice use of compound literals!