GoldSpace (Working title: Space Pirate)

Bombini

  • *
  • Posts: 1400
Hello everyone!
i am almost done testing.

  • Part I: How it all started
  • Part II: Visual development
  • Part III: Feature development
  • Part IV: Biggest learnings and aha moments
  • Part V: Features I abandoned
  • Part VI: Tools I use
  • Part VII: What helped testing
  • Part VIII: Business and numbers

Today we talk about:

Part IV: Biggest learnings, bugs and aha moments

Finishing such a project is brutal and needs a lot discipline.
Although this project was always a dream for many years i needed to find ways how to motivate myself. What really helped me was working with releases. I would try to come up with a meaningful new version of the game (major bug fixes, a big new feature, new levels) which would feel different enough from the previous one. I worked with simple task lists like this:

0.386 (released)
+ General
   + Improved goal UI (current story goal is shown in starmap, before level; same for contract goals)
   + Added SAVE menu to starmap (press ESC to enter)
   + Added fullscreen at start
   + Added controller support and settings screen (still buggy with some controllers)
+ Star map
   + Expanded star map (now multiple screens tall) and reworked art
   + Added idle animation for player ship
   + Added directions arrows for contract locations when they are off screen
   + Added directions arrows for main levels when they are off screen
+ Enemies
   + Advance AI of most humanoid enemies
   + Added "call backup function" - a special enemy type will call for back up from outside of the level if attacked
   + advanced alien queen (projectile) adds slime where ever hit which slows player down
+ Levels
   + Reworked and embedded story level 0, 1, 2
   + Improved performance a lot (switched from Box2D to Simple Physics)
   + Modified tile sets so they can be bombed away (the ones with cracks)

I always added a ( ) at every task and changed it to (x) when done which was a very nice feel of progression.
Another thing that helped was social pressure from forums like this where you want to post an update every week with progress and outsourcing some art pieces once in a while to have something shiny to build in. Working towards releases and milestones and just getting feedback from this forum. This was for me the main driver.



I think the closer you are to finishing the more you have to motivate yourself. You are not adding cool new stuff but fixing nasty bugs and playing the game again and again untill you cant see it anymore.
Creating a eyecandy once in a while for you might do magic. I waited to outsource some art on purpose until the end to have cool stuff i could put into the game. Also creating some physical things around your game might help like this one:



Don’t test on Flash if you build for Desktop
I always compiled Flash in the first years because it compiles faster. I could save a lot of time while testing using Flash. I complied a Desktop version once in a while but not regularly. My assumption was that everything that works on Flash also works on Desktop. I was wrong. I ran into an unplayable version (on Desktop) after not compiling for it for a couple of weeks. This was a shock and took me a lot time to get right again. Read more about it here.


Upgrading to a much newer Stencyl build might break your game.
I was excited for the new private builds (for the new features) and afraid the same time because my game might not run anymore. This started somewhere after i upgraded to a newer version of Stencyl (i think I started with 2.0). Nothing I could change and do different in hindsight but just a learning I made. It can be especially frustrating if you have code done by someone else (you paid for and you don’t understand).


Simple Physics versus Box2D.
I decided to use SimplePhysics at a certain point because of perfromance but also because of how the collisions work. Stencyl behaves quite differently if you use Simple Physics ore Box2D. It is almost a different feature set so make sure you know what your game needs and what you choose.
•   Simple Physics will not register collisions between two actors unless one of them moves
•   Simple will have a much better performance
•   …will not remove an entire collision box of tiles next to each other but only the removed one (which is key for my game).
•   ..regions dont seem to work work



Avoid collisions where ever you can to get a good performance:
I mostly use distances to check if actors “collide”. I check how far away they are from each other to see if the “collide”. This was a huge performance boost and made my life much easier.
Some thoughts on performance here.


