When making a game I find that most of my bugs I find through playing on a server with other players, not through studio test. Most of these bugs come up through the F9 log, and my concern is that a major bug will occur and I will have no way of knowing unless the players message me, or I’m in the game when the bug occurs. My question is how do you track bugs without the players telling you, and when you’re not in the game when the bug occurs? One of the solutions I thought of was to have the server save the messages in the error log, but I have no clue how to do this. How do you guys handle this problem?
Edit: For those who come up on my post with the same questions I have, I found this really great and detailed RDC talk on how to track bugs: https://youtu.be/dUR650iPCTw?t=646
You could accomplish this using error handling such as pcalls and the TrelloAPI to post a card whenever an error is thrown.
I’m sure there is a much simpler way of doing this though I have heard of many people handling these sort of things using TrelloAPI and the such. Another suggestion would be to have a bug reporting option in your game so a player doesn’t have to take the time to message you. It’s a lot easily to hit “send bug report” than go find your profile.
Though, do ensure you’re using error handling properly. Bugs are inevitable but one way of stopping them from being “game breaking” is ensuring you have all edge cases/loose ends tied up with proper error handling practices. This is a general rule of programming.
Well. DreyNotDre had a good idea with the TrelloAPI and I agree that should be implemented. But sometimes you will have bugs that won’t show up on error logs or more tricky to fix bugs, and for those cases there is really no easy way of tracking it. A lot of bugs are fixed by player input, my only advice would be to make it more easy for players to report bugs.
Perhaps instead use the Trello API and also add a in-game bug report forum for easy quick access?
Also doesn’t ROBLOX already have a system to log errors when your not there in the game statistics or something?
Also last suggestion, get professional testers too.
Not to butt heads on the forum but how is that what I suggested at all… I’d like to know what you are suggesting the “intended purpose” of an API is if not to interface with an application…
Trello is a web-based list-making application designed for organisation and management. It is not designed to be a database and, thus, should not be used as one through its API.
We have oddly different definitions of a database, creating an easily readable list of errors that are thrown in your game seems like a great use of a list making tool
A database is an organized collection of data, quite literally, and with that in mind trello itself is a database just in a pretty and easy to use form and labeled a “List making service”
Agreed. I don’t see how using an API for that purpose is unintended… The literal purpose of an API is to work with applications lol.
Also Dandy, listing errors in Trello is using it for organization and management… He is specifically trying to manage his errors in an organized and easy way. Also, there is no specific way to use Trello which is probably a big reason why its so popular. It has many uses, and if he wants to use it that way, thats fine.
I propose using a service like GameAnalytics which is meant for these purposes. It has tracking features for errors and allows you to setup custom events. I use it and highly recommend since it’s free and highly versatile. It’s also not too hard to implement and has an SDK specifically for Roblox.
Sometimes trying to reproduce bugs in studio can be really time consuming even with tools built to help debugging, especially when you’re trying to find/trigger a really rare edge case.
The fact that you can identify that it’s an edge case means you already know what mechanics the bug could possibly be in. Therefore plenty of solutions open up to how you can possibly fix it, find it, or mitigate it entirely. It just takes time, there’s no easy way to speed up bug smashing.
What do I do?
Well, for starters, set in some print() or warn() somewhere in the code in order to see if the ordering is correctly executed… but for some cases, breakpoints can help you analyze the script’s flow and thread; how it is running.
Bugs In Worst Case Scenario
These bugs are very, very pesky if it affects a server depending on severity. Of course, you can ask a group of QA testers or implent a feedback feature in your game in order to acquire information regarding the unexpected behavior/bug.
Let’s say that the bug was only happening rarily, this is due to extremely unlucky timing with the scripts’ executions. Not really common these days, but they sometimes do have a funny outcome after execution.
Another type of bug that can’t be seen is a bug which only occurs long after server start; mostly memory leaks belong in this category, and they are always caused by references not being removed from the memory or simply some loops.
To counter these bugs, always have a set of enthusiastic testers who are willing to give feedback, especially technical feedback, and maybe even a fanbase.
Analysis Without Testers
Have no testers? Fear not. Run third-party services who can log errors from the game. Make sure you select the correct ones and not bump into ToS problems
Summary
Untrackable bugs that can’t be seen from Studio APS can be traced through feedback or analytics services in live games. The feedback or bug report must leave a reproduction of the bug; which then can be tested in Studio and then patched.