Posts

Showing posts with the label game development

GitHub Releases for Shield Bearer and Bee-Flat

I've been focusing on my full time job, but I wanted to make a quick post to say that I made releases for Bee Flat and Shield Bearer .  They are for my Game Off 2019 Build of Bee Flat and my JS13K Games 2019 Build of Shield Bearer .  I hope to someday be able to return to those projects and make them better.

JS13K 2020 Game Jam Day 14

Image
Oh no! Did I really spend fourteen days not coding! No need to really panic, I've been designing most of the game in my spare time. Though I lost so much valuable time not coding! If I didn't tell you already, the theme for 2020's JS13K Game Jam is 404.  One of their example interpretations  was "something missing".  So, I came up with this idea of a Memory-Puzzle-Platformer game where you play as a character that needs to go through this big door.  The issue:  parts of the door are missing and you need to collect the part(s) on the other side of the map to get them.  You will have to avoid enemies and jump on platforms to get to the other side of the map while trying to remember the part of the door that you might be missing.  Once you get to the other side of the map, there will be multiple pieces that could be part of the door or bogus pieces that will waste your time.  I decided to call this game Whole Door.  It's both the objective o...

Metroidvania Month 7 Day 21

Image
I don't think I'm going to make it.  I'll drop out of Metroidvania Month if I can't get anything playable by then, but I will continue to work on this game. So, I started to get back into things by just modifying the SaveFile class.  I figured that I might not want to reload the Player's Health and Ammo every time they reload the game.  It would have made it very easy to cheat the game:  get to a Save Room by a boss, save, refresh the page to restart the game, load the old Save Slot, and you're now at full Health and Ammo.  Now the SaveFile has the hp, filledTanks, and heldMissles to keep track of the Player's Health and Ammo to help avoid that cheat. While I was editing the SaveFile class, I also figured I should refactor the way I keep track of explored areas.  My original idea was to have a new field in the SaveFile and that field would be a 2D Array for each Area.  That means to set if the Player has visited a spot on the "map" for the Test...

Metroidvania Month 7 Day 9

Yeah, I missed a day.  Hopefully, I can still get Daemon in a working state on time. I was looking into possible control schemes for the game and managed to find some documentation on Gamepads for HTML5 .  It seems like it is just like adding the Gamepad's "keyup" Events to the window, but you have its connect/disconnect Events as well.  I think it would be nice to have a Gamepad and have the game play like Super Metroid.  However, I don't think all the controllers are the same: a button on an Xbox controller plugged into the PC might use a different Event than the same button on a PS4.  They might confirm to the standard Gamepad setup , but I don't want to add any extra complications at this time.  So, I'm just going to focus on WASD and Arrow Keys on the Keyboard for now.  Maybe add a touchscreen control pad for smartphones later.  I'm just trying to get stuff to a working state first, then I'll add those extra features in the future. My fir...

Metroidvania Month 7 Day 7

I managed to get some code started today.  It's mostly just copying Bee Flat and taking out all the Bee and Arcade related items.  So, I want to say thank you to Jedulz for all the work he did helping me with Bee Flat that I'm placing into Daemon. Once I had most of Bee Flat copied and cut to it's bare bones, I started creating the SaveFile class.  I decided to go with 1D Arrays for storing ability pickups, tanks, and missiles.  There is a 2D Array for the Test Area that I'll used to test out my "Room Load" idea.  To make it easier to create new Cells in that 2D Array, I made the generateGrid(gridRows, gridColumns) function in the file with the SaveFile Class.  That function allows me to just specify the number of Rows and Columns for the Grid, and it will then create a Grid of that size with each Cell containing an Object with visited = false and foundItem = false.  Meaning, every Cell is marked as not visited.  I did use some w3Schools artic...

Metroidvania Month 7 Day 6

