Thursday, January 1, 2015

Sub Rosa Alpha 23

UPDATE 1/7
Fixed player character bug
Bandages can now be used twice
Old spawn building is now a hospital
Can exit immediately in hospital (player's character will disappear)
Otherwise your character will remain there for 1 minute
Trade missions can now have more than 1 team with cash

UPDATE 1/5
Death tax is now 5% of your cash over $10,000
Civ killing with 2-5 mins of spawn is now $10,000 plus 5%
Changed stock calculation, now decreases half of the potential increase if you fail (another team gets the disk)
Fixed client stock report bug

UPDATE 1/1
Fixed body parts getting stuck on stairs or windows
Fixed train window bug
Fixed stock display bug
Limited car buying to 3 per hour
Limited stock to 100,000 shares per team


Here's some of the changes for Alpha 23:

Stocks:
You can now buy stock in your company, if you succeed in missions the value will go up, if you fail it will go down.  When you sell stock you get 95% of the value.

Withdrawing money:
The banking in your base is now the company account, if you have a trade mission you can withdraw up to the amount in the mission info.  At the end of the mission the money withdrawn will affect your stock price according to the market cap (value of the stock times the number of shares).  Depositing money in the base also goes into the company account, with the same formula.  Example:  If the total shares owned by your team is 100, and the value is $100, if you deposit $1,000 the value of the stock will increase to $110.

Train:
You will now spawn outside of the city, the train should come around every couple minutes.  Get on it.

Civilian killing penalty:
There is a $10,000 penalty for killing a civilian within 2-5 minutes of their spawn, the amount is randomly chosen by the server.  If a civilian picks up a gun the timer goes to zero.

Chat:
There are now 3 chat modes, normal, yell and whisper, this will affect the range at which players can see the text.

T: Talk mode
Y: Yell mode
U: Whisper mode
Enter: Chat

Added:
added $1000 bill
added landscape
added newspaper
added ambient occlusion option

optimized rendering

fixed aim
fixed glass slowdown
fixed player movement/standing up
fixed view while rolling
fixed players warping through walls/floors
fixed car engine sound
fixed traffic

Friday, June 13, 2014

Programming Tips: Comfortably Enum

After reading Casey Muratori's great articles on programming I've been inspired to post a few things on how I program.  In the last article he talked about enums, something I didn't really start using until after Gish, which can be very useful.  However, it can be unwieldy if you try to enumerate too many types, like for example a list of textures.  Say I have 4 player types, and 4 vehicle types, I could do something like this:

enum vehiclelist
  {
  VEHICLE_CAR,
  VEHICLE_TRUCK,
  VEHICLE_PLANE,
  VEHICLE_VAN,
  VEHICLE_END
  };

enum texturelist
  {
  TEXTURE_PLAYER01,
  TEXTURE_PLAYER02,
  TEXTURE_PLAYER03,
  TEXTURE_PLAYER04,
  TEXTURE_VEHICLE01,
  TEXTURE_VEHICLE02,
  TEXTURE_VEHICLE03,
  TEXTURE_VEHICLE04,
  TEXTURE_END
  };


Then to bind the texture for the plane I would use:

  vehicletype=VEHICLE_PLANE;
  glBindTexture(GL_TEXTURE_2D,texture[TEXTURE_VEHICLE01+vehicletype].glname);


The problem I ran into was if I wanted to add more vehicle types, or support more players, I would have to change the texturelist enum.  Also the enum would start to get very long, and while there's ways to shorten it I still felt that it was getting messy.

What I came up with instead is using a simple struct that's enumerated at run-time.  So the texture enum looks like this:

struct
  {
  int loc;
  int player[MAXNUMOFPLAYERS];
  int vehicle[VEHICLE_END];
  } texturelist;

void setuptexturelist(void)
  {
  int count;

  texturelist.loc=0;
  for (count=0;count<MAXNUMOFPLAYERS;count++)
    texturelist.player[count]=texturelist.loc++;
  for (count=0;count<VEHICLE_END;count++)
    texturelist.vehicle[count]=texturelist.loc++;
  }


And to bind the texture:

  vehicletype=VEHICLE_PLANE;
  glBindTexture(GL_TEXTURE_2D,texture[texturelist.vehicle[vehicletype]].glname);


The advantage here is I can add or remove vehicle types without having to change the texture enum, and I can have all types of textures without having a giant enum.  The only disadvantage is you have to call the setuptexturelist function at the beginning of the program.  This is actually the cause of the sound bug in Sub Rosa, where the car crashing into something plays the gunshot sound.  I wasn't calling the setupsoundlist function in the dedicated server, so all the of the soundlist is set to 0, which is the gunshot sound.  So you do have to remember to call the functions to enumerate even if the dedicated server isn't playing any sounds or displaying any textures.

And for making it through that here's a video of boxman falling over a wall:

video

Tuesday, April 22, 2014

Humble Weekly Sale



The new version of the Cryptic Sea EP is now available in the Humble Weekly Sale, you can get it and some other awesome games for less than whatever you want.  There's a bunch of new features, including singleplayer mode for Skate or Don't!, and 5 new tracks and cars for Touring Car Legend.  If you already bought the game with the Humble widget you can download the new version from the Humble webpage.

I've been making good progress on the other games also, should have some updates on those soon.

Thursday, February 20, 2014

Advice for Games Journalists

A lot of games journalists ask me how to get my games on their website, so I thought I would write a few tips on finding interesting games to write about:

1.  Look for games

Don't just sit there waiting for a developer to email you; go on forums, check Youtube/Twitter, see what people are playing.  Otherwise you're missing out on a lot of interesting games and only covering the developers who spend a lot of time writing emails.

2.  Do some research

When you do see a game on Reddit or another games website, don't just paraphrase what someone else said.  Try playing it or email the developer for a build, and then form your own opinion.  Don't be afraid to go against popular opinion!

3.  Be persistent

If I don't write you back about my game it might just be because I'm busy making it, try again or contact me on Twitter.

4. Don't fall for it

Just because Sniper Elite 3 made a video explaining their "X-ray kill-cam" doesn't mean you have to post about it.  Just because a mass murderer requests a PS3 in prison doesn't mean you have to post about it.  I know it's easier just to write a couple sentences and add a link to another website, but if you want to have good content you're going to need to put some more effort into it.  The first 5 seconds of viewing your website are the most important, if I see things like that I'm going to close the browser tab.


Alex Austin is the creator of BioShoot Infinite +1 and other games you haven't heard of, such as Sub Rosa, Hockey?, the Cryptic Sea EP, A New Zero, Rocket Builder, Relativity and Somnia.

Wednesday, January 22, 2014

Omega Jam


Omega Jam is a month-long game jam where 6 teams of indie devs try to finish current projects.  My goal is to finish an alpha of Sub Rosa with all the new features.  The idea goes back to the first 7 Day FPS game jam, David Rosen and I were at the IGN Open House during that week, he made Receiver and I made the prototype for Sub Rosa.  We both accomplished a lot during that week, and thought about doing something like that but trying to finish games instead of starting new ones.  The question was how to organize it, and how long should it be.

A month seemed like the perfect amount of time, enough time to get a lot done but still having that pressure of a game jam.  A few months ago we got in touch with Double Fine who had some extra office space and were willing to let us use it, and the idea finally started to come together.  It should be interesting, it's already been useful being able to bounce ideas off each other, and having that extra motivation of working around really dedicated people.  In the end it will be the games that decide whether it's a success or not, I think there will be some really cool things that come out of it.

Friday, January 10, 2014

Local Multiplayer Proposal


Local multiplayer games are gaining popularity on PCs, with games like Samurai Gunn, Towerfall, and the hugely popular Skate or Don't!.  But what if a player is on another person's computer but still wants to have their stats saved or use their characters?  How can multiple Steam accounts connect at the same time?  Here's an idea:

When a player is going to a friend's for local mutliplayer, they request a temporary password from Steam.  This would be 6-8 digit, or perhaps a random word.  On their friends computer they enter their name and temporary password, and Player 2 is now linked to their account.  This temporary account link would only be used for saving stats, and couldn't be used to buy games or anything else.  It would also only work for a limited time, maybe a day or so.

With this method players could play local multiplayer games on their friend's computer and have their stats and characters, without having to worry about their account being hijacked.  I've thought about implementing something like this myself, but I don't have the time or money to set up a global account system yet.  Hopefully someone like Valve will implement something like this so people can play with real friends on real couches.

Wednesday, January 8, 2014

Cryptic Sea 2014 Year In Preview



I've been making good progress lately, here's an update:

Cryptic Sea EP

The main additions are for Touring Car Legend, we now have 5 tracks and 5 cars, I'll try to get the netcode in as well.  Skate or Don't! has a singleplayer mode now, with an old-school lives system.  For Volta I've mainly been working on the graphics, I do want to fix up the puzzle mode soon though.  You can still get it for $3 (I'll be raising the price for the next version) at: http://www.crypticsea.com/EP/
New version should be ready by next week.

Hockey?

We've been working on getting the skating and stickhandling of the new physics up to tournament quality, it takes quite a bit of tuning since it's a whole new player/stick model.  You can pre-order the new version and try out the prototype for $8 here: http://www.hockeyquestionmark.com/

A New Zero

Two things have been holding up development, human physics and the voxel landscape.  I've made some good progress on both, so I'll hopefully have some things to show soon.  You can see in the video me trying to land a loaded cargo plane, the new flight model makes the flying a lot more interesting I think.

Sub Rosa

I have some things I'll be revealing later this month, stay tuned.