Dev Blog

Dev Blog 118: Scripting and Level Design

06/25/2014

devblog_header03

Welcome followers of the fearsome!

Since Nick gave a brief overview of our editor last week, I thought I would go in to more detail on how we actually script events and fights in Viking Squad. Before I get in to our tools I just want to break down the basic components of level design.

There are three key factors that play in to any games level design. Space, Time and Score. Understanding how these concepts form your game is critical when it comes to designing a scripting tool with the most flexibility.

Space. In games that feature characters, they often move from point A to point B in world space. You need to be able to control events depending on where the character is between A and B.

Time. The average human reaction time is 0.215s and the average human perception time is at minimum 2.5s. So we need a way to space events out in times perceivable by players. Time is a very important ingredient as it plays a major role in pacing. Unexpected events happening in quick succession lead to confused players.

Score. This is how we gauge the progress of a players actions. In an FPS it’s the number of enemies you’ve shot. In a puzzle game, the number of matches made or obstacles cleared.

So in our tool, we have triggers and scripts that let us manipulate these three key principals. All this is authored right in the window.

Encounters_FlowEncounters_Flow2

Our scripts follow a branching sequence of logic. The following is an example of a combat script. The fight triggers when the camera reaches a coordinate, this locks the camera’s position, which then leads to the spawning of enemies. Once those enemies are dispatched more follow at different times. The camera lock is removed once all its children are complete.

On any given node we can right click and add new ones. Or drag and drop existing nodes to rearrange the sequence. Each node is a class written in C#.

Trigger. You can see the trigger line represented in the window below. Once this line is crossed the children are activated in sequence.

Encounters_Trigger

CameraLock. The bounds of the camera lock are displayed in the viewport and can be adjusted to span multiple screens. The trigger that activates it can also be seen.

Encounters_CameraLock

Wave. Each wave can have multiple points with recurring spawns. You can see the points represented as spheres below.

Encounters_Wave

The nice thing about this system is we can write and maintain each node once and then instance it throughout every encounter in the game. As we write new scripts those can be seamlessly incorporated in to existing encounters.

Well there you have it. A look at the scripting system we use to create our action in Viking Squad!

Caley_avatar64

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

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

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

Posted by: Under: Slick Entertainment Comments: Comments Off on Dev Blog 118: Scripting and Level Design

Dev Blog 117: A tour of the Editor

06/18/2014

devblog_header03

Welcome back followers of the fearsome!

Alright, this week we’ll give you a closer look into how we are developing Viking Squad. We develop the entire game in C# using .Net 4.0, and later port the game code to C++. The game is pretty much entirely developed in an editor that I’ve been changing and optimizing since N+. The only part that isn’t inside the main editor is the UI editor. The UI editor is a separate editor for UI-screens. Come to think of it, I should actually integrate the UI editor into this main editor as well… hmmm. Ok, first finish this blog.

I’ve created a base editor that I extend to fit the current game we’re developing. Here’s a screenshot:

Editor

So as you can see, there’s a big main window on the left showing whatever we’re currently editing, and on the right is the tools pane. The main windows is basically just an OpenGL viewport that runs our proprietary engine to render whatever we need to render. We use OpenTK to get OpenGL rendering in the main view-port with C#. It used to require XNA, but when Microsoft announced they would abandon it we decided to switch to OpenGL. This switch actually helped us port Scrap Metal and Shellrazer to mobile devices at the same time!

There are 14 tabs at the top of the tools pane. Activating a tab puts the editor in the proper ‘mode’ for that tab. So when you’re editing the general settings, it will just show a list of settings. If you’re editing a puppet, the main view will change to show only the selected puppet, and provide a UI for easy editing of the puppet. Here’s a list of tabs:

1 global settings Global Settings: This is a tab that just holds a big list of global settings, with things like the Camera settings, physics engine settings, etc.

2 destination Destination: A destination is one ‘level’ in our game. It consists of multiple chunks that are randomly put together. In this tab you can select which chunks are eligible to be randomly selected in the destination, which order they should be in, etc. You are also able to set some settings for the destination, such as which music to play, which background to use, and which puppet the destination should use in the world map view.

3 chunk Chunk: A chunk is a small piece of level. In this tool pane you can edit the layout of the chunk by painting lanes onto a grid:

Chunk Editor

You can also place entities and triggers. Entities are basically anything walking around or sitting on top of the lanes. Triggers can be used to create waves on enemies coming at you.

Chunk Editor Entities

4 lane Lane: In the lane editor you can define which different types of lanes there are, and what the settings are for each of these lane types. You can also select a procedural to represent the lane.

5 procedural Procedural: Procedurals are procedurally generated meshes, which we use for the lanes, backgrounds, and anything else that needs to be generated differently every time. I’ve blogged about this before here. This is where you can do stuff like this:

6 background Background: This is where we edit different backgrounds for  our destinations. This is also where you define the water/waves settings.

7 entity Entity: This is where we setup individual entities, adjust their behaviour, select which puppet they use to render, etc.

8 items Item: In our game, items are objects that can be equipped on an entity. The object can alter the current skin used by the entity, as well as alter the entity stats, such as health, stamina, etc.

9 dojo Dojo: This is where we can test our combat in an easy setting. Caley blogged about tuning the fighting before, and he basically uses the dojo to do this. When in the dojo, the joystick can be used to control your character, while the tools pane can be used to spawn any type of enemy.

10 worldmap WorldMap: This is where we edit our world map. We haven’t blogged about this much, but it is basically where you row your boat around to different islands. More on this in future dev-blogs!

