itch.io Spring Selects Series A
On Sale: GamesAssetsToolsTabletopComics
Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

SCRAPSHIP (Still going!)

A topic by 40wattstudio created Feb 16, 2020 Views: 17,794 Replies: 399
Viewing posts 236 to 255 of 303 · Next page · Previous page · First page · Last page

31 DEC 2022:


- Satellite now breaks apart into collectible scrap. This is good progress towards getting Level 1 finished!

- Shield fighters, bombers and cruisers also break apart into collectible scrap.

- Despite some business trips that have kept me away from my Desktop, this has been a productive year for Scrapship! I was looking at this year's devlogs and the game is showing improvement in just about every area, but primarily the enemies (some of which had to be redesigned once or twice).


QUOTE TO START YOUR NEW YEAR:

"The way to get started is to quit talking and begin doing." -- Walt Disney


Thanks for reading and have a great rest of your year! Make 2023 great!

7 JAN 2023:


- One of the levels for Scrapship will have a black hole as the background. First I tried Blender — placing random white stars and then rotating the image at high speed. It looked okay, but not chaotic enough. Next I tried Embergen which you see above. They had a hurricane template that I adjusted to look a bit more like a black hole. I don’t think it’s there yet, but it looks decent. What do you think? 

- For the very first level, I started to create a routine that would allow the backgrounds to be procedurally generated. This way the earth and moon won’t always appear in the same place every playthrough. 

- I fixed a bug where the scrap image from the satellite was not keeping its form (you can see this bug in last week’s gif). 

- I’m on a business trip the next 2 weeks, so I won’t have much in the way of updates, but I’ll still update this devlog as I always do and leave you with a . . .

QUOTE OF THE WEEK:

“The only way around is through.” — Robert Frost

Thanks for reading and have a great rest of your week!

(+1)

14 JAN 2023:

Still on my business trip so no real Scrapship updates but I have been reading a couple books about procedural generation.

At a very high level, procedural generation works like Mad Libs.  The human user comes up with the parts of speech to make the story (hopefully) hilarious. But coming up with the parts of speech could just as easily be generated by a computer program that generates random parts of speech. 

Though most talk of procedural generation revolves around RPGs and roguelikes, I’ve been thinking about how procedural generation would apply to a shmup like Scrapship. 

Your average shmup has pre-scripted waves of enemies. This is good if you want a predictable experience for people who like to chase high scores, but not very good if you are looking for replay value. 

It’d be very easy to make Scrapship just throw random enemies at you from random spawn points, but that could all too easily turn chaotic. There could be too few enemies . . . or too many. Or maybe they all spawn from the same region and start overlapping each other. There’s a lot that can go wrong with procedural generation. So this is why the concept of “guardrails” is important. Procedural generation works best when a HUMAN sets limits on what is and isn’t allowable. Without these “guardrails” it is all too easy to run into the “10,000 bowls of oatmeal” problem — lots of variation, but not much meaningful variation — one bowl of oatmeal is not much different from  the thousands of other bowls of oatmeal.

The ideal enemy generator for Scrapship needs to fulfill these requirements:

Spawns enemies appropriate to the player’s current performance. 

Spawns enemies in such a way that there is little to no overlap.  

Spawns enemies in quantities that won’t cause the game to lag. 

Occasionally does something completely random to keep things interesting. 


I already have a system in place that addresses most of these things, but another problem with procedural generation is that it is impractical from a human standpoint to vet every single possible combination. Some developers handle this by making an AI that plays the game and records data from each playthrough. This is a great way to see if some levels are too easy or too hard, especially if you don’t have a lot of human play testers. 

Before going on my business trip, the biggest problem I was encountering was enemies vs. lag. As cool as it would be to spawn 3 battleships against the player, battleships are large images and take longer to draw to the screen than smaller enemies. And that’s before factoring in large background images.

Below are some possible ways to handle this problem:

- Limit the number of large objects that can be on screen at any given time.

- Spawn enemies relative to the current framerate or expected framerate. 

- Scale down enemies and/or background objects so they draw to the screen faster.

- See if there are any ways to make the graphic files smaller (jpg vs png, cropping the image, deleting metadata, etc). 

