Dev Blog

Dev-Blog 173: Build O Matic

05/27/2015

devblog_header03Welcome back followers of the fearsome!

This week it’s time for another tech-post. However, it won’t be about a shiny new rendering technique. Instead it’s about an equally important part of the process of creating a game: the build machine. In my IGS/GDC talks about developing N+ and Scrap Metal I’ve stressed how good it is to have a build machine that can reliably and repeatedly build your game from scratch and package it all up into the exact package you need. There are many different packages you can use to setup your build-machine, but most of the ones I (admittedly briefly) tried were either too complex for my needs or couldn’t do exactly what I wanted. So I built my own! :)

The Slick build system is written entirely in C#, and in essence is just a way to run tasks on a remote machine. So it can build the game, but it can also do non-build tasks such as running tests or re-sizing textures. The system is broken up in to three main parts that communicate through a TCP/IP connection. The three main parts are the Master-Server, the Drone, and the Client. Each of these has a different role, which I will talk about below. First, a rough overview of the build system:
VS_silhouette86

 

The Master Server

This is the program running on the main build computer. In our case this main build computer is a spare computer we had, running Windows 8.1. It has a few shared directories setup where it puts the completed builds, so that anybody in our work network can access the completed builds. All the master server does is wait for drones and clients to connect, and answer to their needs. It is the center point of the build system. Here’s a screenshot of the master-server program:
BuildMaster

On the left you can see the currently connected drones, and because one is selected, it will show the tasks it can do, and the queue of tasks. The queue also shows tasks that were completed in the past, including if they failed or succeeded.

The Drone

This is the actual program that performs tasks. There can be multiple drones with different sets of tasks they can perform, all connected to the same master server. The drone is a console application, so it’ll look like this when it’s running:

BuildDrone

The tasks each drone can do are defined in an XML file. Below is an example of an XML file that can be used by our windows based drone to build the game in rtm (release to manufacture) mode, and it will send emails when builds succeed or fail:

<SETTINGS>
  <MASTERSERVER HOSTNAME="build_o_matic" PORT="25000" RETRYPERIOD="10">
  </MASTERSERVER>
  <DRONE ALIVEMESSAGEPERIOD="30" SMTPSERVER="mail.shawcable.com" SMTPUSER="" PASSWORD="">
  </DRONE>
  <TASKS>
    <TASK NAME = "Build Windows RTM">
      <ACTIONS>
        <ACTION COMMAND="svn" ARGUMENTS="cleanup ..\..\..\..\" TIMEOUT="-1" CONTINUEONERROR="false"> </ACTION>
        <ACTION COMMAND="svn" ARGUMENTS="cleanup ..\..\..\..\..\VikingSquad" TIMEOUT="-1" CONTINUEONERROR="false"> </ACTION>
        <ACTION COMMAND="svn" ARGUMENTS="update ..\..\..\..\" TIMEOUT="-1" CONTINUEONERROR="false"> </ACTION>
        <ACTION COMMAND="svn" ARGUMENTS="update ..\..\..\..\..\VikingSquad" TIMEOUT="-1" CONTINUEONERROR="false"> </ACTION>
        <ACTION COMMAND="..\..\BuildGame\BuildGame.exe" ARGUMENTS="-windows -rtm" TIMEOUT="-1" CONTINUEONERROR="false"> </ACTION>
      </ACTIONS>
      <EMAILNOTIFICATION RECIPIENTS="mrbuild@slickentertainment.com"> </EMAILNOTIFICATION>
    </TASK>
  </TASKS>
</SETTINGS>

If you look closely at the XML, you’ll see that this build scrip first calls SVN to clean-up and update two directories (one for data, one for code). Then it calls ‘BuildGame.exe’, which is a separate app I created that actually creates the builds, copies the files to the correct directory, creates a versions.txt file, etc. Come to think of it, this is the actual build-machine, really. When it’s done it copies the completed build into the shared directory on the build server. The drone is written as a console app in C#, and runs on windows as well on OSX (using Mono).

The Client

The Client is the interface that allows anybody to request builds. It looks like this:

BuildClient

When the client is started, it connects to the master server to request the list of drones. This list of drones is shown in the list view on the left. After you select a drone, the tasks that drone can perform are listed in the ‘Possible Tasks’ list, and the Queue is shown below. To request a Windows RTM build, you simply select ‘Build Windows RTM’ and click ‘Enqueue Task’. The Queue will then show the date and time the request was made, and have the status set to ‘Pending’. Once the build is complete, the Status will change to either Success or Failed, and the information can be viewed on why it might have failed.