Hey, I know it might say "Published 2/21/2020" so it should be Day 7 instead, but I was thinking about an idea I had for the save files just now and I wanted to type them up before going to bed. The question rattling around in my head was this:  how do I save the exact power-up that I've collected?  Simple: we store an ID in an Array.  The save file will be a JSON object and within that we could have arrays for each max ammo and max health power-up type.  Say in the game we have Tanks that store extra health.  In our SaveFile JSON object, we would have an Array called "tanks" that just stores IDs of collected Tanks.  When we enter a room that has a Tank, we search SaveFile.tanks array for the ID of that Tank.  If the ID is found, don't spawn that Tank, otherwise, we spawn it if it hasn't been collected.  What is the maximum collected Tanks that we should fill?  SaveFile.tanks.length should give us the maximum Tanks to fill. After answerin...

Metroidvania Month 7 Day 4

Image
One of the things I feel is necessary in a game that isn't a small Arcade Title is the ability to save and load my game.  If you have a story in your game, you need to be able to save your progress and return to it later to experience the whole thing.  So, I went searching.  I found a question on Stackoverflow and an answer that explained the difference between internet cookies and localStorage .  After some more research, I chose to go with this localStorage.  It's new to HTML5 and is available on nearly every browser .  Plus, I found some really great examples on w3schools for Web Storage .  The Metroid games have three save "slots"; so I think I can create a JSON for the save "slot", turn it into a string, and then set the localStorage "slot" for it.  Then, when I need to load the game, I just get that localStorage "slot", transform it back into a JSON, and then use it to set the game back to a state before the player left.  We'll ...

Metroidvania Month 7 Day 3

Image
Don't worry, there's no Metroidvania Month 7 Day 1 or 2.  It would have just been me telling you that I'm still working on a title.  I wish I could just start creating something, but GitHub wants me to name my repositories first before starting on my project.  I guess I could have created the files on my computer, but I hate the idea that my work could be lost without backups or commits that I can roll back in case I mess something up.  I could have also given this game a "Project Name", but I feel like I might accidentally create one that is better than the end product (see Project Scorpio and Project Revolution for example). Anyway, I came up with thirteen names for the game and ended up settling on Daemon . The game is about a robot that has gained sentience in a lab and now has to collect power-ups to help it escape.  Daemon, in computing , means a computer program that runs as a background process.  I felt the name could be fitting as the robot ...

Coder's Log 1/28/2020

Hey, you know the drill by now. I've been trying to find motivation to work on a project that I could use to learn Spriter Pro , but my job has kept me pretty busy.  There was some projects that needed to be completed at my workplace, short deadlines, pushy customers, and our Project Manager has left.  Now I'm the Project Manager, but only temporarily, as my employer finds someone else for the job; though, I think I got the experience and skills to handle the job. Anyway, you didn't come here to read about my professional life.  I'm hoping you're here to see what fun stuff I'm creating.  So, to help get me motivated, I decided to find another Game Jam to join to give me an incentive to work on something.  I think I found the perfect jam:  Metroidvania Month 7 !  It's another Game Jam hosted on itch.io and I'm liking that it's not going to force me to do a theme.  Well, besides the fact that it forces me to make a game of a certain genre. ...

Game Off 2019 Day 27 to 31

Image
Day 27 I was hoping to do some work on Bee Flat, but I was over at my dad's helping him prepare the Thanksgiving Turkey.  I had brought over my laptop, but my Atom text editor was on the fritz.  It thinks I need to Publish my source code, but I cloned it from the GitHub repo using Git for Windows .  I've been trying to do a fresh install on the program, but the installer just puts Atom files wherever it wants to without telling me. Thankfully, Jedulz is on it with the commits!  He added a building for the player to leap off of, made the player character look like a ninja, and the player character can launch off of the building.  He said the way the player character looks is only temporary, but I'm down to keep the character looking like that if we run out of time.  He also made a private Trello Board to keep track of what we need to do to finish the game.  Jedulz, you're awesome! Day 28 I was too busy stuffing my face full of turkey to work o...

Game Off 2019 Day 26

