Saturday, October 22, 2011

Introducing the Parasite

Formed parasite below me.  Unformed flying to my left.
The Parasite is a friend of spies.  It is attracted to the player and will cause damage when touched.  If the player isn't around, it looks for a Spy.  When it finds a formed Spy (one that has taken over a block), it will use it to stage its own forming and any block touching that Spy is available for the Parasite.  Once the Parasite has infected a block, the block can be destroyed but it will not drop anything useful.  The player will also receive damage to their drill bit.

I'm thinking that to remove a parasite or spy from a block, you're going to have to drop some water onto it to "clean" it.  That thought just came to me though.

Anyway, that's what I've been up to tonight.  Next on the list is a loading/saving progress bar.

Time Lapse

How do you have a day/night cycle in an asteroid belt?

After much brainstorming, I decided that the star that the belt orbits would be constantly in view.  This would be considered 'day'.  Every 10 minutes or so, a large planet would eclipse the sun and be considered the 'night' cycle.  If you look at older screenshots of mine, you'll notice that any area that isn't lit is dark black.  That is still the case for the night cycle.  During the day cycle, though, blocks are a little illuminated.  The following screenshots show the transition.



"Night" - All darks are black.
Notice that during the day, you can somewhat see the blocks around you.  This will make it a little easier to find the blocks that you need to craft things.

On top of getting this done, I've also got a page full of notes on the terraforming aspect of the game.  I can't wait to get to work on that part since I think it's going to be one of the more 'colorful' things to do.

For now, I'm going to consider the time cycle complete.  It takes about an hour to go from start to end.  In total, the player gets ~33 minutes of usable light.  14.5 minutes are spent in a transitionary stage between dark<->light.  ~10 minutes is spent in nighttime darkness.

Next on the list is biomes.  This code is actually done (I think).  I just need to double check on it.  After that, I need to add 1 more enemy and a loading/saving progress bar.  Finishing those two things will complete .04A.

Thursday, October 20, 2011

Buckets

So as you can tell by my last few posts, I added water to the game.  When I first added the logic for the water, I needed the ability to test.  So I made it so I can generate water on the fly.  Then I made it so the water saved its state when you exited, so I was careful about where I put water down.  Next on my list was making it so the world algorithm automatically generated water in certain areas.  This was all great when it came to new maps since it only ever spawned inside of an asteroid.  The issue came when I loaded a current map.  Water had generated on the map that I didn't anticipate for, so the stuff was everywhere.  I was able to drain it to a pool below my base but there were spots where there was a tiny pool of water that I couldn't reach.

Realizing that this is a problem that lots of people are going to have and that the player needs a way to gather water anyway, I decided to create a new item:  the bucket.

First off, here's the crafting formula:


It's not that expensive to build.  Lots of things are going to require light posts for energy.  The nice thing about the bucket is that it doesn't need light or fuel to run once it's built, so this is the only time you'll need the light post for it.

Next is a screenshot with buckets in different stages.


Buckets have 2 modes: Drain and Fill.  In Fill mode, the bucket will absorb any water inside of its own block and the 2 surrounding it.  In Drain mode, the bucket empties any liquid inside of it.  Below the player is a bucket in drain mode.

Directly to the right of the player is an empty bucket.  The buckets below and to the left of the player are buckets with different amounts of liquid in them.

By going over the bucket and pressing spacebar, the player can switch the bucket modes between Drain and Fill.  I haven't decided what button this will be on the 360 controller.

By completing the bucket and liquids functionality, I've checked off 2 requirements for v.04.  I need to add 1 more enemy, biomes, a loading/saving progress bar and a time cycle.  I also managed to fix the bug where the sprites are sometime drawn off by about 1 pixel.

So until next time...

Tuesday, October 18, 2011

My brother is awesome.

I received an email from my younger brother today.




I love it.

I've been working on liquids tonight.  It seems to work pretty well so I'll be testing that for a few days.  I've also started preparing for the kickstarter release.  Overall it's been a very busy week and these pictures made it all the better! :]


Sunday, October 16, 2011

Trailer

I signed up for kickstarter.  I'm hoping to get enough funding to promote the game when it's ready and let me hire a sound or graphic person.  Anyway, I wanted to make a trailer to show some gameplay footage.



Saturday, October 15, 2011

Be careful in building your base.

Make sure you use the right blocks.. or else a Spy might get in.

3 Spies directly to the right of the player.
The spy will look for a soft block.  Once found, it will eat the block, take over its position and form a new one around it.  It is possible to detect if a spy has taken over a block because there will be a small cloud inside of it.