Meta information in a audio file will create the weirdest bugs you can imagine.
The one bug which almost made me cancel and delete the game was having meta information in audio files. I ran into a bug I could not nail down. It would lead to crashing the game, half rendering the level, behaviors would act weird. The worst part. I could not explain it. So I went through the whole game, deactivated behavior after behavior and tried to find the problem. There was really not much left when I remembered this small hint Stencyl gives you when importing audio files (Meta info could cause issues). And that was it. I removed the meta info from the audio files and the game worked again. This is too weird to be true.


Don’t try to fit all into one actor.
Don’t try to fit all into one actor if it makes life too complex. Lets take the default enemy AI for example. I tried to put it all in one behavior and this just got more complex and complex which made it more difficult to add stuff. There enemy behaves very different when having noticed the player or not. So what I do is a have two different actors with different bahaviors. I basically kill the enemy when he notices the player and spawn visually the same enemy (but different actor with different behavior) at the same point. Same goes for NPCs who can attack and have a dialogue for example.


What helped testing:
I created a cheat code which would enable me certain game states, jumping around in the game and would pull up a console to show me the most important values in the game:


This made testing so much easier. it also would allow testers to send me screenshots so i could identify the problem better. Small hint that helped a lot: How to avoid missing actor erros



Communities change
Forums change over time. So does this one. I like this community a lot. It is one of the main reasons I am here but it also changed.  A lot discussion and communication moved to discord here in this forum which is not perfect for me. I have a very different time zone (so barely online when others are) and I find a forum easier to browse and answer compared to a chat. But this is just my personal preference. 

Stay tuned!

« Last Edit: March 24, 2020, 03:45:30 am by Bombini »

mdotedot

  • Posts: 1654
As always it is nice to read your journal!

Especially the "retrospective". I particularly liked PartIV and I'm excited to learn about the other points you have on your list!




Proud member of the League of Idiotic Stencylers! Doing things in Stencyl that probably shouldn't be done.

Bombini

  • *
  • Posts: 1400
Thanks mdotedot!
Today...

  • Part I: How it all started
  • Part II: Visual development
  • Part III: Feature development
  • Part IV: Biggest learnings and aha moments
  • Part V: Features I abandoned
  • Part VI: Tools I used
  • Part VII: What helped testing
  • Part VIII: Business and numbers

Today we talk about:

Part V: Features I abandoned

A cover system

I thought at one point that a cover system would be nice to add. You can basically knee behind cover and get out of cover to shoot without moving. I built it in but it was never as much fun as i hoped it would be. It is much more fun to place an obstacle as cover which the player cant shoot through or above to force the player to move. Also i think "a cover shooter" is a core featurem that you want to use where ever you can and this came in way too late. But it is still in. There is one fight where you can try it if you pay attention ;)



Read more about it here.


Covered rooms

One feature which implemented and which made the game much better was covering some rooms. It adds curiosity especially if the rooms are locked. I spedn some time to find out which system to use. I went with the most basic one which is adding actors which disappear if you enter a room, open a door or blast the wall of the room:



I abandoned a much more complex system which simulated the view angle of the player. It would have been too much work and was not necessary in the end:
 



Unlocking and choosing a different character

The inital idea of the game was that you would play several shorter stories with several characters. All their stories would be interacting with another. It would have been one story from each chaarcters point of view. I still like that idea and might use it in another game but it turned out to be too complex at the time.




The contract system

I still love this feature and i spend a lot time to implement it. You would get contracts which would trigger side missions on the starmap with indivudal goals. Basically like getting emergency calls or bounty hunter requests each also linked to specific factions. You would never get the same contract again untill you did all in the pool of contracts which could be increased. Very nice system actually. The goal was to add some variation and add some life to the star system.

Why am i not using it: Well...testing this game was already a nightmare. Such a system with lets say 18 contracts (beside the main storyline) each with levels makes testing just much more complex and takes so much time that i abandoned it. It was fun to create though ;)




Factions and a simulated universe

