Dev Blog

Dev-Blog 230: Transportive Tour Guides!

07/27/2016

devblog_header08

Welcome back followers of the fearsome!

This week we’ll be checking out some more of those nifty characters we added recently! We’ve been creating these guys during our dev-streams and they’ve been turning out pretty well!

These characters ask for different treasures as you go through the game and if you like finding extra stuff to fight and collect then be sure to keep an eye out for what they are after!

VS_silhouette182

Above you can see some of the cast of tour guides that will lead our players to new challenges if they’d like to tackle them. Since these guys are after some key treasures, Players are going to have to make a decision whether to gift the loot to these guys or keep them for themselves. Some of the Areas these guys will lead you too are quite difficult so it’ll end up stopping your run short and you’ll lose out on that new treasure!

VS_silhouette183

Here we can see that somber fisherman pining for a sweet aquatic statue of gold! You’ll have to check out the game to see where he’ll take you if you part with your spoils! The Tour guide mechanic helps us get some more mileage out of some of our areas and also adds some funny characters to the mix. We are super happy to have them all in there!


And don’t forget that we’ll be Dev-Streaming at 4PM to 6PM PST today! It’s been a really great experience sharing our development process with you guys and we hope to see you there!VS_DevstreamBanner


And that’s it for this week’s dev-blog! Hope you had a good time hanging out and checking up on or process and until next time, keep those tour guides full of character!

Jesse_avatar64-Jesse

Twitter: Nick: @nickwaanders Jesse: @jouste Caley: @caleycharchuk SlickEntertainment: @SlickEntInc

Facebook: https://www.facebook.com/SlickEntertainmentInc

Twitch: http://www.twitch.tv/slickentertainmentinc

Posted by: Under: Art Work,Slick Entertainment,Vikingsquad Comments: Comments Off on Dev-Blog 230: Transportive Tour Guides!

Dev-Blog 229: Map Action and Ikenfell Shout out!

07/20/2016

devblog_header08

Welcome back followers of the fearsome!

This week we’ll jump on some of the last touches we’ve been adding to that ever-changing world map! World maps are super tricky and constantly being updated and changed. Our areas have gone through quite a few face lifts and our old world map is a little outdated.

That just means we get to tackle it again! This time we push the camera right in and keep the player’s selection focused and bring out some of our more famous level elements in the zone continents! Below you can see that our new zone one drawing has some cool kraken tentacles, Snowclaw mining gear, and dig site tents! This will hopefully keep our players up to date on where they are adventuring and also gives us an excuse to have more details!

VS_silhouette179

And here’s another look at some of the specifics we can fit in with our new, larger zone images. The Snowclaw tavern entrance is pretty iconic with the twin fishbiers and the kings statue is one of the first things you’ll be running into in zone 3. Now that they’ll be easy to see on the world map players should be able to remember the areas a bit better and be more connected with their choices!

VS_silhouette180


And a quick shout out to our buddy Chevy Ray who has a mere 3 days left on his Ikenfell Kickstarter! Congratulations on reaching your goal pal! Of course more support means more stuff from that super charming game so go check it out early while you still can and help out a super great dev!

VS_silhouette181


And remember that we’ll be Dev-Streaming today at 4pm PST! Come hang out with the crew while we hammer out some more artwork for Viking Squad as we sail ever closer to shipping!

VS_DevstreamBanner


And that’s it for this week! Thanks a ton for dropping by and checking out our progress. we are getting super close as Nick finishes up the networking on the PS4 (a one man army that guy is) and Caley tightens up all the encounters for maximum engagement! Hope your week had been great and until next time, keep those world maps in a constant state of being updated!

Jesse_avatar64-Jesse

Twitter: Nick: @nickwaanders Jesse: @jouste Caley: @caleycharchuk SlickEntertainment: @SlickEntInc

Facebook: https://www.facebook.com/SlickEntertainmentInc

Twitch: http://www.twitch.tv/slickentertainmentinc

Posted by: Under: Art Work,Slick Entertainment,Vikingsquad Comments: Comments Off on Dev-Blog 229: Map Action and Ikenfell Shout out!

Dev-Blog 228: Boiler Room Bonanza!

07/13/2016

devblog_header08

Welcome back followers of the fearsome!

We hope your week has been going by well as we here at Slick forge out the remaining bits of Viking Squad! We’ve been testing the online and it’s feeling really great as well as diving into our “Hard Mode” end game content and getting those final fights challenging!

This also gives us a chance to go over some of the levels with a bit of cool polish and artwork now  that everything is in the final stages. One of these areas that I wanted to touch up with some new art was the Snowclaw’s basement. This area is cool because it’s darker and has these neat hot coal vents in the floor that glow orange and send embers up into the air. There wasn’t a lot of supporting artwork there but we liked the idea so much we decided to make it a boiler room! The Snowclaws need a lot of heat to get their fish bier just right!

VS_silhouette177