Image
This day was all about trying to get some graphics into my game.  I know, they're not really that important, but I feel like having some graphics will help out with designing the world. As a warm up, I created a favicon for the webpage running the game.  I went into Microsoft Paint and designed a small, happy, bee.  I used the circle tool to draw the body and the paint brush at 1 px to add the outline, face, and wings.  I saved it as a PNG and then threw that into GIMP .  With GIMP, I can add an Alpha channel to the image, select the white part of it, and delete it to make everything around that bee transparent.  I just find that white box very unsightly.  Here's the image: It's a very small bee, only 16 by 16, but I thought it was pretty good.  The bees in the actual game will be much bigger.  It's just the standard size for favicons . The character for the original "Un-Bee Leap-able" was supposed to be a ninja.  I got the id...

Game Off 2019 Day 25

Oh, man!  I've been so busy with work and stuff, that I forgot to make any progress on my game.  I'm going to have to abandon Godot and Blender for now, sorry.  I just don't have the time now to learn the tools and finish my game.  I'm moving back to HTML5 Canvas and JavaScript! This new game will actually be a spin-off game titled "Un-Bee Leap-able: Bee Flat".  Can I even have a spin-off game before the actual game is finished?  Sure!  Why not? Anyway, here's the GitHub repo for Bee Flat .  I'm hoping that I can take the platforming elements from Glide 4.0 and combine it with the upgrade system of Paper Plane !! to make an interesting game. I had made some progress, I got the HTML page and CSS going, when I noticed that Jedulz had made some progress on the JavaScript.  I pushed the code that I had for it into my repo and then I performed a tricky merge request.  It was tricky since we both create HTML and CSS for the game....

Game Off 2019 Day 12

I managed to find a pretty good beginner's tutorial to Blender on YouTube.  It should cover modeling and sculpting with Blender, and I hope those are tools that I would need to create my game's world.  I'm a little worried that it won't cover things like rigging or exporting things to Godot.  Though, I think I found a good link to how to export Blender files to Godot and I'm sure I put it in yesterday's blog.  Nope, it was on day 5 that I linked to the export tutorial .  Hopefully, that DAE file will have information about the collision mesh and not just visual stuff. Speaking of written tutorials for Godot, I found this one on how to export the game for the web .  However, they don't recommend doing that, because they are going to remove Godot's WebGL 2 renderer.  They say it doesn't work with 3D; which, is pretty bad for a 3D engine.  So, I guess I should forget that idea.  They're still working on Vulkan support for Godot , and it won...

Game Off 2019 Day 11

I tried to get a few things done while I was on my Veteran's Day vacation. I did find a nice video series on how to use the Godot Engine on Youtube .  The guy explaining it does a very nice job of telling me about each panel you will see in Godot, and what is the purpose of each thing in those panels.  However, I think I hit another snag creating this game... It looks like I can only add primitive 3D shapes (cubes, spheres, triangles, etc) using Godot.  I was hoping that I could take a flat shape and chisel, mold, or sculpt the canyon trial into it.  It seems that I'm going to have to use Blender if I want a custom 3D object in the game.  So now I have to find a Blender tutorial in order to get started on the game. Some good news though:  it seems that Godot will take care of all the physics and collisions that I would need for the game automatically.  I just need to add the correct "collision shape" to each object.  Hopefully, I can choose ...

Game Off 2019 Day 5

Today, I told my friends at work that I was creating Un-bee Leap-able for the Game Off 2019 competition.  Jedulz said he would love to help me with the game.  He told me about how he was trying out the GDScript that is used by the Godot Engine .  It's very similar to Python, which sounds like it won't be a terribly difficult language to pick up.  Plus, I also checked out the features of Godot and it states that it can build games that can run on the web using HTML5 and WebAssembly.  Which would make it nice for testing:  we could run it from a GitHub.io page instead of rebuilding or reinstalling an executable game.  I also found this article on how to export Blender files for Godot .  When I used to play a lot of Garry's Mod, I wanted to learn how to use Blender to create 3D models that worked on Valve's Source Engine.  I think that settles it:  I'm choosing the Godot Engine for my game! Jedulz sent me a link to this site called op...

Game Off 2019 Day 4

