GoldSpace (Working title: Space Pirate)

Bombini

  • *
  • Posts: 1351
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: 1589
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!




Hanging out in the Chat:  http://www.stencyl.com/chat/

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

Bombini

  • *
  • Posts: 1351
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: 1351
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 »