What are your experiences and thoughts about procedural generation? Does your game use it or have you played a game that made good use of it? Let me know in the comments below!


QUOTE OF THE WEEK:

“Always deliver more than expected.” — Larry Page

Thanks for reading and have a great rest of your week!  

(1 edit) (+1)

21 JAN 2023:

Just got back from my business trip last night! 

Since I wasn't able to work on Scrapship, I spent some time learning more about QBASIC and basic computer concepts, especially how "Random" Number Generators work. Why is "Random" in quotes? Because computers are actually just using PSEUDO-Random Number Generators -- run any RNG long enough and you'll start to see little patterns here and there.

In a nutshell, most RNG programs take a Real World value, like time and then perform an operation against it to generate a random number. 

This ties into Scrapship since the game makes heavy use of "random" numbers. As I soon found out, not all "random" number generators are equal! In some cases you might even be better off writing your own!

What you see above is called a RANDOGRAM or a histogram that tracks random numbers. This is a visualization I made to see how the QB64 RNG looks like.

It has a nice "random" static look to it and the colors are almost equally distributed. 32,000 instances of each color (red, blue, green, purple). 

Now if we applied this to Scrapship, that would mean that if I spawned 4 types of enemies, the spawn-order would have a lot of variance, but ultimately each type of enemy (e.g. shield fighter, bomber, cruiser, battleship) would spawn about the same number of times. If you wanted an output that was more irregular you'd have to tweak the original RNG or make your own.

I had mentioned earlier how I had been reading about Procedural Generation in game design. That, coupled with my experiments in RNG led me to try creating random maps -- possibly for a future game???

Below you can see my early attempt at procedural map generation:

 

It looks pretty good -- but there are still some straight lines that are a little too obvious. 

When I tried to do this with the built-in RNG from QB64, it looked awful because -- as mentioned before -- it tends to distribute evenly. You can render a thousand randograms and you'll almost never see "slabs" of similar colors next to each other. So if you want to make a continent made out of pixels, you got to be creative.

If you're interested in Random Number Generation I highly suggest this website that has some excellent articles to read and tech demos to try out!


QUOTE OF THE WEEK:

"Timing, perseverance, and ten years of trying will eventually make you look like an overnight success." -- Biz Stone

Thanks for reading and have a great rest of your week! 

(+1)

Hi,

it's quite incredible how you kept focus on your game for so long, I saw the first posts compared to what you got now, it has been a long way ! Congratulations for that.

Regarding procedural generation, I don't know QBasic, you'll get great results using Perlin noise, even if you don't have ready-to-use library or code, it's not that's hard to implement. It generate very nice smooth patterns full of clouds that can be turned into mountains and water for a on-the-ground game (exploration/mining, RPG, whatever), in space like your game, you'd to decide which level is what, for instance you can generate value between 0 and 9 (after rounding up), each one could be bonuses, resources and some enemies.

It's also pseudo-random, so the same seed will always produce the same pattern, useful for testing.

Here is a little example of what I've made years ago in C# & MonoGame using hex numbers instead of tiles for debug (with SharpNoise library):


Like the quotes you add to your posts ;).

Cheers.

Hi Infini-Creation, thanks for the kind words and feedback! 

Perlin noise does sound intriguing and I've seen it mentioned quite a bit when I was researching procedural generation. Simplex noise is another type I remember being talked about. 

Your InfiniteTileMap looks like an efficient tool for debugging. Not sure if you are in the process of making any games, but I wish I had made more debugging tools like that early on because it saves so much time troubleshooting problems as the project gets larger.

(+1)

You're welcome ;).

There are a few algorithms for noises, Perlin and Simplex are two of them, I guess there is no need to fully understand everything behind for using them, and implement them may not be too hard to do if no one already done for the language you use, in C++ there is quite a huge probability some already exists.

It was in fact not fully debugging tool, then numbers are just to have a quick view of what was generated, then replaced by tiles gfx, it become a nice world to play on like below when it is partially done:


here with some "developer's assets".

The strength of using noise allow to have an actually infinite worlds with very tiny memory footprint as the same seed generate the same map and "moving" is just generate a new map with a little shift in each step to one direction.

