Dev Blog

Dev-Blog 73: Keeping on with some Necro-Dancing!

07/31/2013

devblog_header06

Welcome back followers of the fearsome!

We’ve been hard at work on our contract stuff working with some very talented folks so we decided to put up some more art from Crypt of the Necrodancer!

First off we did some super quick revisits to the Necrodancer’s mug! We wanted to play around with the idea that his ears were gone so got a few neat drawings down before reverting back to the original design. But that doesn’t mean that you guys don’t get to see them!

CotN_concept012

 

Boom! Looking a little scary actually. In a lot of my process I tend to push things further than they’ll be in the final. By using large, broad strokes when coming up with characters and creatures they become easier to polish up in the later phases of the project. Even though the original idea for the Necrodancer is what we will be going with, exploring a few other ideas can chain-reaction into more further down the road. As a concept guy you typically draw for that one percent that makes it into a game anyways, so it really pays off to be quick and flexible and not to get too attached to any single idea.

———-

I’ve also been working on more of the story panels and wanted to share them here as well! The story is actually a pretty heavy one for being such a funny idea, the main character ends up going through quite a bit of stuff throughout her journey and it’s been a lot of fun helping to convey that in older-style cut scenes.

dev_blog_ND01

 

Here’s just a quick insert shot of Cadence looking for that loot! A shovel stabs into the earth and some spooky energy starts leaking out!

dev_blog_ND02

Yikes! the ground gives way and Cadence plummets into the unknown!

dev_blog_ND03

Falling into the underground! What will become of her!?

——–

So that’s it for another week here at Slick! Thanks so much for following and be sure to check out all the awesome new artwork being added to Necrodancer by Ted Martens over at Brace Yourself Games’ Dev-Forums! Until next time, keep those rucksacks full of treasure!

-Jesse

 Follow us on twitter: Nick: @nickwaanders Jesse: @jouste SlickEntertainment: @slickentinc

Posted by: Under: Art Work,Slick Entertainment Comments: Comments Off on Dev-Blog 73: Keeping on with some Necro-Dancing!

Dev-Blog 72: The Debug Tool

07/24/2013

\devblog_header03

Welcome back, followers of the fearsome!

Another week flies by, and another dev blog post needs to be written up. We’re still working on some contract work, and we can actually say what it is this time around! Jesse is working on art for Necrodancer as you already knew from previous posts, and I’ve been working on porting Klei’s fantastic game Don’t Starve to iOS.

screenshot39

This week’s dev-blog will be about a tool I created years ago, and I still use it to improve performance of any game I work on (including Don’t Starve for iOS). It’s a debug tool that can connect to a running game through a network connection. All I have to do is insert some code into the game that initializes and updates the debug tool once per frame, and from that point on I can enable all kinds of useful debug logging (I’ll get into this a bit more below). The nice thing about using a TCP-IP connection is that pretty much every device has a wifi or network connection, so it’s really portable. The tool only runs on windows because I am using C# and .Net, but I can connect the tool to an iPad, an Android device, an XBox, another PC, the same PC, a mac, etc. All I need to know is the IP address of the device, which I usually display on screen in the game.

Ok, so now about what the tool can actually do. The first thing is simple logging of printf commands. Pretty straightforward. I don’t actually use this functionality a lot because most of the time I’m connected to the device with an actual debugger at the same time, which has it’s own logging functionality.

The functionality I use the most is the profiling system. This is what I call a top-down profiler, not a sampling profiler (which I call a bottom-up profiler). What this means is that instead of looking at how much time specific functions take, it focuses more on the big picture. I put macro’s in the code to measure specific functions, and because this can change the measured timings I take care not to put them inside inner-loops. The measurements are done per frame, and it will give me an exact overview of what the CPU and it’s threads are doing during that frame. It doesn’t give me any GPU measurements, but there’s lots of tools for that. This is what it looks like:

profiling

On the left are the ‘reports’ which is basically one frame of measurements. On the right it shows the data it measured, with a horizontal bar representing the time spent inside one function. Multiple bars below each other represent a call-stack. The width of the bar is how much time was spent in that function, measured in milliseconds as you can see at the top. With the red selection slice you can get more info about the functions within that slice at the bottom. It will show things like the number of calls, the total amount of ms spent in it, etc. It will also show you the number of allocations within that function, if the memory component is hooked up.