The initial concept was much closer linked to Sid Meier’s Pirates! There were three factions (humans, robots, aliens) each with an own behavior, sending ships from planet to planet producing stuff a bit like in Raid on Bungeling Bay from Will Wright. You would be a space pirate basically raiding those factions with the effect how much they would like or dislike you up to the point that they would hunt you in the star map firing at you or trying to board your own ship. I also still like this concept a lot but i would have needed a much deeper meta game (maybe even with ship fights) and i wanted to focus on the fun in the levels instead.



The inspiration for the faction system also came from Grand Theft Auto 2. Especially the UI as you can see here:

I tried to adopt it ...



... and finally ended up with this.
The balance how much they like or hate you would change depending on the actions you would take in the game:



Each faction got their unique looking style, set of weapons and ships.
This would have been just a different game and i still think about creating it at one time:




Conclusion:

You could summarize that i prototyped a lot features and concept with the base game idea that i had. Thats why it is a bit diffcult to say when i started working on THE game. I would next time try to protoype the core features earlier and try to force myself not to try to much ideas but this was also a lot fun and i learned a lot from it.

Stay tuned!

« Last Edit: March 24, 2020, 03:45:43 am by Bombini »

Bombini

  • *
  • Posts: 1400
Hello everyone,

i hope you are all save.
My progress is a bit slower due to the corona situation. Schools and kindergartens are closed plus my wife works in a hospital. You can imagine my workload.
Anyways, today a bit shorter but not less important.

  • Part I: How it all started
  • Part II: Visual development
  • Part III: Feature development
  • Part IV: Biggest learnings and aha moments
  • Part V: Features I abandoned
  • Part VI: Tools I used
  • Part VII: What helped testing
  • Part VIII: Business and numbers

Today we talk about:

Part VI: Tools I used

The only "expensive tool" i am using is Photoshop (you could use GIMP instead).
The rest is either free, open source or very cheap.
And yes...i use Windows ;)

Paint.net
I am actually a huge fan of using the linked visual editor inside Stencyl. My workflow is often to edit art while working in Stencyl (click edit) to see how it feels and plays in context. I tried a lot pixel editor because i wanted to have a UX which suits my thinking and ended up with paint.net which is the best for my needs. I was important for me especially how layers are treated and this was just my best solution. I would try Aseprite to fine tune animations but my go to tool is paint.net (weird name also because the URL is https://www.getpaint.net/).

Paint.net became my standard tool to create pixel art . I use it get rough stuff done in Stencyl and I also use it to go into the resource folders to fine tune the graphics there. It is from a UX perspective the perfect tool for me. I tried several and this one was my preferred one.

Spreadsheets:
For me the best way to get feedback from testers on bugs and general issues, commenting and fixing. I would go from version to version to be able to go back and see if bugs still exist or have been fixed on all machines. Because the best bugs are those who dont show up on your own testing environment.

Here an example of the test sheet. I would provide a link with a new version. Testers would post bugs with screenshots or video describing them. I would try to recreate the bugs and post a new version where this is fixed commenting every aspect of it. I prefer this over chats like discord because i can never fully know when testers have time.



GifCam
GifCam is a nice and handy tool to capture regions or fullscreen gifs while working. Those wont be the most polished ones but i still like it if time is short and i want to capture something quickly to either to document or show somewhere like this example:



Fraps
The go to tool to capture footage for trailers, game play footage in general. I would edit this either in the Windows build in video editor or try another open source one. But so far this one was enough.

Photoshop
Edit almost all visual files from videos to gifs to pngs and jpegs. It has its price but i never run into limitations and can pull of all to do i have in my mind. I dont use it to create visuals but edit them.

Windows Snipping Tool
My preferred tool to capture non animated art on the fly. I would still copy/paste and save the asset in Photoshop because you cant set for example if the asset should use anti aliasing or not.

Windows build in screen capture tool (video)
This has been on MAC for many years but the Windows build in tool is very handy to capture bugs. just press "Windows key + G" at-least on Windows 10.

Audacity
Most of you know it. Easy to use and especially useful to change bit rate and to remove meta data out of audio which caused my worst bugs as i wrote before.

Cubase
I have been growing up with it and its just my preferred Digital Audio Workstation because of that. I use it to produce my music. You might remember the first 6 tracks which i put into the game. Those helped me a lot to find the mood and style i wanted to express with this game. Cubase is again about the UX i prefer.

Stay tuned!

« Last Edit: March 24, 2020, 03:46:01 am by Bombini »

domagojbulat

  • *
  • Posts: 207
Hi, what's up? How are you holding? Looking forward to your new update :)

Bombini

  • *
  • Posts: 1400
Hello everyone and thanks domagojbulat for poking :)
The current situation with covid18/corona, my wife being a nurse and i taking care of everything else is quite a challenge.
But here you go :)

  • Part I: How it all started
  • Part II: Visual development
  • Part III: Feature development
  • Part IV: Biggest learnings and aha moments
  • Part V: Features I abandoned
  • Part VI: Tools I use
  • Part VII: What helped testing