11 play Play: This is the magic button. This button starts the game with a full UI flow. It is basically playing the game as an actual game, rather than just a bunch of separate setups in the editor. We’re able to play local multi-player games in here, and we’re working on getting multi-player over internet working as well.

12 puppet Puppet Editor: This is an editor I’ve built to be able to create and animate skeletal sprites (which we call puppets). You can also attach sounds, visual effects, and camera shakes to specific points in the animation. Another cool feature I added is the ability to set certain bones to be physics controlled. Even though it’s very simple Verlet style physics, it still gives a neat effect when things move in a physical way.

13 visfx Visual Effects Editor: This is where visual effects can be created and modified. I should probably do a post about how our visual effects system works one day. I think it’s pretty neat, and there are an enormous amount of possibilities with it.

14 textures Texture Editor: This is an editor I added for Viking Squad. All our textures are converted to a set of opaque polygons. We do this to get crisper edges, and it also gives us the ability to do proper shadows and lighting, which I haven’t implemented yet. Once I do it will be cool though! :)

 

Alright, I think it’s time to end the tour. If there is anything you’d like to hear more about, please leave us some comments!

Till 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

Posted by: Under: Tech Comments: Comments Off on Dev Blog 117: A tour of the Editor

Dev Blog 116: A time for Skins!

06/11/2014

devblog_header08

Welcome back followers of the fearsome!

Today we’ll be talking about the very cool tech we are using called Skin Selectors! Skin selectors are a super awesome way we can get variety in the game with our characters and their equipment. When we first started working with enemies and player characters we wanted to be able to quickly and easily change the way that they look, and Nick built this great tech to allow us to do that.

VS_silhouette18

Here we see our favorite zombie-viking foes the Medium Draugr! To keep the enemies from looking too similar we first created a base enemy, then we drew a variety of different biceps, forearms, heads, and weapons! Once we place them all in the puppet system and hook them up in the entity itself then our rag-tag group of ghoulies is ready to spawn in random configurations!

———-

VS_silhouette19

Another great thing that these skin selectors allow us to do is work with our equipment system. We really want players to find a lot of neat stuff over the course of their voyage that they can belt onto their character. These items will change statistics as well as look very cool and different! In this image we can see that our shield guy has a few different options when it comes to his head, shoulder and weapon. These are all currently in the game as test images so we can tell how big or small we need to go to keep everything looking alright.

———-

So another week slays by here at Slick! We are working on a pile of new content for Viking squad and the game is looking and feeling better everyday! Thanks so much for dropping by and until next time, keep those skins selected and those helmets varied!

 

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

 

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

Dev Blog 115: Oh the places you’ll row!

06/04/2014

devblog_header08

Welcome back followers of the fearsome!

This week we’ll be taking a look at some of the island themes and places you and your viking crew will end up! Destination themes are really important in Viking Squad, they contain different races of enemies and different treasures to pillage as well as add a variety to the voyage! The next few images are some rough ideas of settings that we’ve come up with so far. Everything is still in a conceptual phase but that’s what makes it so much fun to show! Attached to the small sketches of the setting is an idea of what kind of enemy would inhabit the area.

———-

VS_silhouette15

 

Having our Vikings crash right into a Frost Giant infested Ice flow could be a great visual break up from the earthy tones of the islands. We are also plying around with the idea that parts of the lanes can break off and carry our players forward in a classic “elevator” brawler level. the Rough sketch of a frost giant helps us get an idea of what they’d look like in this setting. I really like the ideas of icicles being used to nail their armor together as well as their polar bear armor. Levels like this could also crash right into the players as they row towards another destination! How cool would that be?

———-

VS_silhouette16

A forested area would be homes of some of the more earthy and rugged Viking enemies. Large stony effigies and tall trees would populate the area while tomahawk-tossing foes would jump out of wooded areas for an ambush! We’ve been working on implementing our trees into the puppet system so they have a nice sway with the wind. Heavily wooded areas could also give us a chance to get some cool god-rays in there as well as some darker canopy levels. The Hinterland area could also not have the rolling waves and we could use something else for the bottom area like cliffs or hills.

————

VS_silhouette17

Your journey can also take you to some dark temple caves! These places will be full of strange worshipper creatures that use arcane magics and powers. Traps and eerie glows will plague the players as they creep through these cursed caverns! We are really excited to start experimenting with lighting in underground levels like these ones. Static totems that spit venom or magic would also be fun to dodge in areas like this. Creating new zones always gets us thinking about other things to add to the game.

———-

So there’s just a few ideas of the places you’ll be seeing when you set off for your voyage! We are constantly coming up with new places to visit with our Vikings so we’ll be sure to show you guys what we are working on! We’ve been working hard on polishing up animations, timing, effects and a bunch of other stuff. It’s been a lot of fun so far and we are looking forward to tackling new and exciting areas!

So until next time; Keep those oars in the water and those enemy islands raided into rubble!

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

 

Posted by: Under: Art Work,Slick Entertainment,Vikingsquad Comments: Comments Off on Dev Blog 115: Oh the places you’ll row!

Follow us!

titlebutton_twitter titlebutton_facebook titlebutton_youtube titlebutton_twitch titlebutton_spreadshirt

Join our mailing list!

/ /

Dev Blog

January 20 2017

I almost can’t believe it: Slick Entertainment is a decade old! In the last 10 years we’ve made a bunch of great games, and I am super proud of what we’ve achieved with our small team: 4 fun games, custom C++ engine on 6 different platforms, 3 games feature online multiplayer, all hand-drawn art for […]