I’ve profiled and optimized quite a few games, and the number of big optimizations I’ve been able to do with this tool is quite staggering. In almost every game I’ve worked on I’ve found actual bugs in the game that had gone unnoticed for a long time using this ‘big picture’ approach. Every programmer has a rough idea of how much time is spent in particular parts of the game, so when the actual measurements are shown and the timings are different than expected, it’s almost always an indication of a problem that needs to be fixed. I highly recommend using a similar tool, or building something yourself. It’s super useful!

Another component of the debug tool is memory measurement. A global new and delete override needs to be installed, and then each memory allocation is tracked. Tracking memory allocations generates quite a lot of overhead, so the game will be almost unplayable unless you have no allocations during a frame of course. Basically every new and delete and the call-stack will be logged and sent to the debug tool over TCP-IP. The tool then does a bunch of processing, and it is able to show a timeline with total memory allocated. You can select a slice and see exactly which allocations were active in that slice, which ones were allocated and deleted within that slice (temporary allocations), which allocations have been active the longest, etc. It’s useful for finding memory leaks (allocations that are active forever), finding allocations that can slow down the game (lots of temporary allocations), and in general it can be used to reduce the total memory used by the game.

The last component is a stats tracker. It’s basically just like a stock ticker that tracks real-time data generated by a few macros in the game such as number of draw calls, fps, number of active entities, etc. It’s sometimes nice to have an actual graph to see whether the game is doing what you think it is doing.

Alright, that’s it for this week. I gotta get back to optimizing!

– Nick

Follow us on twitter: Nick: @nickwaanders Jesse: @jouste SlickEntertainment: @slickentinc

 

Posted by: Under: Slick Entertainment,Tech Comments: 2

Dev-Blog 71: More Necro-Dancing!

07/17/2013

devblog_header06

Welcome back followers of the fearsome!

This week we are still wrapped up with some contract stuff so we wanted to show you a little bit of process with the Necrodancer cut scenes, hope you like it!

First things first, we get down the rough story in the form of quick and dirty boards. This is a really fun part of the process because you keep it super loose and fast. Here’s the first 9 shots of our intro sequence, try to figure out what we are after with these scribbles!

introboards01

 

So as you can see it’s a pretty raw set of pictures, but never fear! After we feel good with the layout we take another shot at the image that we’ll be working on. For the sake of this example we’ll be using the “Uncle at bar all sad” #2 shot.

———-

shot02_comp_rough

BAM!  here’s a second pass at the image, the black border around the image is the bleed we have for parallax shenanigans. We draw over what the viewer will see so we can slide the foreground and background around to have some more movement in a static drawing. It’s actually quite effective and has been used all over the place. We also snagged some details in this phase that we would have missed before, like our uncle’s cool shovel hand and proper beard.

———-

shot02_compuprez

Here’s the shot done up with a fine line and color pass. the foreground, mid-ground and background are all separate and we’ve gotten the shadows looking a little better as well. This shot is only one more pass away from being implemented in the game!

———-

shot02_comp

One more sown-rez and hard pixel brush later and we are starting to see that 16-bit cut-scene look that we are after! Typically Ted Martens takes these and touches them up with his pixel chops to make them look extra good and ready to rock.

———-

So another week dances by here at Slick! I’ve been having a super awesome time working with Ryan Clark and the Necrodancer team and have been really excited to show you guys what’s been going on. Until next time keep those rogue-likes balanced and full of food!

-Jesse

 

 

Posted by: Under: Art Work,Slick Entertainment Comments: Comments Off on Dev-Blog 71: More Necro-Dancing!

Dev-Blog 70: Contracting with the pros!

07/10/2013

devblog_header06

Welcome back followers of the fearsome!

This week we have something a little different planned for our dev-blog, It’s all about a super great game that I’ve (Jesse) have had the pleasure of doing some contract work on!

It’s a great game called “The Crypt of the Necrodancer” and it’s a super cool rhythm rogue-like game where you play as Cadence, a dungeon-diving adventurer who is trapped inside a toe-tapping tomb and has to hack her way out of there!

It’s created by the super skilled Ryan Clark of Brace Yourself Games, and drawn by the incredibly talented Ted Martens. As well as those two guys you also got the super skilled sound sages Alec Holowka and DannyB on the musical end, Evan Balster on audio code, and our local indie game audio dudes Power Up! With a team like that it’s no wonder that it’s going to be a great time, I’ve been super lucky to be able to work with them and wanted to show our dev-blog readers what’s been up on the art end here at Slick!

———-