Above you can see the steps and how great it is to be able to just snag screenshots and start adding elements right into the game! We are also lucky that the lore is fuzzy in Viking Squad so complicated plumbing systems still feel alright in our weird and wacky world. the slots in the boilers and stoves also allow us to have interesting pools of light and gauges offer some fun places to add small bits of animations!

VS_silhouette178

here’s a quick shot with some lighting and an idea of the modular pieces we can use to mix around and make whatever pipe patterns we want. The boilers really add a bunch of interesting shapes to this area so I guess they’ve done their job! As usual the images are drawn at a pretty high resolution so they can be scaled and twisted around to get more mileage out of the elements.


 

And remember that we’ll be Dev-Streaming today at 4pm PST! We’ve been having a blast interacting with our viewers and working on the game with an audience so be sure not to miss it!

VS_DevstreamBanner


 

So that’s this week’s Dev-Blog! Thanks for stopping by as we sail ever closer to shipping! Keep those blades sharp and until next time, keep those boiler rooms interesting!

Jesse_avatar64-Jesse

Twitter: Nick: @nickwaanders Jesse: @jouste Caley: @caleycharchuk SlickEntertainment: @SlickEntInc

Facebook: https://www.facebook.com/SlickEntertainmentInc

Twitch: http://www.twitch.tv/slickentertainmentinc

Posted by: Under: Art Work,Slick Entertainment,Vikingsquad Comments: Comments Off on Dev-Blog 228: Boiler Room Bonanza!

Dev-Blog 226: Tools for tuning

06/29/2016

devblog_header08

Welcome back followers of the fearsome!

It’s Caley here this week and I’ve got a fun post on a tool we use to tune the in-game economy of Viking Squad (not the real economy, Nicks making a different tool for that).

Game economies, and real ones, are always hard to nail down as you can never fully predict how people will interact with complex systems. Players will miss things, they’ll exploit systems and find bugs you had no idea existed. They may even choose to opt out of certain mechanics entirely. To be fair many of these things are what makes a game engaging. But as a developer you want to leave as little up to chance as possible and develop an economy that rewards but also pushes back.

There are numerous ways to go about testing and tuning a game economy. You can enlist friends and playtesters to play the game so you can see how they interact with it (Early Access anyone?). You can playtest it yourself by trying to mimic various play styles. You can even try to find all the major outliers such as bugs that may cause some players to have an abnormal experience. All of these can and do work to make your game a better experience.

So as we put the finishing touches on the game these are a lot of the questions I spend my time addressing. If you add randomization to the system, such a random drops from enemies the outliers can be even tougher to track down. Let alone how the game will play for the average user. To make all this a bit easier on us Nick has made a tool that simulates thousands of games played and returns the averages. Which you see below.

DestinationStats

Using this tool i can select parts or entire levels and see the average Treasure gain the player is getting based on 1000’s of games simulated (Treasure is the in game currency used to upgrade your character in Viking Squad). You can see it in action below.

DestinationStats

The tool pulls directly from our data so it is always relevant and up to date making it great for checking random drops and ensuring there are no weird bugs that i left on some odd object. I can also see in real time how changes I make affect our economy. It shows the rates for one, two and three player games since more enemies spawn if more players are in the level.

One thing this tool doesn’t show is if a treasure is gained through a secret or some skillful play. This is where I step in and decipher the averages to better understand how your various players will get through the game.

That’s all for this week. Be sure to stop by Jesse’s twitch stream today at 4pm pst.

VS_DevstreamBanner

Twitter: Nick: @nickwaanders Jesse: @jouste Caley: @caleycharchuk SlickEntertainment: @SlickEntInc

Facebook: https://www.facebook.com/SlickEntertainmentInc

Twitch: http://www.twitch.tv/slickentertainmentinc

Posted by: Under: Slick Entertainment Comments: Comments Off on Dev-Blog 226: Tools for tuning

Dev-Blog 225: Frame timing problems

06/22/2016

devblog_header03

Welcome back, followers of the fearsome!

This week I fixed a problem that has been popping up in our game every once in a while. Our game normally runs at smooth 60 frames per second, but every once in a while the game would start to stutter and just generally become very un-smooth, man. The stuttering would last a few seconds and then the game picked up again and was buttery smooth once more. I’ve got some profiling routines in our game to measure what is going on, but every time I started profiling when this effect would show up, it would magically disappear, and the profile data would show that we’re perfectly within the desired frame times. So what is going on?

Our main game loop waits for the video buffers to swap, and then it checks how much time has passed to determine how many times to step the game. A time-accumulator float value is used to keep track of the time elapsed since the game was stepped, which is a pretty basic practice in most games. It guarantees that the game is stepped at 60hz on average, over multiple frames. The general code looks something like this:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
static const float GameTimeStep = 1.0f/60.0f;