I guess this is experience talking, as a professional software engineer, I did lot's of such small step to move forward with the least possible issues (it's like building a house, starting by foundations which have to be strong) and I'm always interested by making game but never really get fully committed to I've only started doing some core stuff, until now maybe, Godot is very great tool and simplify a lot's of annoying low-value work.

28 JAN 2023:


This week was all about the Cargo Ship boss enemy! 

Originally it was orientated horizontally but I quickly realized a couple problems with this:

  • It would be strange to have the cargo ship moving left/right when the  player is mostly moving up/down.
  • Too much lighting made the 3 guns harder to see. 
  • Having the guns rotate to follow the player would be a headache to program. 

So instead, I tried a vertical orientation, muted the colors of the cargo ship and changed the colors  and positions of the guns. 


I'm still working on it, but I think this looks much better and will make for a more interesting boss fight.  These 4 guns will be stationary, but the cargo ship will be able to move around left and right while still moving forward. Right now all the guns fire the same type of projectile, but I'll probably change that a little. 

IN OTHER NEWS: 

Hopefully I'm wrong in this, but I'll probably have to look for a new job in about 2 years. As a result, one of my goals is to finish Scrapship before that happens. I'll be trying really hard to finish it this year, but even if it doesn't it's almost guaranteed to be done the year after that. 

So time is very precious right now. I've noticed that I'm the sort of person that easily gets sidetracked -- ESPECIALLY when it comes to Youtube. But just this week I came up with a couple of productivity hacks that I think will help me to focus more:

  • I now use 2 web-browsers and not just one. Firefox is for "lazy me", so lots of entertainment-related bookmarks and accounts. But now I also have the Vivaldi browser, and this one is exclusively for "busy me". This one has all my gamedev bookmarks and accounts. The idea is that I will only have one browser open at a time. So when Vivaldi is open, I'm not seeing any "entertainment" content that might get me sidetracked. So far it's worked really well!


  • To further encourage myself to be more productive, I made it easier to start up all the content that I use for "busy me". I did this by creating a batch file that automatically opens the Vivaldi browser to my 40wattstudio email, itch.io dashboard and 40wattstudio YT account with all my gamedev-related subscriptions. It even automatically opens up QB64, which I am using to make Scrapship. Less time clicking and typing = more time programming!

On the side, I've been slowly teaching myself how to program in C++, mostly using the YT tutorials by Codebeauty. Having tried python and java, I finally decided to learn C++ due to its long history and use in programs like QB64 and Unreal Engine.

QUOTE OF THE WEEK:

"Be undeniably good. No marketing effort or social media buzzword can be a substitute for that." -- Anthony Volodkin

Thanks for reading and have a great rest of your week!

4 FEB 2023:


- Scripted the movement for the cargo boss enemy.  Possible directions of movement are up/down/left/right and diagonal in four different directions. 

- Fixed a bug where the player position would shift right after being hit by the battleship.

- Fixed some scrap spawning/scrolling issues.

QUOTE OF THE WEEK:

“I don’t believe in luck. I believe in preparation.” — Bobby Knight

Thanks for reading and have a great rest of your week!

11 FEB 2023:

- Scrapship is over 11,000 lines of code. There's a lot of it that can be consolidated, such as the battleship projectile hit detection which I fixed this morning. 

- The cargo ship can damage the player now, but there is a bug where it doesn't always register a hit. 

- Once I get that bug fixed, both the battleship and the cargo ship boss will be able to use some of the same code.

- The past few months there has been an elusive bug where the game crashes after warping to the next sector. I have it narrowed down to the "Scaling Earth" subroutine. Pretty sure it's because a number is going negative when it needs to only be positive for the math to work.

QUOTE OF THE WEEK: 

"A year from now you may wish you had started today." -- Karen Lamb


Thanks for reading and have a great rest of your week!

18 FEB 2023:

Scrapship has been in development for 3 years now! I started on 16 February 2020 and have been working on it daily ever since (excepting business trips, vacation and illness). How have I managed to stay motivated to work on this project for so long? I just do a little bit -- 1 hour -- every day. Some days or even weeks I feel like I'm making no progress, but others I feel like huge breakthroughs are being made. Ultimately, I have faith that the end result will be worth the effort. And I've certainly learned A LOT about game development along the way.  The game is certainly getting closer to done, slowly but surely. I'd like to finish this year . . . but I'm also not going to rush it. 