After a few days of trying to find a good idea for Game Off 2019 , I think I managed to come up with either the dumbest idea...or the best idea:  Un-bee leap-able! You play as a ninja that starts the level by leaping straight up into the air, and then you pull out a giant kite that you use to glide through the air.  Your objective is to land in a designated zone on the map.  While gliding through the air, you have to avoid giant bees.  If you touch a bee or land in an area that isn't the designated zone, you restart back at the starting point but with cash to spend on upgrades to help you glide around better. It's a really crazy idea!  I know!  I just came up with it while listening to  Jack Stauber's Micropop , and I think the idea has enough quirky charm to go really far in the competition. Now, the question is: what engine or whatever should I use to create the game?  I would love to make the game 3D and have it feel like gliding around a...

Game Off 2019 Day 1

Sorry that I haven't kept this blog up to date.  My job has done its best to keep me too busy and exhausted to do much outside of work or sleep.  Here's just a few things that have happened between now and the last time I've updated this blog: After I finished the fourth Pull Request, I received an email congratulating me from dev.to on 10/21/2019.  It told me they would put a "badge" profile on its site, so I created my profile on dev.to . I got a confirmation email from Hacktoberfest 2019 that I've completed my Pull Requests on 10/29/2019; it came with a link to get my free shirt.  I'll show it off once I get it! I tried to learn Ruby on Codecademy , but I was super busy and only completed the first lesson.  I want to use it to enhance  my GitHub.io page with Jekyll . I bought another Game Dev book bundle from Humble Bundle: Developing Your Own Games Jedulz introduced me to the Godot Engine ; it looks promising, but I haven't had the ti...

Hacktoberfest 2019 Day 5

Image
I feel like helping Jedulz, today!  I've been thinking about his fishy game , it's pretty good so far, but I'm feeling like the game might have a huge  issue if you want to play on mobile: your finger would cover up your fish and you wouldn't be able to tell the size of it. I hope Apple doesn't mind me doing this, but for a solution, I was thinking about how they solve this issue in iOS: It would be hard to see where I would be placing the cursor because my finger would be covering that space.  However, Apple placed this feature in iOS where this magnifying glass shows you the area that supposed to be covered by your finger.  I think that would be nice to have for the fishy game.  I just don't know how I would accomplish something like that in HTML5, CSS, or JavaScript. I spent about an hour searching for a solution.  Eventually, I ran into this stackoverflow question asking how to code a magnifier to use the canvas as a source  and that lead me...

Game Off 2019 Prep

Image
In preparation for the Game Off 2019 competition , I made an account on itch.io.  You can view my itch.io profile , but I don't have anything on there right now.  I was thinking about uploading my game "Star Trek: Borg Attack" on there, but I don't want to infringe on any IP Holder rights.  Plus, Viacom, Paramount, and CBS have been known to be really defensive about fan productions of Star Trek.  Here's a screen shot of the game if you think I'm bluffing: I think I made it with Game Maker 5 or 6 a long time ago (around 2004).  I remember "programming" this game before high school.  The YoYo Games logo does not show up when started, so it has to be before Game Maker 7 (2007).  At least, according to the Wikipedia articles on Game Maker. The game started by giving you this big text window that just explained the controls: I had WASD for moving the ship, spacebar to fire phasers, and I also had TFGH for going into warp.  There was even a ...

JS13K Games 2019 Day 32 (Final)

It's the final day to upload Shield Bearer before the deadline.  Well, more like the final 6 hours.  Let's see what I can do. I wanted to get that collision with the Backscatter Buster shots and the spiders going, so I immediately jumped into the playerProjectile's update function.  I added a for loop to go through the array of enemies and check for collisions.  If there was a collision, mark the projectile for dead and kill the spider.  The collision is good, and the score is increasing!  Now I just need to make the spiders a bigger threat by having them fire at the Bearer every second after they have stopped! In Orion's Revenge, I created Enemy Ships  that could shoot at the Player Character no matter where the Player's Ship was on the screen.  I want to do something like that for the spiders.  To implement something like that, I created the enemyProjectile class.  If the enemy is a spider, I want it to fire a projectile from the c...