void Game::Update(float dt)
{
	m_timeAccumulator += Util::Clamp(dt, 0.0f, 0.1f);	// Clamp the value to prevent spiral of doom
		
	while (m_timeAccumulator >= GameTimeStep)
	{
		Step();
		m_timeAccumulator -= GameTimeStep;			
	}
}

 
So in this code, m_timeAccumulator is the float value in the Game class that is increased by the delta time every frame, and then the game is stepped however many times to make sure the game gets simulated 60 times per second. This piece of code handles variable frame rates quite well, if the delta time dt is 1/30th of a second, the game will just step twice in a row, to maintain the 60x per second simulation rate.

(Oh, a small note about the spiral of doom. This happens when the game takes longer to step than ‘real time’. By capping the incoming delta time, we potentially slow down the in-game time, but at least the game doesn’t grind to a halt.)

Ok, we’re all good then, right? The code above should fix all our problems, no? Well, not exactly. The code above has one problem that is a bit hidden, and it only really shows up if the render rate is the same as the game step rate AND your time accumulator is very close to a multiple of your game step time. For example, in our game the problem only occasionally shows up when running in a mode that is 60Hz.

Hopefully the graph below will make it more clear:

frametimingbefore600_2

 

Lots of info in the graph above, so here’s some explanation. The black line at the top shows the perfect 60x per second game update time we want to have. The green dots are measured frame times. We measure our elapsed frame time directly after a the swap-buffers call, using the highest resolution timers available. I have found that despite using the most precise measuring routines, there will still be a bit of variation. In the graph you can see that the green dot are somewhat randomly offset from the perfect rate we’d like to have, this is the variation. And this variation is what is causing the problem I’m talking about. Sometimes the measured frame time is a bit before, sometimes it’s a bit after the actual time.

The perfect amount of game steps to take every frame in this case (60Hz render, 60fps game step) is of course 1. In fact on the console games I’ve shipped, I sometimes just hard-coded one game step per render frame, but on PC’s with wildly varying video modes and video cards, this isn’t viable. The preferred game steps are represented by the blue outlined boxes for each rendered frame. However, using the code above, the actual game steps done per frame is shown by the magenta boxes. This shows that in the first render frame, the game isn’t stepped at all, and the next render frame steps the game twice to make up for it. Then there’s another frame of zero game steps, etc. In other words, very un-smooth behaviour.

Now, how did I fix this? Well, in our game it doesn’t really matter too much if the game step is running at exactly 60 fps, or if it’s running at a slightly higher rate. So, I introduced a fuzz factor:

frametimingafter600_2

The fuzz area is basically a time difference that is ‘acceptable’ when determining how many times to step the simulation. It’s only really used ‘downwards’, so for example if your game step is 10ms, and you get a frame time of 9ms, you might still deem that acceptable, and step the game. If your frame time was 12ms, then the fuzz factor isn’t technically needed, and the game is stepped.

Note that the frame steps are exactly where we want them! Buttery smooth. The game update code now looks like this:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
static const float GameTimeStep = 1.0f/60.0f;
static const float FuzzFactor = 0.96f;	

void Game::Update(float dt)
{
	m_timeAccumulator += Util::Clamp(dt, 0.0f, 0.1f);

	while (m_timeAccumulator >= (GameTimeStep * FuzzFactor));
	{
		Step();
		m_timeAccumulator = Util::Max(m_timeAccumulator - GameTimeStep, 0.0f);
	}
}

 
The fuzz factor is set to 0.96, which basically allows the game to speed up from 60Hz to about 62.5Hz.

Since I put in the code above, the occasional stuttering when running in a video mode of 60Hz seems to have disappeared from our game. When running at different frame rates such as 50Hz the game will still ‘catch up’ every once in a while causing a one-frame jitter. This is distracting and not preferable, but I don’t currently know of a way to fix this other than running the simulation at a much higher rate to get more granularity (not really feasible in our case), or by interpolating everything in the renderer (which might introduce frame lag, which is also undesirable).

Anyway, I am happy this problem is no longer an issue, and thought I’d share the idea if you’ve seen problems similar to this. Yay, one step closer to shipping! :)

Alright, that’s it for this week, keep those frames buttery smooth!


As usual, today at 4pm there will be another Dev Stream with Jouste the Drawbarian. Don’t miss it!

VS_DevstreamBanner

 

-Nick

Twitter: Nick: @nickwaanders Jesse: @jouste Caley: @caleycharchuk SlickEntertainment: @SlickEntInc

Facebook: https://www.facebook.com/SlickEntertainmentInc

Twitch: http://www.twitch.tv/slickentertainmentinc

Posted by: Under: Slick Entertainment,Tech Comments: Comments Off on Dev-Blog 225: Frame timing problems

Follow us!

titlebutton_twitter titlebutton_facebook titlebutton_youtube titlebutton_twitch

Join our mailing list!

/ /

Dev Blog

July 27 2016

Welcome back followers of the fearsome! This week we’ll be checking out some more of those nifty characters we added recently! We’ve been creating these guys during our dev-streams and they’ve been turning out pretty well! These characters ask for different treasures as you go through the game and if you like finding extra stuff […]