Some general thoughts
I ran into some really bad bugs. Some which almost made me quit the game, delete all files and call it a day. I heard gardening can also be fun ;) One of the worst ones was this one where meta data in an audio file created some weird and not explainable effects. The game would compile without errors, run for a while, create after 30 seconds weird graphic glitches and crash completely after 1 minute.

Audio file problem:
I deactivated behavior and code step by step until i found the code what was causing it. But it took me a long time to realize that the the issues started when the audio was played. Replacing the audio file would not work. The audio file  had to be deleted and re imported/created after deleting all meta info in that audio file. The audio file with meta info would work fine on Flash btw. And this is scary.

At this point i started to understand that i seem to have two problems causing a crash.

Problem two:
After more exhausting testing (checking collisions and everything) i found a line somewhere where a (deleted) actor was not created anymore. This was causing the crash after 20 something seconds. It was very very deep in some sub block. But...i always got a compile error before in my game when that was the case and i didnt get one for this. Thats why i did not consider it. A safety check for situations like this can be this: How to avoid missing actor erros.

Read more about the bug above here.

Part VII: What helped testing

Testers
It sounds so obvious but there are some important details :)

Why are testers important?
Even if you test your game yourself a lot you will always follow your playstyle and not find all bugs because of that. It is surprising how you avoid certain features and situations which others might run into a lot just because of your playstlye. How you play levels, in which order you do thinks and so. The worst part. You know 100% more compared to testers who have not played your game before. Especially when it comes down to goals, hidden stuff and difficulty you have to reset your game when testing yourself and this is almost impossible. Thats why you need testers who in the case are not emotionally attached to you (who might avoid hurting your feelings).

How to get testers?
I think its unrealistic to expect proper testing from a forum member no matter if Stencyl, TigSource or IndieDB. These forums are a valuable form to get feedback on specific questions or get a general feeling for how attractive the game is. Proper testing is difficult though and costs a time. Different platforms like MAC, Windows or even different hardware can drive you insane. I was lucky enough to have some passionate friends who wanted to test and did it very well. Having a budget to pay testers might be a good idea which i would consider as one of the cost centers in the overall development.

What was and is important for me?
Getting very precise feedback. What happened and when exactly did the bug appear? You can not imagine how difficult for testers it can be to answer these two questions precisely. Bu i need to know if i have a behaviour with hundred lines of code. There are two things that realy helped. A game parameters monitor and a specific testing sheet.


Game parameters monitor
You can press a certain combination of keys to see it. It shows the most relevant game attributes (also some of them are covered by the UI but i need them to check if the UI works). I can always see what is going on behind the fassade of the game. I asked testers to either make a screenshot or better record their testing by video. This made testing so much easier because i could identify the problem better. No text can describe a problem as well as a screenshot or video.




Testing sheet
I would ask testers to put their bugs into a google sheet. The comment, chat and real time function would make nailing down the bug easier.




Overview sheeet
I froced myself to capture every progress which was made in testing in an overview sheeet:




Cheat/Test mode
I created a cheat code which would enable me certain game states, jumping around in the game and give me needed ressources. You can deactive and active it pressing certain keys to switch all the time. This helped a lot to test certsain situations or problems without having to play through parts of the game to gte there.


Version Control
A tiny thing that i put in is version control. The game checks a file on my server if should start or not. I can deactivate older versions with this easily. This requires an internet connection obviously but i never got complains but could get rid of old buggy versions i dont want to be in the internet.



A deactivated version would show:




A testing level
This is nothing new but it helped a lot. A level called hideout which i used for testing new enemies, features and specific functions.




Testing performance and hickups
Getting to know Stencyl took some time but it helped in general activating and deactivating parts of the game to understand roughly where performance drops would come from. I tried to avoid collisions for example as much as i can and rather work with calculating distances instead to get a better performance.

I would also like to refer to merraks hxScout Special!
He gives a great overview how to use this tool which can be very helpful.



And that is it for today. I hope you enjoyed. Feel free to post things i missed and see you next time!
Stay save and healthy!


Btw...want to try the current version 0.527?
I added a lot bug fixes, the game remembers now your controller, full screen and you cant overwrite your save game soieasy anymore.




« Last Edit: September 14, 2020, 10:27:03 am by Bombini »

gameo

  • Posts: 22

dtishin

  • *
  • Posts: 89
Hi Sebastian,
Just played one and a half levels of Goldspace.
What can I say - a wonderful experience!

I loved:
- Automatic actions (hacking, lockpicking etc)
- Destructible environment
- Artwork
- Animations
- Music
- Dialogues
- Easter eggs (nod to Doom :))

What I thought could be tweaked (only minor points so far)
- Navigating the Main Menu with arrows (in addition to WASD).
- Use Esc to get back to the root screen of the main menu.
- Maybe show controls after start of a new game, not before the main menu? It's very easy to skip the splash screen, then I explore the menu and clean forget what I saw just before it.
- The Credits screen is illegible due to overlapping text strings.
- Maybe don't reset the main music theme when I get back to the root of the main menu from a submenu.
- When the Shop window is open, use Esc to close the shop window first (not open the main menu), or add a big on-screen button for closing the shop window, which could be selected by arrows. I saw a red cross in the top right corner but I couldn't figure out how to press it.
- Separate the icon of the weapon from the life bar by more space or a vertical line of sorts. Otherwise (especially with the green colour of the health bar) it looks like charge level of the weapon. Or at least maybe make the health bar orange?
- Enemy AI: I noticed the guards simply follow a direct line to the player, which means they'll hit the wall and start to slowly slide against it (which means I can safely kill them while they are moving from around the corner). Do you have issues implementing the AI Tools extension? It has a choice of pathfinding algorithms that create a hashmap with tile coordinates for an actor to follow. I used it in a scrapped RPG prototype and it worked fine.

Anyways, Goldspace is an amazing game with a great vibe, which I want to play more in my spare time!
Are you setting up a Steam Early Access page any time soon? The project's at a very mature stage...

« Last Edit: April 24, 2020, 03:37:53 pm by dtishin »

merrak

  • *
  • Posts: 2738
Great read as always!

Glad to hear my garbage collection woes walk-through was helpful :D

The audio bug is weird. I wouldn't have thought graphic glitches would be related. That's good to know for future reference, though. I've had issues with audio meta data before, but it's always created an issue that made it obvious where the problem was.

I got my nephews to test my GBJam game (Towers of Vallas), probably back in September. So far they haven't written back. I might have better luck with a few local people I've met that are interested in game development, but I don't see that happening right now with all of the quarantines.

- Enemy AI: I noticed the guards simply follow a direct line to the player, which means they'll hit the wall and start to slowly slide against it (which means I can safely kill them while they are moving from around the corner). Do you have issues implementing the AI Tools extension? It has a choice of pathfinding algorithms that create a hashmap with tile coordinates for an actor to follow. I used it in a scrapped RPG prototype and it worked fine.

