Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

anyone wanna talk about game design

A topic by MarioMan98 created Jul 21, 2023 Views: 204 Replies: 3
Viewing posts 1 to 4

i keep making small but smart changes to my games and wanna talk about them.

(1 edit)

What kind of game design?

I'm accustomed to RPG design that ties into lore and stuff, maybe some character design! You?

When I built my rpg, I considered a number of things.

I set targets.

  • I was chatting with someone on Discord about game making and what I could make that wasn't just some arcade knockoff, like another pacman wanna-be or snake game.  I was told I should make a role-playing game, but make it so it has a very small filesize.  Since I already had my resource editor, I set out to see what I could do to make a game in 64kb.
  • I wanted to tackle a late-80s style RPG where you played a single character (could choose from a couple different classes, each with their advantages and drawbacks), a fairly straightforward, but non-linear quest (gather puzzle pieces to unlock the final area), have a battle system for 1-on-1 fights and include the list of usual details for such a game (inventory, enemies, enemy group setups, maps, map objects, flags and switches, music and sound effects, graphics, the whole lineup of stuff)

Align your goals with your targets.

  • Okay, so I know my game is going to be 64kb, which means it's going to be awfully damn small game.   I had just come off a 192 x 144 pacman clone (At the time) with a working palette, tiles, sprites, maps, text and music editor, so I could start working on the resources, immediately. The editor would also need to be expanded on to handle all the other data I want to include so it does not bloat the source code end of things.
  • Javascript is pretty much all I know for a language that can make a game do what I want it to do.  That means, I am using a language that is quite wordy.  I setup a shortcut system where I could use three-or-four letter functions to replace commands ( FL(a) replaces Math.floor(a), for example; it adds up after a while).  It is not ideal for efficiency, since a line of code is marginally faster to process than calling on a function to do the same job, but since I am not trying to do a raycaster game (which I have played with in JS), this will be fine, since this is more about saving bytes.
  • I never actually achieved a target of 64kb, though...  It turns out 64kb was laughably unrealistic.  I had the maps layed out, three tile sheets.  There was no music, dialogue was non-existent and the combat system was fairly light and missing animations.  I upped my target to 128kb.

Just make it.

  • With a loose idea of what the story and progression in the game will be, I got started on the project.
  • I built around 80 or so palettes (2, 4 and 8-color) and three tileset pages, each 128x128 for my game to convert to sprites and background tiles when it loads. Next I tackled the maps.  I did not like how my maps felt inefficient with filesize, so I did a little trick to squeeze 2 map tile values into each byte, cutting the filesize requires by half (My main overworld map is only 2kb in size with this trick), but this did limit the # of tiles I can have in a map room to 16. Luckily, there were no limits for objects, so I could use them to plug in the occasional time I needed something to give the appearance of an object.  I also used a trick to 'pad' a map room with a single tile, so I could keep the maps smaller, mainly for pathing or other tiles that was not of the default padding.  Objects were next; each one in a map room was 8 bytes each, had ID, X & Y position and what they could do.  Most of them (initially) were for warping from one location to another, objects that would decorate and/or block a player's pathing, NPCs for interacting with, treasure chests to open, etc.  Objects that changed what monsters you would encounter were not used until much later.  Dialogue would soon follow, with most of it being.  But the time I was at alpha build 5 or 6, most of the main non-battle content was done.  I tackled game data next; monster data, party layout and inventory; If there is something I don't like, I can fix it later.
  • It started to get a bit more tricky once the combat system was in place.  I started with a single enemy and tried to get it working, before I started adding others to the mix.  Even so, there were plenty of bugs along the way; bad attacks from the enemies, stuff not going in order, accidentally pulling the wrong stats for attack and defense, the list goes on.  This was a bigger pain than expected...
  • Two things I worked on closer to the end of the project were the flag and switch set and eventually the music and sound effects.  The flag and switch setup was a case of when a flag was set, a check would run though a list of in-game actions and run it if the ID# of the flag matched.  (Like if you opened a treasure chest, flipped a switch, defeated a boss, etc., does this do something in the game, like change a wall to a door?  Change map music?  Give the player an item or money?  The music editor was a case of typing out notes, their length and special things, like rests in the music, changes in volume, selecting which waveform it used and special effects (I think I had more fun with making the music than the rest of the project put together).
  • Prior the the madness of bug fixes, I including the remaining odds and ends I wanted to include: New Game, Load and Save feature, options page for customizing preferrences, title screen, multiple difficulties, clock, etc.
  • The resource editor saw continued changes along the way, like noting what stuff was for sale when I set an object to a shop or what an NPC was saying for their dialogue, etc.  

Fix bugs.

  • This probably took more time than anything else.  Luckily, JS' dev console is alright at telling me what line is giving me trouble (Unless the line refers to one of my functions, in which case, it's bad data being forward to it and I have to comb through why that is happening; I went stircrazy with an inventory glitch that was happening during battle for the longest time)

i was more thinking about like balancing nd clever code and stuff idk im watching hermitcraft so ill be back