Crypt of the Necrodancer has a very awesome retro style that feels right at home in the genre of dungeon-dancing. I’ve been brought aboard for some character designs as well as some creepy cut scenes that will be tackled in my more cartoony style.

storybuilder02small

Here’s a great screen shot of Cadence confronting a dragon! The multi-colored tiles represent the player chaining together kills and not missing a beat which is super cool if you are after bonus gold and better items!

———-

storybuilder01small

Here’s an example of the kinds of shots we’ll be adding for the story sequences. This is still an unfinished piece as the completed shot will have a very cool 16-bit style approach to it that Ted will be helping me with. An example is below!

storybuilder03small

———-

I’ve also been working with some character ideas and it’s been a ton of fun. It’s been a while since I’ve really collaborated with another artist so working with Ted has been really great. Below are some of the characters we’ve come up with, Cadence’s design was already nailed by Ted so we went to work putting together a few designs of the Necrodancer and Cadence’s adventuring Uncle.

CotN_concept007

After some rough ideas we put together this classic look for the Necrodancer. This was a lot of fun because we also played around with some ideas for some staves. Super spooky!

CotN_concept008

This one was my favorite, Ted had this idea to make the Necrodancer this simian beast with a cape. In the end we went with the more readable humanoid version because people were a little confused about the monkey man but he’ll always have a place in my heart.

CotN_concept011

This one was a lot of fun to do, it’s Cadence’s Uncle. We wanted him to be grizzled but still have some character and I think we did ok in that respect. The shovel for a hand is a reference to the game where you use the shovels to dig through areas to reveal gems and new rooms. After this design started getting discussed we started having a bunch of neat ideas about what the Uncle would do in game. It may not happen but its a big part of why working alongside creative people is the best!

———-

So another week flies by here at Slick! If you guys want to follow the Development of Necrodancer more closely (and you totally should) hit up their forums and check out all the awesome new advancements! It’s going to be a super game so be sure to be one of the people that got on board early! A big thanks goes out to Ryan and Ted for being so open with their game and development process so we could show you guys here on the blog. Until next time, keep those dungeons dancing and we’ll see you all next week!

-Jesse

Follow us on twitter: Nick: @nickwaanders Jesse: @jouste SlickEntertainment: @slickentinc

 

Posted by: Under: Art Work,Slick Entertainment Comments: 2

Dev-Blog 69: Our build process in a nutshell

07/03/2013

devblog_header03

Welcome back followers of the fearsome!

Alright, this week we’re working hard on some contract work, so we don’t really have much to talk about! So I’ll just talk about our build process.

To be able to compile our code on multiple platforms, we wrote a python tool called genproject. This tool is a quite similar to cmake. At the time we implemented this, cmake didn’t support iOS targets, so we decided to roll our own using python. The basic concept is that our engine is split up into multiple ‘packages’, and we have one main package per game we’re creating. Packages can require other packages, so there’s basic dependencies between them. For each package, we have one python file that describes all the settings, package dependencies, include files, project settings, etc.

When we need project files for the main project, we simply run genprojects.py with the parameter mainproject.py, and genproject will gather all the dependent packages, and generate either a visual studio project file, xcode project file (both ios and osx), or android make files. The great thing is that since we rolled our own, we can add specific steps to the build process for each platform. This makes building the game for different platforms super easy. It’s literally generating the project, building the game, and running it. 

For the data required for our game, we use one data directory that contains all the ‘intermediate’ data files. These files are not optimized for loading into our c++ engine, though our c# tools can read and write them without problems. To generate the data needed for our optimized C++ engine, we run a tool called makearchive. This tool iterates through all the data directories, and processes the files it recognizes and outputs the results to a temporary directory. In this processing step we do things like re-sizing png images to appropriate sizes for the target platform, combining multiple pngs from the data directory into one big texture atlas that uses texture compression, modify UV coordinates stored in sprites or meshes to the new uv coordinates of the textures in the texture atlas, convert sound files to the platform specific formats, process xml files to processed binary data, etc. Basically the idea here is to process as little as possible at load time, and instead do as much as possible during compile time. Once all the files are processed, we archive them all up and voila, we have our platform specific archive, all optimized for super fast loading!

Alright, this may have been a bit dense, but I hope it was somewhat interesting none the less. Till next time!

Nick

Follow us on twitter: Nick: @nickwaanders Jesse: @jouste SlickEntertainment: @slickentinc

Posted by: Under: Tech Comments: 3

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 […]