Next Broadcast

Publish "Vampire Survivors" Game to Itch.io

setec GameDev DK30 Fall 2022 4 3

Description

This project is to learn the process of publishing a game to itch.io. Usually when it comes to game development I get caught in a rabbit hole: how to create my own music, sound effects, sprites, 3d models, unique mechanics, game engine, etc. The goal of this project is to avoid all of that and just make something that gets put on itch.io. As such, I will use a simplified game loop inspired by “Vampire Survivors” for the game design aspect: wave of an enemy, user input is just moving, weapon auto fires. Honestly if any game development gets tough, just stop doing it and publish the broken game.

Recent Updates

setec 2 years ago

Conclusion

The project was a HUGE success. I learn a ton about publishing to itch.io, and that was the primary theme of the project. In addition, I met my goals for the days I set to work on the project. I learned a ton about bevy and rust. And all in all, I embraced making something work over trying to figure out the entire design space and tech stack. I’m really happy with how the project went and the game, while simple, is more then I expected I would finish.

This is my first dk30. I think it would have been a long while until I would have forced myself to do this project, so special thanks to this events for getting me moving on it.

I may continue to mess around with this project a little, or with my new found knowledge and confidence, I may just go create something new.

alasa

Here is the itch.io page for anyone who wants to check it out: https://ludejo.itch.io/alasa.

Here is what the game looks like:

setec 2 years ago