So that’s it! We use this build machine for our regular build tasks, such as creating builds for PC and PS4, uploading new builds to Steam, and even to run our automated texture resize task, which resizes textures based on how big they appear on screen in the game (which saves TONS of memory).

Alright, that’s it for this week. Keep those build-machines building!

Oh, almost forgot! As per usual we will be Dev-Streaming today! It’s always a great time running into you guys while we work on Viking Squad. Hope to see you there at 4pm-6pm PST!

Nick_avatar64-Nick

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

Google+: Nick: +NickWaanders Jesse: +JesseTurner Caley: +CaleyCharchuk

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

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

 

Posted by: Under: Slick Entertainment Comments: 0

Dev-Blog 172: Procedural Painting!

05/20/2015

devblog_header08

Welcome back followers of the fearsome!

This week we’ll be taking a quick look at some of the ways we populate levels here in Viking Squad! We are working on getting good looking interiors working in the game and are starting with walls and broad elements that will be taking up the majority of the visual space.

VS_silhouette84

wallbuilding_gif

above you can see the basic set up on how we can paint walls in our levels. We start by making a simple tiling texture for the walls that need to remain pretty simple because we are going to be populating that space with stuff like windows and other decals to make them look cooler.

VS_silhouette85

We can also make things like this Snowclaw bar build itself by painting! We can also randomize the things that we’ll be seeing on top of the bar in the procedural. This can keep our bars looking different every time you run by them and start your brawling!

———-

And It’s that time again! Today we’ll be jumping on the Dev-Stream at 4pm-6pm PST! We’ve been having an awesome time getting to know our regulars and meeting new people interested in watching the creation of our game! Hopefully we’ll be breaking 1000 followers today! Come on by and tell your pals!

VS_silhouette47

and that’s it for this week! Hope you’ve liked the quick look into our super cool tools! And until next time, keep those Snowclaw interiors cozy!

Jesse_avatar64-Jesse

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

Google+: Nick: +NickWaanders Jesse: +JesseTurner Caley: +CaleyCharchuk

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

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

 

 

 

 

Posted by: Under: Art Work,Slick Entertainment,Vikingsquad Comments: 0

Dev-Blog 171: Another Art Process Post!

05/13/2015

devblog_header04Welcome back followers of  the fearsome!

This week we are going to cover another bit of art process! Hooray!

Working on a game that requires as much art as Viking Squad can be pretty daunting as an artist. What’s pretty important is being able to keep up drawing for “fun” and keep your skills and imagination flowing properly. This is probably why I’ve always tried to be a fast artist first, so I can always jump on a fun side project in my spare time.

Working on speed also helps you think about rough shapes faster and generally helps with being spontaneous. A lot of the neater details in Viking Squad have been born right out of sloppy speedy sketches and improvising on quickly drawn shapes!

VS_silhouette81

Here’s a rough sketch of our favorite Viking Squad Draugr! This guy came together pretty quickly with a couple rough sketches. The pose lent itself to have these interesting items like the hook and the candle. These elements don’t need to be set in stone or anything but it helps us get a bigger picture of what’s up with these baddies.VS_silhouette82

Here’s a tighter line pass, flatter colors and some shadows! not a lot of new ideas are generated here as the foundation of our drawing was already laid down in the rough sketch. Shadows help us see the big bulky shapes and get a better handle on our Draugrs when we draw them later!

VS_silhouette83

and here’s the final details! Since this isn’t going right into the game as an asset I can play around with some texture overlays and this scan line filter I’ve been playing around with. It’s kind of a nostalgic thing because I remember watching cartoons on a Saturday way to close to the TV and these lines all over the image.

And that’s about it! These small little side projects help keep me amped on working on Viking Squad and even though they don’t go right into the game they can be used as promotional stuff and an interesting topic to dev-blog about!

————

And remember guys we are Dev-Streaming today at 4pm – 6pm PST! We’ve been having a blast running into familiar faces and meeting new ones so be sure to show up!

VS_silhouette44

and that’s it for this week! Hope you’ve like d the quick look into some more art stuff! And until next time, keep those sketches coming in quickly!

Jesse_avatar64-Jesse

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

Google+: Nick: +NickWaanders Jesse: +JesseTurner Caley: +CaleyCharchuk

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

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

 

Posted by: Under: Art Work,Vikingsquad Comments: 1

Dev-Blog 170: Out Camping with Persistent Health!

05/06/2015

devblog_header08

Welcome back followers of the fearsome!

