The laser beams on the enemies look cool.
10 OCT 2020:

Cruisers now give a little bit of warning before firing their lasers. I think the animation turned out really well!
When the "pincers" are open it reminds me of this Toe Biter I took a picture of during one of my Iraq deployments:

(Fun side note: You would not believe the bugs in Iraq. They're all HUGE! Camel spiders the size of your hand. Ugly mole crickets. Toe-Biters the size of soda cans . . . )
I'm still adjusting the Cruiser firing animations and behavior but I feel it's definitely on the right track.
Then later this week I found a rookie mistake I was making. I corrected it and ended up reducing my code by 200 lines. Woot!
17 OCT 2020:

Lots of progress to report on!
- I fixed the "wave" system. More waves of enemies fly in every x number of seconds (determined by the difficulty level). This gives the player more variety of enemies to fight at any one time, but also ramps up the challenge significantly. I might have to rename Hard mode Brutal!
- That being said, I did fix an issue with the battleship boss being too hard. You can now shoot it with the green laser to permanently stop it in its tracks!
- I fixed the "bullet wiggle" that was noted on the battleship projectiles. It's a little hard to see due to the low framerate of the GIF above, but the new bullet animations are slippery-smooth!
- The icon-based system has been totally removed. Now, the only way to trigger a Scrapstorm is to collect all the scrap.
- Cruisers don't overlap each other as much when they warp in.
- Player ship now fires all weapon types from the center of the ship.
- Fixed an issue where the bomber shots would sometimes "idle" on screen and not do anything. Now they track your every movement flawlessly.
- Worked on special animations for when enemy fighters get shot down.
A lot of this week's fixes and improvements were suggested by players like you, so please feel free and continue to leave feedback. Every word counts! I keep a spreadsheet of all the feedback given to me (items highlighted in green have been fixed):

24 OCT 2020:

This week focused mostly on the green laser that disables enemy ships (much like the Ion Cannon in Star Wars).
I used BlastFX to make that, plus some other cool explosions that you'll see in the next demo.
Speaking of the next demo, look for it next Friday or Saturday! The game is slowly getting better and I can confidently say that this version is more fun than any of the others!
Keep the feedback coming! Scrapship has a dedicated Discord channel now too!
Have a good weekend everyone!
31 OCT 2020:

https://40wattstudio.itch.io/scrapship-demo
But first, let's deal with the elephant in the room.
The planet.
This is the first demo to feature the new planet background graphics that I made in Unreal Engine 4!
Besides looking a lot cooler, it also gives greater contrast and makes for a better title screen.
A brief list of improvements from the last demo:
- Fighters can be shot apart piece-by-piece.
- Cruisers have a brand new beam attack and animation.
- Explosion and stun animations.
If you give it a try, please let me know what you think!
https://40wattstudio.itch.io/scrapship-demo
Have a good rest of your weekend!
7 NOV 2020:

14 NOV 2020:

-- Enemy cruisers can now be destroyed piece-by-piece!
Equally important is that I now have a better method for accomplishing the piece-by-piece effect that uses less code and disk space. I should be able to make in-game objects destructible much faster now.
Also, instead of using alpha brushes or booleans to deform the 3D objects, I now manipulate the vertices directly to give it more of a "twisted metal" look.
Thanks for reading and have a great weekend!
https://40wattstudio.itch.io/scrapship-demo
21 NOV 2020:



28 NOV 2020:
The latest demo of Scrapship is now available for download!

- Better battleship boss (larger and looks more 3D)
- Cruisers can be destroyed piece-by-piece.
- Better weapon graphics
With this year coming to a close (thank God!) I've been giving a lot of thought to the future of Scrapship:
- Numbering the demos is getting a little silly at this point. All future demos will just be titled "Scrapship Demo" with distinctions for Alpha, Beta and Final versions.
- Have an idea for Scrapship? The game is still in its Alpha stages so feel free to mention anything you'd like to see!
- Demos will still be released towards the end of each month.
- Watch for the final game sometime in 2021!
5 DEC 2020:

Shooting at the battleship now shows different levels of damage!
To create this effect, I divided the battleship into 11 different segments, each one having a default state and 3 damage states. It's basically the same principle as the flipbooks you may have played with as a kid.
As a result of this segmentation, the gun that fires can now be destroyed, which should make the battleship fight a little bit easier.
The bomber now has a new pattern and greater contrast. The old one was very hard to see against the black space background.
Segmented damage for the bomber is currently in progress.
BEFORE:


Finally, the next Scrapship demo will be released early! Watch for it sometime before December 17th.
In the meantime, the latest build can always be played here.
12 DEC 2020:

https://40wattstudio.itch.io/scrapship-demo
(No, this is not the final Scrapship demo. Still much work to be done in 2021. Hey, that rhymes!)
This time around it is available for both Windows and Mac OS.
My goal is to completely finish Scrapship. The only thing that might delay this is if my regular job has me travel too much away from my gamedev computers.
Views and downloads have tapered off significantly -- which I'm honestly not surprised about. Top-down space shooters are an over-saturated game genre and hard to generate interest in. Frankly, I consider myself blessed to have had any downloads at all. I also suspect that some might be suffering from what I would call "Demo fatigue". Unless there are major updates, there isn't much point in playing every single demo release.
So with that being said, I'm going to try a slightly different strategy in how I work on Scrapship:
Instead of holding myself to a somewhat arbitrary goal of one demo a month, I'll only update the game when significant progress has been made.
I will still do the weekly Devlogs you are reading here to show that I'm still active.
And of course you can follow me on Instagram for my progress in Scrapship and other game dev projects I have going on in Unreal and Blender.
As this is my last Devlog entry for the year, I'd like to finish off by sharing a screenshot from the very first Demo back in February . . .

. . . and this screenshot from the latest demo in December . . .
Lots of progress has been made and I look forward to sharing the final result with you next year!
Thanks for reading and Happy Holidays!


That's right, I've re-skinned Scrapship to bring you this end-of-year version where you can shoot up 2020 to your heart's content!
I'm only going to leave this version up for ABOUT ONE WEEK, so if you want to play it, please click here and download the SCRAPSHIP2020.ZIP file for Windows.
And just one more thing . . .
2 JAN 2020:

9 JAN 2021:
This week I found the primary reason for the lag: Nested loops. One block of code alone was checking around 600 calculations. Thankfully I found a way to reduce this significantly by re-ordering the code.
With that issue out of the way, I also started work on a "new" enemy. The shield fighter. There were a few early demos with this enemy, but this new version will be completely redesigned and destructible. I'm really excited about this one because it will add a new level of strategy to the game!
16 JAN 2021:


No, Scrapship is not getting a TRON makeover . . . but it might be getting a makeover.
I'll explain:
The past week has been very busy with my regular job. There is still plenty of time in the day to work on Scrapship . . . except that now the game is getting to a point where even small percentages of progress are taking much longer to finish than I anticipated.
It's not hard to see why: Scrapship is now over 5000 lines of code that could definitely be organized better. I now probably spend more time playtesting the game than actually fixing it or making significant changes.
So I've been thinking to myself: What if I start "fresh"?
If you look at the two pictures above, that's basically what I did with my Tron tank I modeled in Blender. I made it the first time (top picture) -- it looked okay, but not great. But I learned from my mistakes that time to remake it as you see in the bottom picture. I think we can all agree that the bottom version is much more accurate.
"Starting fresh" on Scrapship does NOT mean starting back at 0. While the code would be re-written, it would be done in a much more logical way that would prevent a LOT of the issues I'm encountering now. Some code might even be transferable as-is.
Graphics, music and audio would all be pretty much unaffected.
In particular, I would be able to solve the following problems:
Framerate / Game loop iterations -- I hadn't thought about it too much, but too much background-math and file-loading can really can bog things down. Nobody likes to play a game that lags.
Aspect Ratio -- I have much to learn about this still, but it is important to make sure the game looks good at different screen sizes.
Debugging -- This one is HUGE! I could have saved so much time if I had better built-in debugging tools.
The other side of the argument is that I could stick with what I have and "make it work", but that would be like trying to "fix" the top Tron tank model to look more like the bottom one.
I think the analogy makes sense. I'm not 100% decided yet, which is where you come in. What are your thoughts? What would you do in my situation? Have you ever started a project and realized over halfway through "You know, I could do this sooooo much better if I just started fresh?"
Whatever I decide, be assured that Scrapship is not going to be abandoned!
I have had to start an 18-month program from scratch because I made it so poorly that it was no longer functional. It feels bad, but ultimately it was the right thing to do.
The new version of the game was only similar to the old one in spirit, but it actually got finished, and I guess that's the main thing at the end of the day.
I'd suggest you do try and start again, it's just a learning experience after all.
it's hard to not get emotionally attached to your work, but if this is the correct move then you have to push past that feeling.
That is one element that probably distinguishes accomplished game developers from unaccomplished ones: An accomplished game developer will make the hard decision to start from scratch but keep going to completion . . . but the lazy one will just throw in the towel and call it quits.
Like you say, finishing the game is the ultimate goal and it's awesome to hear that you were able to finish the game after a rebuild. (Which game was it, by the way?)
This could probably be a great Youtube topic for your channel! I'd like to hear the story behind your game restart.
As for me, I've already started rebuilding and have a much nicer game screen now that allows me to see debug information. As I suspected, there is a lot of code I can just copy-and-paste over, but at the same time I'm making sure the logic behind it all is a little more clear.
Thanks for your story and comments!
The game ended up being Upload Soul.
https://thesneak.itch.io/upload-soul
I do touch on this story at the start of this video!
23 JAN 2021:

As I mentioned in my last week's post, I had a major decision to make and this week I made that decision:
Starting fresh!
Surprisingly, I got quite a bit accomplished and I feel that things are moving in a very promising direction.
Here are the most important things I got done:
A NEW ASPECT RATIO
Scrapship will now use the 16:9 Aspect Ratio (instead of 1:1). The game will still take place in a square-shaped arena, but the far left and far right parts of the screen can now hold all my debugging variables, as seen in the partial screenshot above.
THREE SCREEN RESOLUTIONS
Instead of a screen sized 1000x1000, the options are:
1280 x 720
1920 x 1080
2560 x 1440
I think those three will be adequate for most players. Will one of those work on your computer? Please let me know in the comments!
BETTER SCALING
Most of my time was spent here. In previous demos of Scrapship, going fullscreen resulted in a very stretched and pixelated image. I've since learned a LOT about proper scaling techniques in video games. There is still a lot of testing I need to do here. I have code that will allow for automatic scaling, but it's very math-intensive (lots of sin and cos). If it bogs the game down too much, I'll have to look at other ways to achieve the same effect.
========================================
My strategy this time around is to make sure the menus, screen resolutions, scaling, etc are all working as intended before putting in the actual gameplay. I like to think of this as the "canvas" for the game. You can have a great game, but if the screen the game is played on is not optimized, it's not going to look very good. By analogy, you could be a good painter like Da Vinci or Caravaggio, but if you suddenly have to paint the Mona Lisa on a canvas the size of a postage stamp it's probably not going to look as epic as you imagined.
One of the biggest things I've had to get used to this time around: Referring to screen positions as percentages instead of absolute values. If you place an object at coordinate 100, 800 and then resize the screen, things will look out of place. But if you make that coordinate a percentage relative to the screen size, then things fall into place where they're expected.
Thanks for reading!
Play the old version of Scrapship here.
30 JAN 2021:
Scrapship got its first donation!
This is really exciting for me and definitely motivates me to see the game through to completion!
One of the most important things I learned this week: Scaling works . . . but it also causes the image to "tear" a little and look a bit more jagged than usual. Scaling also sets the x and y coordinates to the center of the sprite instead of the upper left-hand corner. Basically this means that scaling will make hit box calculations much more tedious and complicated to write in code. So with that in mind, I still plan on using scaling, but only in specific instances.
Automatic monitor resolution: I also learned that QB64 has a command that returns the width and height of the current display. Using that, the game now automatically detects your monitor resolution and picks the most applicable window that will fit the screen! I tested this with my BenQ monitor at 2560x1440 and then tried it on my smaller Sceptre monitor at 1920x1080.
A proper pause button: The original pause button stopped the game -- and that's it. The new one I'm working on shows a "Paused" indication while still showing all the frozen action on screen. Eventually I'll integrate a menu system of some sort so that the player can change things like sound and display settings mid-game.
Hide / unhide debug tools: Allows me to see the game as the player would see it, without all the variables cluttering the side of the screen.
Like any game, Scrapship uses a lot of pictures in various formats and I'm also learning a lot about how to display graphics as "cheaply" as possible.
Imagine you need to make a black box with a thin white border. I did some experiments with Aseprite:
A 1280x1280 .jpg of a black box with a white border -- 33kb.
A 1280x1280 .png of a transparent background with a white border -- 5.8kb
A 1x1280 .jpg of a vertical white line and a 1280x1 of a horizontal white line -- A dirt cheap 452 bytes!
So definitely look at all your options! I was surprised to see that the first .jpg was more "expensive" than the .png.
Thanks for reading!
Play the old version of Scrapship here.
6 FEB 2021:
Using all of the things I've learned in previous weeks, I now have a really good "canvas" for my game. There are two modes. Game Mode shows a narrower windowed screen where all the debug information is turned off by default. This is how you will play the game. Then there is Debug Mode which is wider and allows me to see the values of different variables in real-time. As you can see in my Youtube video above, the sprites scale and reposition correctly, regardless of the screen resolution!
I've also made progress with a text-centering function. In all the previous demos of Scrapship, the text was never truly centered, just estimated based on how it looked.
What's the small spaceship on the left for? That's a reference image I imported to make sure the scaling was working properly. That sprite measures 64x64.
Thanks for reading/watching and have a great week!
Play a demo of Scrapship here.
13 FEB 2021:
