So I noticed that a lot of games have the same issues. For the reason, I’m going to post a series of tips and common issues. Now, these are just from what I’ve seen and there is no ‘one size fits all’, so consider these just advice to consider, not strict rules. (Also feel free to provide your own advice for issues you see)!
Backups and Iterations of Your Game
So my tip here is going to be fairly basic.
When you have a time limit, upload your first working version. With itch, you can use butler, which allows you to first dump all the files you might POSSIBLY need into your project with that first version. This way, future updates will only need to upload additional files and modifications. It is much easier to delete files from your project than it is to upload them.
I upload 3 versions of the game: Archive (This is the very first working version and every major stable version), Stable (This is the current stable version without any major bugs), and Unstable (This is my hourly/nightly upload that is my most up to date version. This is usually unstable because it hasn’t been tested fully for bugs).
If you are working in a team, you might have a fourth version for your development team.
In addition to the uploads, I have 1 current version, 1 or more previous versions of the game (in case something seriously breaks in my current version, I can go back to a known working version), and potentially an off-computer and off-site backup. The off-site backup, I’ll probably backup once a week or once a month. The off-computer backup probably once a day or once a week.
Basically, in regards to jams, have at least three branches that you upload as you work on your project.
Archive: This is your backup/last resort. This is your first working game or the pieces leading up to that if you don't finish on time. This ensures you have something to show if issues crop up. You can also make a second archive that is your last stable branch (so one 'stable' version before your current stable version).
Unstable: This is your incrementally updated version. This is may or may not work, but it shows your latest progress. Upload this every x hours or upload it before the date changes.
Stable: This is your latest good version that you know works properly. You can always replace this with the unstable version later if the unstable version proves to work fine, but otherwise, this is your entry.
When you are actually working in the industry, you will likely be doing something similar to this anyway, so you might as well get used to it.
Playtesting:
So one advice I have for developers is to set aside some time for playtesting, especially with a deadline. If you have a dedicated playtester, you can get away with a shorter playtesting period, but otherwise, set aside at least 1/5th of your development time for playtesting, with a minimum playtest time set aside of of how long it will take to play through your game three times. The reason is because you want time to fix your game if you find problems. If you happen to reach a point where you feel that you’ve playtested enough, create a backup and upload it. This way, you have something to show if things go wrong later. After you do that, you can try adding to the game and then playtesting. Again, set aside enough time to playtest.
Generally those too closely involved in the creation of something are either too critical or not critical enough.
When playtesting something you've worked on, there are a few things to consider, including:
- Having worked on the project, you are:
- Better informed about your project than others. What seems obvious to you might not be obvious to others.
- More used to the project than others. What might seem obvious to others might not stand out to you.
- More prone to ignoring mistakes, errors, etc..
- Able to work around mechanics and puzzles more easily due to knowing the intended solutions.
- Have a hard time seeing alternative solutions due to already knowing an intended solution.
- For effective testing, you want to:
- Be able to step back from the game. No longer see the game as 'your' game, but as 'some stranger's" game.
- See the project from the perspective of a player:
- With no preconceptions.
- With preconceptions from similar games.
- That has just beaten the game.
- That has spend a long time away from the game.
- Doing a new run/from a previous game of a series.
- Be able to consider playstyles different from your own/what you expect.
- Really want to try to break the game. Look for ways that you can break the game.
- Try the consider how the game might behave under different conditions. If you have a really powerful rig and a cheap rig, you can do a test on both rigs. If you have just a powerful rig, you can use emulators or other methods to simulate a weaker or different rig. (Like Windows 10 and Windows 7 and Windows XP might all handle the same game differently and have different bugs). One very common issue is the game behaving differently at different FPS values. So like a game might be fine at 30, 60, 120, 144, then break at 146 and higher. A game might also be fine at 300,144,120,60,30, then completely break at 28.
- Test the game's deployed version. One way to do this is to upload to itch.io as a developer branch (mark it for your system) and use the Itch App. This will allow you to use a mode that should somewhat isolate the game so that you can test it. The benefit of this is that you are testing it in a way that lets you see how the final product will react because the game can act differently under different environments (test vs deployed vs actual environment).
- Ignore your own personal feelings, but also consider in feelings.
- Example of why to consider in feelings: How is a scene supposed to make you feel? How does it actually make you feel? If your MC's father dying is supposed to be a sad scene, but you feel happy about it because the father was a jerk, then the scene isn't working as intended, as an example.
- You don't want your personal emotions to cloud your judgement. (Having emotions affect your judgement is normal.)
- For effective fixing of issues, you need to:
- Understand how bugs and issues happen. The better you understand the problems (and solutions), the faster and more thoroughly you can fix problems.
- Be able to understand what problems your fixes might cause and avoid those problems.
- Be able to prioritize what is important and what can wait.
- There is a development side to this choice: Budget, Time, etc. can affect that side of the decision.
- You also want to consider in the user/player side of this choice: What issues are the players going to see? What will a player be willing to deal with and what will a player find frustrating to the point of quitting?
- Balance what the players will want with what makes sense from a developer standpoint.
- For example, players see new UI as being most important, then sound, then a few minor graphical errors. Your budget provides enough to fix one UI issue, or two sound issues and one minor graphical error. Your time left allows you to fix two issues. Which do you choose? You could fix just the UI, which the players want most, or Sound and sound or sound and some graphic error.
- This is actually more complicated than just that as what will the players find most annoying. When they just started, what will make them quit before giving the game a chance vs what will make them quit over a longer period of time? Which is more important to prioritize? There are many more factors to consider and you also have the issue that you can't spend a lot of time making that decision because that is spending time and possibly money.
- For example, players see new UI as being most important, then sound, then a few minor graphical errors. Your budget provides enough to fix one UI issue, or two sound issues and one minor graphical error. Your time left allows you to fix two issues. Which do you choose? You could fix just the UI, which the players want most, or Sound and sound or sound and some graphic error.
That isn't an exhaustive list, but those are some things to consider. I put some of the ones that are harder to do in italics.
Time Management: How you can use seconds of downtime to work on your game.
Okay, so some might know that when I was working on the project, I had a full time job, unexpected overtime, was working on 5 novella for a contest at the same time (technically 6. The rules did change for the contest though so now I have to change them to full novels), my game, several classes, taking care of family, and some confidential things. I also ended up starting about halfway into the jam.
Sounds like a lot? It was! So how did I deal with it? Scheduling and planning. First, I planned what I would have done on x dates. This way, I knew when to cut things short. Basically a part of project management is managing your time and budget and believe me, time is important.
Now, the next thing I did was pretty simple: I used all the time I had. You might think: Of course, that is just what everyone does. Well, I mean I used all the time I had. I went to the bathroom? On my way there and back, I’d be arranging the levels in my head, balancing numbers, adding to the story, etc. I had a break? I’d be working on my games and stories during those times, even while eating. Stop light? I’d also be working a bit there, though not so much that it was unsafe (don’t do this if you can’t pay attention to your surroundings while doing so). Even walking from my car to my door, unlocking my door, etc. I’d be watching my surroundings for danger while working on any little thing I could.
Do note though: Life and Safety first. It is better to fail the project than to lose your life since if you lose your life, you are failing the project anyway.
In my case though, I do have some advantages. I can be doing multiple tasks and several of them can be just automatic, so I can be thinking about my projects while I’m doing tasks. I also lack most emotions of my own (most of my emotions are emulated by copying others), so if something happens, like a friend dies, I can turn off my emotions and keep working. Even without these though, simply taking advantage of even seconds of downtime can help you do more with your projects.
There are other tricks that I can’t talk about that I used, but these aren’t tricks that would help most people. In fact, these tricks would slow down most people.
Typos, layering, and passability.
Typos are very common. One trick that I do recommend is that people try to have their scripts as an external file first. Use an editor with spellcheck/grammar check options (You can also run your json files through a spellchecker/grammar checker if you know how).
Another trick is to read out loud when you playtest or re-read your text. Hiring an editor or such is an option for some as well, but not for everyone.
Layering and Passability are very common issues.
For this, there are some fairly simple testss. Create a custom map for each tileset that uses one tileset you know has full passability. Now, every other square, you put one of each tile, then walk around each tile while trying to enter those tiles. This will let you test individual tiles for passability and layering issues, this way, you know how each tile’s passability and layering works for the next step. (And you can fix any obvious issues before the next step).
For the next step, have each map, but set your speed to maximum. Now, try to test every wall and floor tile. The max speed will let you test at a much faster pace.
Alternatively, if you remember the passability rules, you can visually test this. Just remember one important rule: The TOP layer is what determines passability. So if you have the floor layer, layer 1, layer 2 both passable, but layer 3 is impassable, only layer 3 matters. (Also remember that invisible tiles also have passability rules if they are the top layer!).
Also Alternatively, you can just test each unique wall/floor combination if you don’t have much time. This is what the previous step is for. If you know what to look for, you can test obvious issues for a faster, more focused test.
A very common passability issue is ceiling tiles. Ceiling tiles are passable from the bottom (and with each other), so if you forget to add a wall, you can walk right up into the ceiling tile.
Volume Control.
Yes, I had this issue in mine as well.
Okay, one thing to note: The base RTP’s SE volume is roughly double that of other sound volumes. This is easy enough to solve by automatically halving the SE volume as a base level and then doing fine adjustments.
More difficult will be other volumes as it can be hard to tell when one music is louder than another. This, unfortunately, I don’t have much I can suggest except have a program running that shows you how loud things are and try to keep all the sounds within a certain range of loudness by testing each sound.
Points of no return
This should be a pretty short tip: Warn players when they are going into a point of no return and have the save BEFORE the point of no return, not after.
Also, turn off autosaves for sections where you cannot leave at will or cannot return. This way, your player doesn’t suddenly end up locked and have to start a new game. Players are more likely to give up on your game than to redo everything, especially with longer games.
Pigeonholing the Player
So, for most cases, you want to avoid forcing the player to play a specific way. There are exceptions, such as puzzles and linear story elements, but when you give the player options, make sure the player actually can use all the options (even if some might not be as effective, make sure they all can work). Players tend to not like it when, say, I’m playing a mage class for 90% of the game, then an enemy is suddenly immune to the mage class and I have to play some very specific class that I might not like to beat that enemy.
Players also tend to not like pointless choices. A few pointless choices is fine, but they should provide some sort of value to the player for picking them. A one line difference isn’t really anything of value. Players want their choices to matter.
Colorblindness and Deafness accessibility
Very common issue, but simplest thing to do if you are on Windows 10 is to turn on color filters. Turn on the monochrome (black and white) filter and see if you can see with that filter on. The more clearly you can see, the better. This isn’t a perfect way to do it, but it will at least give you a basic level.
Other things to do are avoid single colors, clashing colors, and low contrast colors when the player needs to be able to see something. Using pure red may cause problems with players that can’t tell red vs green, for example. You might instead introduce additional colors or use a chart to see what is a more compatible color for colorblind players. (Note that there are different forms of colorblindness).
Take me, for example. I can technically see the colors most of the time (I’m not technically colorblind, it is a different issue), but I can’t identify the colors. (I am sometime monochromatic colorblind, but that only lasts for a few minutes each year or so). As part of this, if there isn’t enough of a difference in coloration (not enough contrast), I can’t really see an object even if I know it should be there because mentally, I’m mapping each color to a reference. For example, apple are red, so I’m matching colors to the last apple I’ve seen to identify a color as red. This means anything similar also gets matched as red.
Similarly, deafness exists and deaf players exist. Sound puzzles are a huge issue for deaf players and it is recommended that you add in some sort of visual component for such players.
Brightness/Contrast/Gamma
So one thing for devs to remember is that not everyone has the same screen. What might be bright on your screen might be dark on another screen. This is why some games have images that are designed to be visible at the expected range of values. It is highly recommended that you have these settings if you have images that might be hard to see and to allow these settings to go fairly high/low as some players might have cheaper screens that may not display as well.
Now, if you can’t add in such an option to your game, it is best to err on the side of caution. Keep your visuals high enough contrast that a bit of excessive brightness/contrast won’t make important visuals invisible.
For the most part, don’t have complete darkness. You want the player to be able to see the area and you can do this while still maintaining the mood. There are exceptions, but do consider how a player who has never played the game before and is going in blind might feel. This goes with accessibility.
Now, if you are worried that a player might mess with your settings and make an area too bright and cheese the game, there are things you can do, although I’m not going to go into them here.
Tilesets and logically matching
This is going to be short, but basically, don’t put spaceship parts in a fantasy setting unless intentional and it makes sense within the story. Otherwise, you will get very confused players that feel something is out of place. This goes with any sort of mismatch that might occur, such as using a tree sprite and calling it a waterfall.
(To be continued in replies due to char limit)