- Made an animation where the cargo ship guns power up to indicate that they're active. 

-  As seen in the gif a couple posts above, the cargo ship's guns were all red. Now, guns that are active are green and only inactive guns are red.  This also helps with the color contrast -- a red projectile coming from a green gun looks much better than a red projectile coming from a red gun. 

- Cargo ship can damage player

- Fixed the bug where scaling the size of the earth was causing the game to crash (a variable was resetting to true when it needed to stay false). 

QUOTE OF THE WEEK:

"You don't concentrate on risks. You concentrate on results." -- Chuck Yeager

Thanks for reading and have a great rest of your week!

(+1)

25 FEB 2023:

Got a LOT done this week! Yesterday I worked off and on most of the day. 

- As I write, I'm in the process of re-rendering the opening animation. This time it will take up the whole screen and not just a square portion of it. This will be much more immersive. Only downside is that the .png files are pretty large, but maybe I can trim them down some to make it more practical. 

- Speaking of trimming down .png files, I cropped all of the images for the battleships and carriers. These were greatly impacting load times. A single battleship graphics folder would be 15MB -- but after cropping the files I got it down to 3MB. Load times also decreased which is excellent. 

- The player can now destroy the cargo ship guns. But I still have to make the destroyed versions in Blender and some explosion effects in Embergen. 

- Also re-organized and simplified some of the code, especially for the player bullets. 

- How convenient, Blender just got done rendering, so here's a gif of the new opening animation! The game is meant to be played in a widescreen format.

- I have a business trip all next week, so probably not much in the way of updates next Saturday.

REMINDER: It's almost the end of the month! You've been working hard! Make those 1s and 0s happy! Back up your harddrive!


QUOTE OF THE WEEK:

"He who is not courageous enough to take risks will accomplish nothing in life." -- Muhammad Ali


Thanks for reading and have a great rest of your week!

4 MAR 2023:

No updates as I was on a business trip this week. And my back hurts (again). I'll elaborate more next week.


QUOTE OF THE WEEK:

"Stay hard! -- David Goggins


Thanks for reading and have a great rest of your week!

11 MAR 2023:

It feels good to sit again!

I promised last week to elaborate, so here goes:

If I were in an RPG and there were stats for "Back Strength" or "Back Health", I'd probably have stats like 40 (out of a possible 100). My posture sucks most of the time and it doesn't take very much for me to pull a muscle or something that messes it up for a couple of days. 

Now I don't use the standing feature very often, but I am grateful that I had the foresight to buy a standing desk (pictured below).

Problem was, even standing still was sometimes painful. So this time I went to a chiropractor because I really couldn't figure out what I did to hurt my back. Apparently my lower spine was torqued a bit to the left. 

After a couple visits and days off I started to feel better, thank God. So because of that, I was able to get back to work on Scrapship!

Updates for this week . . .



- Scrap can move from right to left.

- Cargo Boss guns can be destroyed

- Cargo Boss can be destroyed

You'll notice that there are still some things missing: The guns need explosion animations and the explosions in general need to be reworked so they're not all the same. I saw that Embergen (the software I use for explosions) will be moving to version 1.0 pretty soon, so hopefully I can take advantage of that to make more cool effects for blowing things up. 

In Other News . . .

There won't be any updates for Scrapship until 7 April. Yep, another business trip. This time I'm going to South Korea, so that should be interesting! I might still do the weekend update, but also maybe not . . . it depends on my internet situation over there. So if you don't see my devlog get updated the next few Saturdays, don't panic! I'm just busy with work is all. 

QUOTE OF THE WEEK:

"Small is not just a stepping-stone. Small is a great destination itself." -- Jason Fried

Thanks for reading and have a great rest of your week!

18 MAR 2023:

Almost forgot it’s Saturday! 

I was able to work on Scrapship a little in the days before I left for South Korea:

- Level transitions now work all the way from level 1 to level 5. Even the music transitions correctly. This is a pretty significant step towards getting the game done. 

