Wednesday, June 28, 2017

Agent Blue 0.1.0 Demo


0.1.0 Changelog:

Bug Fixes:

  • Orbs no longer wander (only patrol)
  • Goons pathing has been improved (not running into walls as often)
  • Level Select room text is now readible


New Features:

  • Level Select room is cleaned up, uses different tileset
  • Entering a level as a new animation
  • Physics system now includes pushing and knockback
  • Oil is now slippery
  • Goons attempt not to kill eachother
  • Goons will throw grenades at players in crawlspaces
  • Added animations for attacking while crawling
  • Added Music
  • Added SFX for being unable to open doors



Download the Win64 ZIP here!
Download the Win32 ZIP here!

(This is a very early alpha, the game may crash and is has a number of unfinished levels and assets. Feel free to give us feedback here, or you can email us at oakmoundstudio@gmail.com. We have limited machines to test this game on, so we'd especially appreciate messages about any crashes that the game produces!)
.

Sunday, June 25, 2017

Collision Features

Oak uses a fork of rtreego for its collision with extended features like raycasting and trigger functions on collision with labelled entity types.

One of these features allows a programmer to receive collision events when collision begins and ends against certain labels, and another lets a programmer attach collision spaces to vectors so whenever a character moves around they'll take their collision space with them. These two features are demonstrated in the following code and animation of the resulting compiled program:


Monday, June 19, 2017

Item rarity

In a previous post we described how different items are created and mutated on some of their attributes and today I want to talk a bit more about how this works on firearms. Today we have three rough types of firearms for the player to use each with the following stats: delay between shots (Delay), usable ammo types(AmmoTypes), spread of fire (Spread), ammunition consumed per shot (AmmoPerShot), volume of effect (Volume), current upgrades (Upgrades). Each type of weapon has its own rating system where it gives itself a rarity on a scale from 0 to 1 which is used both in loot placement and to display quality to the user as seen below where the yellower a firearm is the better.
Great Pistol
Below Average Pistol
In fact not only does the inventory representation change based on quality but the item's appearance on the ground changes as well. Currently we do not have models for firearms on the ground, so they show as black boxes, but we do have particle effects to show you their rarities!

Rarity Particles
With our generation system and rarity system be uniquely determined by a given firearm type we keep a consistent metric while also ensuring that our weapon types feel really different. For example while our sprayers (think flamethrowers) are quite different from rifles, our pistols operate in a pretty similar hitscan fashion to our rifles. To distinguish these two weapons and keep their niches separate you will find that pistols tend to be slower with potential for more power while rifles tend to have more Spread with much smaller Delay and less AmmoPerShot.

Thanks for reading, try to experiment with weapon types and keep your eyes peeled for rare weapons!

Sunday, June 11, 2017

Devices; Play Smarter

Agent Blue can be pretty hard if you are just running around shooting normally, so which two devices you decide to keep around can really make or break your run. As of the current build version 0.0.2 the player is able to use two devices at a time, find new devices, and find drops that recharge their devices.  Devices can do anything from modifying your form of sight to letting you fake your death
Normal Sight

Night Vision (extended sight)


Faking Death












In version 0.0.2 there are 7 types of devices with another 5 already planned. Try to find/play with them all!

Agent Blue 0.0.2 Demo


0.0.2 Changelog:

Bug Fixes:

  • Enemies will spawn out of bounds and inside walls less (maybe not at all!)
  • Four-core machines will experience significantly less (hopefully zero) input lag
  • Fixed a crash related to windows thinking Oak was not starting up fast enough
  • Devices have had a number of bug fixes
  • Some color display issues with particles were resolved


New Features:

  • Crawl Spaces have unique walls


Download the Win64 ZIP here!
Download the Win32 ZIP here!

(This is a very early alpha, the game may crash and is has a number of unfinished levels and assets. Feel free to give us feedback here, or you can email us at oakmoundstudio@gmail.com. We have limited machines to test this game on, so we'd especially appreciate messages about any crashes that the game produces!)
.

The Oak Renderable Interface

This post will serve as a tutorial through the render package, Oak's largest built in package and the basis for drawing elements to a window.



To draw arbitrary objects to a window, Oak uses the Renderable type, which in short is any type that can be drawn, has a position, has an order for when it should be drawn with respect to other Renderables (a layer), and can be Un-drawn. Particles, as written about a few posts past, are themselves renderables and are in a subpackage of the render package.

Most Renderables are also Modifiables:



So while Oak has a number of built in Modifications involving color modification, scaling, and shape changing, users of the library can build their own Modifications using this signature, and the result will be compatible with most built in Oak types.

Users can also write their own Renderable or Modifiable types, an example being the radar in Agent Blue (although this is 10 months old, and API improvements have made it easier to do some things the radar is doing).

Oak currently has nine Renderable types outside of particles:

  • Sprite: the most basic Renderable, a sprite is just an *image.RGBA with a position. There are plenty of ways to construct a Sprite-- lines, boxes, gradients, noise, and of course loaded image files are all built into the engine.  
  • Text: anything that implements the fmt.Stringer interface can be turned into a piece of text that can be assigned Font settings on the fly.
  • Animation: a sequence of positions on a Sheet animating at some frame rate.
  • Sequence: an animation that does not use an underlying sprite sheet, but a list of renderables instead. 
  • Composite: a list of other Renderables to be drawn as one unit.
  • Compound: a map of Renderables that can be switched between at will, where only one is drawn at any point in time. This is useful for characters that can have one of any number of animations active, like attacking versus moving. 
  • Polygon: a list of points drawn as a 2d shape.
  • Reverting: a Modifiable that can be modified multiple times, but remembers what it used to look like. This is used for applying temporary effects.
  • ScrollBox: a box which wraps around some set of Renderables and draws them inside a small viewport. This viewport can scroll horizontally and vertically, and the renderables inside the ScrollBox can be set to reappear after they've shifted some amount. 
Look for tutorials on using each of these types once Oak is released publicly.

It's worth noting that all of these types are implicitly 2D, and this is at least in part because we don't want to target 3D drawing or 3D games until we've got the current API stable and performant. I have experimented with making 3D Renderables in Oak, and that work can be seen here.

Thursday, June 1, 2017

Agent Blue Demo 0.0.1

We've put together a demo release of Agent Blue!

Download the Win64 ZIP here!
Download the Win32 ZIP here!

If you dont know which one to choose, choose the Win32 version, and stay tuned for a potential Linux release in the coming month!

Note that, as this is a very early alpha, the game may crash and is has a number of unfinished levels and assets. Feel free to give us feedback here, or you can email us at oakmoundstudio@gmail.com. We have limited machines to test this game on, so we'd especially appreciate messages about any crashes that the game produces
.