I actually don't know what the practical upper limit on the graph size is for real-time pathfinding. The limit wouldn't be a show-stopper, but getting around it would make things much more complicated. I think Bombini and I talked about it at one point, but I don't remember what came out of the conversation.

If I do remember correctly, Bombini had set up a network of waypoints. The last time I played the game, it seemed to work well. Maybe a few more are needed to help the enemy get around that corner?

Bombini

  • *
  • Posts: 1400
What can I say - a wonderful experience!
Well thank you so much for the nice feedback :)
Its very appreciated! Also merrak thanks for your comment :)
Regarding the feedback:

- Navigating the Main Menu with arrows (in addition to WASD).
I had that in but it confused players with game pad (because then you have double functions)
- Use Esc to get back to the root screen of the main menu.
Which exact point are you referring to? I have it in almost everywhere.

- Maybe show controls after start of a new game, not before the main menu? It's very easy to skip the splash screen, then I explore the menu and clean forget what I saw just before it.
I might add that but it needs a bit more work (players could change their controls before) but good point.

- The Credits screen is illegible due to overlapping text strings.
This is fixed in 0.528

- Maybe don't reset the main music theme when I get back to the root of the main menu from a submenu.
Also a nice to have thing i might add.

- When the Shop window is open, use Esc to close the shop window first (not open the main menu), or add a big on-screen button for closing the shop window, which could be selected by arrows. I saw a red cross in the top right corner but I couldn't figure out how to press it.
Just moving right will select the cross :) I will work on it.

- Separate the icon of the weapon from the life bar by more space or a vertical line of sorts. Otherwise (especially with the green colour of the health bar) it looks like charge level of the weapon. Or at least maybe make the health bar orange?
Mabye i just at a heart icon:


- Enemy AI: I noticed the guards simply follow a direct line to the player, which means they'll hit the wall and start to slowly slide against it (which means I can safely kill them while they are moving from around the corner). Do you have issues implementing the AI Tools extension? It has a choice of pathfinding algorithms that create a hashmap with tile coordinates for an actor to follow. I used it in a scrapped RPG prototype and it worked fine.
A very good point. And yes it would make the game so much better but...i decided at a certain point not to add more features.  Its sounds maybe weird but this game already creates so many weird bugs that i didnt want to add another system. I am thinking about having that in a successor  where i would streamline and kick out some features and focus on that as well.

Thanks!

« Last Edit: April 27, 2020, 05:26:03 am by Bombini »

1MrPaul1

  • *
  • Posts: 1285
Hi, didn't checked the forum for a long time. ANd realized that you re changed the name, and if to be honest, the old name was better

Bombini

  • *
  • Posts: 1400
Thanks for the input. It didnt fit the game anymore. I think i will still do Space Pirate with this engine but this is another story ;)

Bombini

  • *
  • Posts: 1400
hi guys,
quickly sharing version 0.532 here because it is a very stable build with a lot bug fixes just in case you haven tried it and want to.
Main fixes...went through all text labels because the newer Stencyl version changed how it renders fonts and all were off, removed a lot edge cases where players could get stuck, worked on the difficulty of some enemies like the grenade launchers, game remembers fullcreen and your game pad now, did a lot fixes on the starmap which works how intended now and so many more :)



CHEAT Mode:
Press W,A,D,SPACE to active or deactivate the cheat mode.

This will give a you:
A lot of credits
20 skill points to spend.
Laser Weapon (3) Maximum is 5
 Health (10) Maximum is 20

It also allows you to jump levels. Press 1 to go to mission 1, 2 to go to mission 2 and so on. Press F1 to got to mission 11, F2 to mission 12 and so on. There are 24 max. You will not understand the story if you do that but its a nice way to check the different levels.

« Last Edit: May 24, 2020, 11:41:27 pm by Bombini »

yoplalala

  • *
  • Posts: 1632
Hi Bombini. I tried to download your game but the link doesn't work anymore ... :(

Bombini

  • *
  • Posts: 1400
Hi yoplalala,
fixed the link above with the latest build.
I removed all last 40 versions form my server last week ;)

Cheers!