- Scripted one of the background images for the final boss fight.


In other news . . . So yeah, I’m in South Korea now for a business trip. 18 hours worth of flights just to get here. But totally worth it (I think travel is one of the best ways to spend money). 

My hotel room has a flat screen TV almost the size of the mattress and a DESKTOP computer in the room. Of course the IT tech in me is saying , yeah probably not a good idea to use the Desktop computer, who knows what it has installed on it (keyloggers, etc). Besides, I bring my own computers.

Speaking of computers, this brings me to an interesting thought: How much do you think about the hardware that your potentials players use? Unreal Engine 5 looks bloody amazing, but one thing that does scare me away from it is the fact that it requires such a beast of a computer just to develop or play games on. If you’re targeting players in countries that don’t have the income to buy the latest graphics cards then you might be better off developing in Unity or Godot. Surprisingly, I read that electronics (especially phones) are more expense in South Korea than in the US. 

QUOTE OF THE WEEK:

“Set your goals high, and don’t stop till you get there.” — Bo Jackson

Thanks for reading and have a great rest of your week!

25 MAR 2023:

Weekend 2 of 3 of my Korea trip, so no Scrapship updates this week.

QUOTE OF THE WEEK:

"Live out of your imagination, not your history." -- Stephen Covey

Thanks for reading and have a great rest of your week!

1 APRIL 2023:

Weekend 3 of 3 of my Korea trip, so no Scrapship updates this week.

South Korea has been a blast! Last week my coworker and I found a PC cafe and played some Starcraft (when in Rome . . . ) and some Overwatch 2. A lot of the games on the PC's required a Battlenet account to play.

Looking at other players in the cafe, I saw that they played a variety of games, not just RTS or FPS. Some were playing a soccer game of some sort.  

On the metro, just about everyone is staring at their phones. One guy was watching a playthrough of some FPS and I saw a girl playing a Candy Crush-style puzzle game. I think it's fair to say that mobile gaming is still alive and well. 

On TV, I found an eSport event going on (RTS), but I also found a channel where two players were playing Go (basically Asian chess with black and white stones). This just goes to show that people like the classics just as much as the newer stuff. 

QUOTE OF THE WEEK:

"Failure is success in progress." -- Albert Einstein

Thanks for reading and have a great rest of your week!

8 APR 2023:

Finally back from my S. Korea trip -- and the jet lag sucks! It was 27 hours from the time I left my hotel to the time I walked in the front door of my house.

In spite of that, I was happy to sit back down to Scrapship and get going on it again. This week was mostly bug fixes and minor adjustments, but there were a lot of them:

- Fixed bug where earth would vanish when it was still on-screen

- Fixed bug where music restarted every time volume adjusted

- Music files stop and close when game ends

- Commented out scaling code for ships and explosions

- Fixed game tips

- Fixed opening animation graphics

- Adjusted player launch sequence (between levels)