Once a spy has taken a block, it will stay there indefinitely.  If the player decides to mine that block, their drill will not be able to turn it into a form that is of any use.  AKA the block will not drop anything that the player can use.

The spy does no harm to the player and actually completely ignores them.

The next step for the spy is to detect if a friendly is around.  If it is, dissolve the block and let the friendly through.  Essentially, they'll be able to discretely build tunnels into your base and let the enemy in if you don't have the proper surroundings.

This is a fun enemy to have :]

Thursday, October 13, 2011

Laser Doors

I've added proximity doors to AM.  They keep enemy out using lasers but allow bullets through.  To help balance this, I'm going to make them fragile to enemy fire.
Doors closed.

Doors Open
Doors can be stacked on top of eachother (but you cannot put other objects on top of doors).  The doors also have a small delay of about 1/2 second.  Here is the crafting formula:

This is the first object to use diamonds.
You'll notice that it's an expensive object.  Diamonds are very hard to come by.  I wanted it that way, though, because they are also powerful objects in the game.  If anything, I might make it even more expensive.

When I redid the world generation setup, I introduced a bug where the map would sometimes save in the wrong position and spawn the player inside of a block.  I thought this was due to the new map setup when in reality, it was due to the fact that the map now moves behind the different screens.  I'm about 99% sure I've now solved this bug.  My bug list has fortunately been very small.  The only other known bug in the game right now is when you craft an object, if you pick it up and place it in the crafting table instead of your inventory, it will not take the items from the crafting table.  This lets you craft unlimited items.  I think this will be an easy bug to fix (my guess is that it places the item in the crafting table, regenerates a new formula and then when it goes to take all the items, it looks for the new formula instead of the old one thus not finding it's required resources) so I will finish it in this build.

Next on the list is either a time cycle in the game or adding liquids (water or mercury).  This is going to be a really fun update.

Tuesday, October 11, 2011

v.03 is Released

This build was mainly for adding screens.  I've added a title screen, intro screen, new world screen, save/pause screen and continue/load screen.  These all function properly both on the 360 and on the PC.

The next build is another fun one.  I'll be adding some more enemy, more structures to build (how about a laser door?), more biomes and hopefully liquids (lava and water so far).

Tuesday, October 04, 2011

World Generation Upgrades and New Screens

So from a technical perspective, I've refactored the world generation loop.  Beforehand I had 2 dictionaries that stored the current world.  One of the dictionaries was displayed in the draw loop while the other was being modified.  When work is done, a switch is flipped and the two reverse roles.  This worked pretty well but I felt it was very over-complicated and it did introduce the opportunity for glitches.  For example, sometimes the two dictionaries didn't have the exact same coordinates and there would be a minor jump in the world while it adjusted.

There is now a singular world dictionary.  It works almost the same way that my generation algorithm in R-01 worked.  The algorithm generates everything around the screen dimensions + a drawDistanceOut (currently set to 2 blocks).  When the map is pushed down, the algorithm only recalculates the new area.  It then detects where the old area is and deletes those blocks.  It's a moving map essentially.

Since I don't use foreach loops on this dictionary anywhere, I am free to add/remove blocks from it without worry of collision from threads.  The draw loop and the generate loop are on two separate threads so this is very important.

The other thing I've been working on is different screens.  Here are some screenshots:

The logo fades in to start the game off.

Generic front screen.  The map behind the options has a slight movement to it.

Seed input.  Not sure how I'm going to approach this on the 360.

Pause screen
There were some other minor bugs that were fixed but the world algorithm was the most important.  The only major screen I have left is the one that allows the player to load previous maps.  You can currently do this by entering the same seed, but I want it to list old maps and let the player just select the map they want to play.  I also need to add a multiplayer option but that's for the future.

I've also started researching musicians to have some background music in my game.  If anyone has any leads please let me know.  I'm thinking of an ambient, Explosions in the Sky type of sound.  My brother said it's called Shoegaze Music.

So I'm hoping I can finish that last screen before I leave for the weekend.  That would mean I have all next week to focus on the next build.  That build will include liquids, more enemies and more biomes/block types.

Until then.. ~

Thursday, September 29, 2011

Particles

The world is, generally, a pretty dirty place.  Look around outside and you'll see all kinds of little dust particles floating in the air.  That being said, particles are a great way to add some ambiance to the scene and they just look really pretty :]

Notice all the little particulates floating around in the air.

Particles will slowly fall down due to the gravity of the planet below.

Sparks at the feet of the player when they're dragging along the ground.








I couldn't get a good screenshot of it, but whenever the player hits a wall they also generate a bunch of particles around them.

Easy to program and they add a good amount of depth to the scene.  I'm going to do some UI tweaks and I have 2 creatures that I want to add.  Once that's done, I'll release it to the testers and hope for the best.

Friday, September 23, 2011

Thoms, Matterholes and Turrets

I've been working on the game a lot lately.  I've been primarily focusing on the bullet collision detection and working on the enemy logic.  So far I have two types of enemy.  The first one that you'll see in the screenshot below is the Thom.  They are attracted to any form of light, including the player when their light is on.  They go for your light posts, so turrets are required to protect them from being destroyed.

They know there's light there but the stupid asteroid is in the way :[

Notice the mini light posts in the top left.

The next enemy I added is the Matterhole.  They are pretty stupid and have a really short eyesight, but if they notice the player and get close enough they will create a black hole and suck in anything around them (or cause a lot of damage).  They can't float (and I'm debating making them jump).

