Tuesday, May 7, 2019

Why you should write your own tools!

Tools, Tools, Tools

I am all about the tools. When I think about what a tool does for me its really about doing the heavy lifting. It's about moving mountains not simply hammering in nails. I think that helps me focus on the right features when writing the tools I need.

When making games everything about the game code is very much unique. And you really want it to be that way. You want to be able to control the whole experience. None of it should feel out of place or break the experience with the game for the player. Even the menus and screens you interact with should be fun and enjoyable. You want there to be constant feedback and everything to be themed to match your game art, setting, etc.

Aside from just the UI and menus games must have content. Plenty of content! Creating this much content is hard work and time consuming. You want the maps to be large enough, the world to feel as big as you can. You want to make the game feel new and fresh every time the player jumps into the game. The player needs to feel like there is something left to discover and that means more and more content.

Building all that content can take up a lot of time so most game developers will build tools to take the tedium or error prone pieces out of building it. As a developer you want to be able to tweak things easily everything from player stats to animation timing. Making it super easy to make these changes without compromising quality.

Having good content building and editing tools can help you take your game to new heights quickly. Tools come in all shapes sizes and for all purposes. If it's just a little tool to help tweak multiple constant values using set formulas to tools for building foliage with a custom displacement shader. They are all valuable to you and will make your game more consistent better looking and ultimately more enjoyable for your players.

Engines don't replace tools

In general engines try to be blank canvases there are some like RPG maker that are more specialized but I do not think the idea of single purpose specialized engines really has taken off. Games that offer modding support are good examples of what those types of specialized engines would be like. And either the games come with good tools to make modding much easier or the community of modders will create tools to do the job. The key thing to notice is that either way tools are needed to build/modify the content.

There are also lots of Unity 'tools' in the asset store. More so every day! They are there to help you build all kinds of different games. Some of the most popular tools are ones that take the tedious, difficult, or most time consuming tasks during game development with Unity and make them easier.  

Tools are fun to make

Aside from being extremely useful for developing content. Once you've gone from tweaking text files to make new levels to editing them in a gui based map editor you made you begin to see the places you can now take your game. Instead of it taking days to design and tweak a level you can now build a level a day.

As you build the features in your game your tools also evolve, they can help balance the level details, keeping things feeling consistent and avoiding annoying bugs and time consuming tweaking of settings. Having things like random map generation tools and help give you a head start when staring at a blank canvas and you can't seem to decide on what type of level would fit next in the games progression. 

Adding that next capability to a tool can help propel your game to new heights. For instance a templating tool in a map editor would help you reuse parts of other levels making it simple for you to build much more content. Creating specialized brushes that automatically apply edge smoothing or texture splatting on maps to make them feel less grid like will help you move faster.

Do not be afraid

I have seen a lot of engineers and teams shy away from building tools or combine commands they do over and over again into simple scripts. When trying to get a game done those are the things that can keep progress from being made or being so slow that development eventually gets extremely difficult as you add more things to your list that need to be done.

Even if your tool only takes a two step process and makes it one step. Every time you use it you get exponentially increasing returns and time savings. If you continue to invest in adding more commands to the single command running script the savings increase each time you run it. Same goes for editing tools, if I needed to do 500 clicks to adjust this object to get it to align properly thats time for each click. But if I had an auto-align feature even if it still required a couple of clicks like 2-3 clicks. That's still huge savings.

So it's generally very much worth it to write scripts to simplify multi-step processes when doing game development. Or really any type of software development. I like a saying that one guy I worked with liked to say, "Make the machine do the work!"

So build those tools and reap the awesome rewards, make them part of your process and they will benefit you greatly.

No comments:

Post a Comment