I was able to work on this project for the majority of the day and got a ton done:

  • Updated game engine from 0.8 -> 0.9, walking through the migration process
  • Generated project art using stable diffusion (https://github.com/AUTOMATIC1111/stable-diffusion-webui)
  • Created banner image
  • Captured gameplay gif
  • Updated project page looks with a banner image, background tiles, and gif for game background
  • Added sound effects
  • fixed a few bugs (scoreboard position, slime speed reset)

oh yeah, and yesterday I showed the game to a friend and addressed his feedback (adding a “alive slime” count to the score board.

setec 2 years ago

Additions: Score board, slime increases spawn rate and gets a speed boost.

Messed around with itch game screen, but no real progress on that front

setec 2 years ago

I got a lot done today on the project. I figured out a way to flip the player’s attack hitbox so it depends now on the face direction, I changed the players damage system to be based on the frame of the animation, and I added in background music.

This being the last week, I should start putting more polish and play around with itch.io more, that will be next session

setec 2 years ago

I did some project work yesterday and forgot to update this page.

I got it so the player damages slimes, though it happens all the time instead of matched up with animation. I also messed around with changing the slime’s sprite color on damage.

One point of interest, I rewrote the combat system and it worked first time running it, which any programmer will tell you makes it immediately untrustworthy. Nothing works the first time. Maybe I’m getting a handle on this rust/bevy thing.

I updated the itch page with update and noticed I forgot to do that the last session. I need to keep the goal of this project in mind.

We are coming up to the final week, according to my goals, it is time to stop feature development and just clean up the code. I’ll keep that in mind for next session

setec 2 years ago

a short unfocused session today. The goal is to get player attacks working, but getting hung up on some of the programming details. I did get the attack animation working. Also tried moving the damage collision to the attack component.

Some topics that have been tripping up my thinking, where does the attack collision data live, how should I sink things up to flame animation, how to handle facing left or right.

So got to figure that stuff out.

setec 2 years ago

There is a game loop! … technically.

I had combat system to the game so now the little slime enemies deal damage to the hero. If the hero’s health drops to 0, it moves on to Game Over screen, then to Main menu, then back to game start. There is no way for the hero to win, it is also easy to avoid all enemies, so I wouldn’t say the loop is fun, but it is a loop.

There is still a problem with slimes moving on top of each other, but since it works most the time, I am ignoring it.

Next up is hero attacks

setec 2 years ago

Today tackled getting enemies to spawn, move towards the player, and just started getting to work on the collisions so enemies don’t overlap. Its cool to see benefits the ECS pattern once there are more and more entities to deal with.

That said, collisions are being a pain to work through. I figure I should spend some time learning it since it will be needed for damage systems as well.

New builds uploaded to itch.

setec 2 years ago

Worked on animation today. I got an idle, walk left, walk right animation working as well as the state switching between those. I have found myself just browsing the example code from the tutorial series now, instead of watching the lessons, which might be a recipe for disaster but I am taking to mean a certain comfort with code has been reached.

New version was uploaded to itch

setec 2 years ago

Got a couple of hours of work in, able to knock out the following:

  • fix screen size to make sense with sprite sizes
  • created the tile spawner/despawner, so can walk infinitely now
  • fix diagonal walking so its not super fast, classic

Overall a great work session, I caught myself a few times getting distracted by different rabbit holes, but overall kept to simple development and publishing loop.

As always, I am still pushing the latest builds itch.io (https://ludejo.itch.io/alasa)

Next up might be character animation? or enemy spawning? I also want to mess around more with the itch.io settings, upload thumbnail for example.

setec 2 years ago

Classic programming issue. The text bundle wasn’t working for me on Tuesday, came back today and tried implementing it again and success. There is now a title screen to the game that launches into the combat scene.

The other thing I started on was nesting tiles in a parent component just for easier debugging. I had some back and forth, but finally got the right components in places for things to be visible (this was useful: https://bevy-cheatbook.github.io/features/visibility.html).

Moved on to figuring out window sizes, the title on itch seems off

setec 2 years ago

Not the most successful day. I first messed around with tile spawner, but haven’t gotten a good idea on how to implement that. I next tried stages, which worked alright. I was able to flip between a blank screen and combat screen. Lastly tried title creation, this is a feature I started the project with. Unfortunately, its busted, and I couldn’t find a solution, so went for a sprite way of doing it, and that didn’t work. After spinning my wheels on that for a while, I’m calling it a day.

setec 3 years ago

BONUS DAY

I had free day, so spent it working some more on the project. This is what I accomplished

  • Figured out how to handle screen size for itch.io, at least for non-fullscreen.
  • Refactored code base to use Bevy’s plugin structure
  • Added a debugger plugin
  • Covered the screen with terrain tiles
  • Added player movement and camera tracking, similar to vampire survivors
  • Added a map tiles despawn system for when they go off screen
  • Browsed itch.io project settings, filling in any fields that were easy to answer
  • Put in a request for Bevy to be added as a Tools tag on itch.io

Throughout development I was uploading to itch.io, that process is running smooth now. I have switched the setting so it is now public, but marked as a prototype. Overall a very successful day.

Next on the list is spawning terrain tiles for “infinite” map, and then adding a menu system. The criteria for each day will follow the tutorial I linked instead of what I had mapped out before, I found that to be easier for the learning process.

setec 3 years ago

The goal for today was to explore tile maps. WIth help from the first couple tutorials on https://youtube.com/playlist?list=PLT_D88-MTFOPPl75g4WshL1Gx2bnGTUkz, the bevy docs, and just some googling, I got sprite sheets loaded for player character and terrain tiles. The game is now iterating over all loaded sprites and displaying them to the screen. Overall, I thought this process would go a bit faster, but most of it was messing with values to make sure the sprites loaded correctly.

I also uploaded the new version to itch, worked through some problems with the game zip, and then turned on ‘restricted’ access to my game to try it from other clients.

To adjust the schedule, the next session will focus on tiling the grass on the background and fitting the window to match the display sizes on itch.

setec 3 years ago

The goal of this work session was working through the project set up stuff. I successfully did the following:

Round Schedule

The following afternoons I have free and will be using for this project. I have added themes to each day. I bet I will have more free time, but this is the minimum schedule I will try to keep. Everything else is gravy. Themes are likely to change

  • 19th - project set up
  • 20th - explore tile maps
  • 25th - explore sprite sheets
  • 2nd - explore hero controls
  • 3rd - explore enemy spawner
  • 7th - explore damage system
  • 15th - explore end game / scoring

Estimated Timeframe

Oct 19th - Nov 19th

Week 1 Goal

“Mise en place” of game dev. This is just getting any ducks in order to remove as much decision overhead for when I start coding. So create itch.io account, create a rough schedule of when to work, create source code repository, download and setup bevy, find a free sprite sheet, find bevy documentation for targeted game mechanics, get ide set up.

If that goes well, try a sample build.

Week 2 Goal

Create a “game” and publish it. This can be just a title screen. It should be playable in the browser.

If that goes well, program basic game loop. Rough order of features to tackle: hero moves, Enemy spawns and move, Enemy damages hero, Hero Death, Weapon fires, Weapon damages enemies, Enemies die, “Score” Keeper (survived time, enemy killed count), Enemy spawn increase.

Don’t get caught up in the above list of features, the point is to make a change to the game and then publish it. So on completion of any development session, publish an updated game. Get familiar and used to the process of development and publish.

Week 3 Goal

Fill in itch.io Project Page. Work on the description, find tags that apply, link to repository.

Stretch features to consider: Scene management: Main menu to game loop to main menu Weapon Sound Scrolling Camera Background music New enemy

Week 4 Goal

Spit shine. Stop all feature development. Clean up the code, review what was done, write down how it worked, take care of any bugs that look small.

At the end of the week, doesn’t matter what the game is like at this point, share it with a friend.

Tags