This week we are getting together submissions for some upcoming events so it’s been all about polish and tightening up the experience! We’ve started implementing the idea of persistent health over the course of the destination that has really made things interesting. To combat the idea of low player health we’ve looked into some pretty neat solutions.

VS_silhouette79

One thing we recently added to Viking Squad is Campsites! These are areas where players can relax a little and change the tempo of the game. When players come across the camping areas there’s a chance for them to fill up their healing potions and scarf down some delicious hams. Some campsites also spawn treasure goblins to tackle or even have equipment vendors show up!

In the picture above we can see a delicious boar being roasted over a fire as well as our trusty longship. We can artistically theme up these campgrounds to match the zone we are in, the boar could be a squid or a moose or anything we want!

VS_silhouette80

But what happens when you’ve been such an awesome Viking that enemies haven’t even hurt you during your voyage!? Well we turn those healing hams and flasks into treasure of course! Controlling what we reward players based on their state makes running into a campsite great no matter what you’ve gotten up too!

———-

And remember that as always we’ll be doing up a Dev-Stream at 4pm PST today! Come on by and hang out with the whole team while we work on some more Viking Squad and answer any questions we come across!

VS_silhouette47

———-

And that’s it for this week! hope you liked our quick look into game development and be sure to stop by next week! Until next time, always keep those campsite rewards based off of player states!

Jesse_avatar64-Jesse

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

Google+: Nick: +NickWaanders Jesse: +JesseTurner Caley: +CaleyCharchuk

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

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

 

 

 

Posted by: Under: Art Work,Slick Entertainment,Vikingsquad Comments: 0

Dev-Blog 160: Physics for polish!

04/29/2015

devblog_header03

Welcome back, followers of the fearsome!

Viking Squad is a brawler, and what fun is a brawler if you can’t break stuff? When you break an object in Viking Squad, we used to just play an animation. The canned, always-the-same, animation is something your brain picks up very quickly, and things start to look very boring very quickly. There’s something about proper physical movement that catches your eye, and it never gets boring (in my opinion anyway).

This week I’ll be talking about visual polish, and how we implemented Box2D physics for visual polish in a somewhat 3d game. Somewhat 3d you say? Well, as mentioned in previous posts, the game is actually rendered using 3d geometry with flat puppets facing the camera, much like a flip-up book. Because of this flip-up book feel, I decided a full 3d physics engine would be overkill, and it would probably look weird, because flat front facing sprites moving in 3d don’t really feel ‘right’. The solution is to divide the physics up into the 4 game-play lanes. Below is an image that shows the physics objects created for the lanes (the big green boxes), and if you look closely, you can count 4 lanes. There are a few rocks flying around on the front lane.

lanephysics

Instead of spawning 4 separate physics worlds, I actually just spawn one Box2d world and use the collision bits masks to make sure the separate lanes don’t collide with each other.

During Shellrazer, I created a physics editor that allows you to define rigid bodies, joints, etc, and allows you to override specific bones inside a puppet. I moved this editor over into our viking squad editor, and in the screenshot below you can see how the boulder is set up. It has a puppet, and three rigidbodies. Then it has 3 puppet node links (which link the bones inside the puppet to the position and rotation of the rigid bodies).

Physics

Also shown is a push actuator. The push actuator is an animatable element that pushes rigidbodies away, and with the right amount of force you can make it look like the boulder explodes:

PhysicsSetup

In game, it looks like the animation below. Note that the parts of the two boulders in the top lane collide with each other, while parts of the boulder on the bottom lane only collide with the bottom lane, even though this is all done as a single Box2d world.

boulder

Now it feels quite satisfying to break stuff in our game, which I guess was the whole point of this addition! :)

As per usual we will be Dev-Streaming today! It’s always a great time running into you guys while we work on Viking Squad. Hope to see you there at 4pm-6pm PST!

VS_silhouette44

——-

Alright, that’s it for this week. Hope you liked the little peek into our kitchen. Until next time!

Nick_avatar64-Nick

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

Google+: Nick: +NickWaanders Jesse: +JesseTurner Caley: +CaleyCharchuk

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

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

Posted by: Under: Tech,Vikingsquad Comments: Comments Off on Dev-Blog 160: Physics for polish!

Follow us!

titlebutton_twitter titlebutton_facebook titlebutton_youtube titlebutton_twitch

Join our mailing list!

/ /

Dev Blog

May 27 2015

Welcome back followers of the fearsome! This week it’s time for another tech-post. However, it won’t be about a shiny new rendering technique. Instead it’s about an equally important part of the process of creating a game: the build machine. In my IGS/GDC talks about developing N+ and Scrap Metal I’ve stressed how good it […]