As fate would have it, I have another business trip starting next week -- Ft Drum, New York ( at least it's not the middle of winter). I just can't seem to get a break, can I? Fortunately it's only for a week and a half and then HOPEFULLY my schedule should be free for a little while. 


QUOTE OF THE WEEK:

How you do anything is how you do everything.


Thanks for reading and have a great rest of your week!

15 APR 2023:

- I use Embergen software to do all the explosion effects in Scrapship. They just launched version 1.0  a couple weeks ago, so I upgraded my version of it and started familiarizing myself with the new features. One of the biggest things missing in Scrapship right now are different explosions. I have a couple to work with, but obviously it'd be nice to have more variety. And now that I know how to use sprite sheets, I'm hoping I can have that variety with relatively little cost in game performance.

- So far I have 2 more scheduled business trips this year (4 weeks), so that's obviously going to cut into my development time but I'm hoping I can still get the game done or close to done by the end of the year. 

- I have a question for all of you: Do you prefer being able to play a game as it's being developed or do you prefer waiting until a game is completely finished?


QUOTE OF THE WEEK:

"If you don't have a strategy, you're part of someone else's strategy." -- Alvin Toffler


Thanks for reading and have a great rest of your week!

22 APR 2023:



Whew, glad that uploaded! It was 2.986 MB and the limit is 3MB!

- As you can see, I've been working with Embergen 1.0 this week.  Sorely missing from the game at the moment are explosions for minor hits on enemies. The above explosion comes pretty close to what I'm looking for although the in-game version will be much smaller. The actually rendering and exporting was pretty easy, but -- as before -- the hard part  was figuring out how to get the exported frames to look exactly like the viewport frames. 

In my RENDER--> Export settings I had to change my Alpha Blending Mode to Straight Alpha to get the right look. 

- I've found that 20 frames of animation is sufficient for these small explosions. Five frames show the explosion going from nothing to full blast. The next 10 are to ensure those pretty explosions stay on screen long enough for the player to see them. The explosion fades away in the last 5 frames. 

- Right now this folder of 20 frames is about 577kb, but I'll be able to get that even smaller by using a sprite sheet, which I successfully tested and integrated several months ago. 

- Ideally, each ship will have a different "minor hit" animation and possibly a different animation depending on what weapon you use.


QUOTE OF THE WEEK:

"An investment in knowledge pays the best interest." -- Benjamin Franklin


Thanks for reading and have a great rest of your week!

29 APR 2023:



- There are now two different explosions when you hit an enemy. A smaller one when you use the "rapid laser" and a larger one when you use the "scrap cannon".

- More importantly, I reworked all of the explosion animation code so that I can show multiple "damage explosions" at once. This took a while to figure out. But it had to be done because there's no point spending time in Embergen making fancy explosions that are only going to be shown once per enemy. 

- One of the nice things about Embergen is that it has a nice amount of PRESETS: 


So I can take a prefabricated effect that is close to what I want and adjust it to my purposes.  Right now I'm trying to make a lightning or electric discharge sort of effect (which they don't have  a preset for, but a few come close in principle). I also saw that they have Premium Presets, the first one being clouds. So if you don't want to buy the Embergen software, you can just buy some presets. Think of it as Kitbash but for explosions, clouds and particle effects. Pretty cool. I'm not affiliated with Embergen by the way, I'm just happy that I found an "explosion solution" that fits my minimal  budget.

- The majority of my development time is going to be in Embergen the next few weeks, with minor code adjustments to get the explosions to line up properly over the enemies. 

QUOTE OF THE WEEK:

"A problem is a chance for you to do your best." -- Duke Ellington


Thanks for reading and have a great rest of your week!

6 MAY 2023:


- It took all week and lots of experimentation, but I finally made a lightning effect for the "stun gun"! 

- Below you can see my Embergen node tree for it:


- I always seem to encounter this problem -- rendering bloom. The bloom effect with the lightning looks amazing, but trying to capture it in the final render is elusive if not impossible. So I took the animations to Aseprite:


Here are the Aseprite notes I took on how add some Alpha  while still retaining the bloom effect of the original image:

Open your first image in Aseprite and select "Agree" for "load the following files as an animation."

Click the Layer "Continuous" button in the timeline (links all frames together for changes) (rightmost arrow in above pic)

Click the lock button to upper left of colors to unlock color editing. (leftmost arrow in above pic)

Click down arrow and sort by brightness (or whatever)

Select Sprite --> Color Mode --> Indexed

Use eyedropper tool and click on a color

Change Alpha value (below the color rainbow, not the two color bars below it (middle arrow in above pic)


QUOTE OF THE WEEK: 

"Hide not your talents, they for Use were made. What's a Sun-Dial in the shade?" -- Benjamin Franklin

Thanks for reading and have a great rest of your week!

13 MAY 2023:

Hours of gamedev this week = ~9


- Final Boss can spawn in 3 different orientations (experimental)

- Enemies only become stunned after the final frame of the lightning animation

- Simplified main menu

- Enemies don't spawn when bosses are active

- Railgun won't scroll off screen and get lost

- Enemies won't hurt player when railgun is active


QUOTE OF THE WEEK:

"If you always do what interests you, at least one person is pleased." -- Katharine Hepburn


Thanks for reading and have a great rest of your week!

Viewing posts 236 to 255 of 303 · Next page · Previous page · First page · Last page