Notice the player in the bottom right sneaking past a bunch of enemy.

Turrets attacking a bunch of Thoms.

Bullet collision graphic is way off.  Eventually the enemies will have their own 'hit' graphic.

So I've been working on that stuff primarily.  I have an official roadmap that I'm going to follow from now on. To release version .01A, the following will have to be done:

  • Bullet Collision detection is still buggy.  This must be fixed.
  • Enemy sometimes go through blocks.  I think this is due to enemy outside of the bounds of the map.
  • I want to add a little bit of gravity to the bullets
  • 360 File System support
  • Keep my eye out for the map jumping glitch.  I'm pretty sure this bug is long gone but it's on this list incase it were to come back.
I think I should be able to finish that list by the weekend and maybe have enough time to get started on .02A. That involves a lot more visual updates.

Wednesday, September 14, 2011

Saturday, September 10, 2011

Working Inventory, Crafting, New Block Types and More :]

It's been a busy week for AstroMiner.  This week I added 2 new blocks:  LightStone and Charcoal.  I've also been working on the dynamics of the game to make more FuelStone available.  The reason for this is that crafting + inventory is now finished.

Fuel will be used to craft certain items.
The player's 2x2 crafting grid will be limited in what it can build.  It will be used primarily to build bases or build temporary depots.  So far it can build chests and mini light posts.  Mini light posts emit a small amount of light and are mainly meant to be used as guides.  Chests are where the majority of building will happen.

Chest Crafting Table + Inventory
The chest crafting table is where all the important stuff is built.  Since the chest does not need to be powered, this will be one of the first things that a player will build when constructing a base.  Everything they build afterwards will be to protect the chest.  I have 7 different bad guys sketched out that will be attracted to certain things.  One of them will be attracted to chests, so the player is going to need to build some good sentries to block that enemy.

You'll also notice 3 slots at the top of the UI for items.  These will be your 'Active' items.  You have a set of 3 for Defense and a set for Developing.  The defense set will be the weapons you currently have activated while the developing set will be what you want to build.

I also added the ability to adjust how much light your craft puts out.

All Lights Off

Light Stage 1

Light Stage 2

Light Stage 3
If you look at the UI, you'll notice the light bars show what stage you're at.  The enemy will be attracted to light.  By dimming your light output, you increase your chances of being able to explore without being noticed by the bad guys.  This will also work if the enemy breaches your defense and is in your base.  By turning off your light, the enemy will be attracted to your light posts while you escape.

The inventory took me most of the week to complete.  Next week I'm going to focus on adding AI to the game so the player has something to fight against.  I've never really done AI for games before so this should be a good learning experience.

Saturday, September 03, 2011

Chests and Inventory

I've been working on an inventory system in the game.  I've played with a couple different techniques and I think the best way to approach interacting with the inventory is by using a mouse.

I tried several keyboard combinations but when I did that, it hindered ship mobility.  If there's an enemy coming towards the player they should be able to quickly break free of the chest and defend themselves without having to press any extra keys.  I think the generic approach of using a mouse to click and drag things between inventory <-> chest is probably best for now.  Of course that'll have to be reconsidered for the 360 controls, but I have plenty of time before I have to make that decision.

So some screenshots.  The first set will be the chests.  Notice that when the player is in range, the chests simply sit in place.  They do not require any power and are activated much like RFID chips in that when the player nears, they turn on.  They draw their power from the player primarily.

I have 2 chests next to eachother because I was testing the approach sequence.
 The player is lined up with the chest, so the landing lights glow.


Player has landed and the chest is activated.


Now the player presses the tab key to open up their inventory and the inventory inside the chest.

The numbers below the icons will be quantity when I'm done.  Right now, they're the inventory position.
You'll also notice the building structure on the right.  I like the way Minecraft handles building objects and I'll be doing that in this game.  The next screenshot will be what the inventory looks like when the player is not docked to a chest.


I need to update the graphic so it shows the slots like the chest inventory screen does.

So that's what I've been working on the past couple of days.  I'll be spending the weekend and labor day with my wife, so I won't get much (if any) programming in.  She had to move to Texas a couple of weeks ago to take a job as an Art Teacher there because there is no work for her here.  When she visits, the computer takes last place on my priority list :]

So until next week ~
Roy

Thursday, September 01, 2011

Another Screenshot + Updates

Notice the little patches of dirt on the bottom.
I've added a little help screen (F1) to the game.  It's a very basic one with a listing of controls so my testers have some kind of reference.

I added a new structure type called TerraFormers.  You can see it at the bottom there.  They'll be very important later on in the game :)

When you deleted a block before, it just removed it from the world and doesn't draw it anymore.  I thought this looked kinda empty, so when you delete a block now I'm drawing a block 'behind' it.  The world looks a little more full like this since it's not just empty space.

I added the beginnings of an inventory system.  Eventually, all the blocks you eat will be put into your inventory so you can build these structures.

Lastly, I made some minor bug fixes.  I'm very close to an alpha build.  I want to finish inventory up, add some basic AI to the game so there's something to interact with, add some weapons and make more block types before I fully release it.  I won't be doing any developing at all this weekend but I'll continue to dev all this week and resume next Tuesday.

Tuesday, August 30, 2011

You can now create blocks.

The player can now create blocks in the game.  The top left corner also has new additions to the UI.


Notice the Drill, Defend and Develop.  Toggling through these will give the player different drill bits.  Drill = destroy blocks.  Defend = weapons (to be developed).  Develop lets the player build things.

The screenshot I posted there shows all of the features so far.  Fuel depot, light depots, repair station, lighting, creating blocks, deleting blocks, hovering and the homing beacon.  I'm really excited about my progress so far.

Sunday, August 28, 2011

Homing Beacons


Homing beacons have been added.  The video above will show how they work.

Updated Lighting + Fixes

Light from a post now gradually fades.
So I spent the evening fixing some bugs and adjusting the gameplay.  As you can see from the screenshot, light from posts now extends a lot further out and gradually fades out instead of the black/white we had before.  As I was playing and testing bug fixes, I also realized that it's a pain having to constantly find a fuel depot.  I increased the range of the depots by about 3x and I found it to make the game a lot more fun to play.

The bug that I think I've fixed is the one where the map flickers.  I thought this was due to a rounding error but I actually fixed it by simplifying my code.  Beforehand, I had two variables in my world.  There was a Vector3 called mapPosition and a Vector2 called drawOffset.  mapPosition was a Vector3 because I thought I could have multiple layers of map and store them on the Z axis.  drawOffset was pretty much a Vector2 copy of mapPosition that was used for drawing objects.  As time went on, I found myself rarely using mapPosition and I wondered if I could just pull it out.  After backing up all my code (to make it easier to revert incase I didn't like it), I started the process of removal.

After getting all the references out, I played around for a little bit and made sure I didn't introduce any bugs.  Much to my satisfaction, I realized that I hadn't seen the map flicker bug at all since removing the Vector3.  I've been testing for a couple of hours ever since and haven't noticed it at all.

I also added some basic AI.  I'm not sure how I feel about it though.  I want the player to feel very alone in this game.  You are inside this machine and have been left on this roid to survive/make your way back home (haven't completely figured out the story yet).  Either way, I want to find a balance where you can feel that there's a threat through some kind of enemy but also feel very alone in this asteroid belt.

I'm going to keep working on gameplay elements this week.  I'm also hoping to finalize a story before the end of the week.

Sunday, August 21, 2011

AstroMiner Gameplay Video

Repair Stations and Updated Lighting

Notice the unpowered repair station on the left side.
Repair stations, like fuel depots, have to be powered by light.  They play a cute little animation when they're fixing you up.

I also update the lighting so it's not as harsh.  Before it was unlit or lit.  Now I have several stages of lighting.  Light stations also have their own value which is about 90% of what the players full lighting is.

The blue line in the repair station 'scans' the player.