What is a Game Engine?
A game engine is the architecture that developers use to run a game.
A video game engine allows you to add:
- collision detection
- artificial intelligence
- and more without the need to program them
Why Are Game Engines Important?
Game engines are reusable components developers use to build the framework of the game.
This gives them more time to focus on the unique elements like character models, textures, how objects interact, etc.
If everyone made their games from scratch without the help of excellent game engines, games would take longer and be more difficult to make.
That being said, there are still plenty of large companies and even indie teams that create their engines.
Creating one of the best engines is no easy task but sometimes necessary if the game is different enough that no existing engines will work.
The 25 Most Popular Game Engines
One of the most popular and widely used game engines is the Unreal Engine by Epic Games.
The original version was released in 1998 and 17 years later it continues to be used for some of the biggest games every year.
Notable titles made with Unreal Engine include the Gears of War series, Mass Effect series, Bioshock series, and the Batman: Arkham series.
The strength of the Unreal Engine is its ability to be modified enough that games can be made into very unique experiences.
The latest version, Unreal Engine 4, is said to be the easiest one to use when in the hand tools of a professional.
However, there are other engines available that are easier for new designers.
Unreal is on Xbox One, PS4, PC, iOS, Android, Mac OS X, Linux, and VR.
The Unity multi-platform game engine that allows you to create interactive 3D content with ease.
A lot of indie developers use Unity for its excellent functionality, high-quality content, and ability to be used for pretty much any type of game.
Recent notable titles made with Unity include Lara Croft Go, Her Story, Pillars of Eternity, and Kerbal Space Program.
One of the best things about Unity 5 is the Personal Edition, which is a free game engine.
It includes the engine with all features and can (for the most part) be used to make games on every platform.
The problem is that the Professional Edition, which has a host of excellent tools, requires that you pay a monthly fee.
These features include beta access, game performance reporting, customizable splash screens, a team license, and more.
Nearly half of the mobile games being made today have used Unity as their engine. It’s a cross-platform engine that gives the user access to the Unity store: a place where assets can be used for your game.
Unity is supported on iOS, Android, Windows Phone, Tizen, and Fire OS.
Unlike most others, the GameMaker Studio game engine has become widely used because it doesn’t require programming knowledge to use.
Instead, users can “point-and-click” to create games much easier and faster than coding with native languages.
Some of the best titles made with GameMaker include Spelunky, Hotline Miami, Super Crate Box, and the upcoming Hyper Light Drifter.
GameMaker is popular because you can make a game without having to learn a programming language first, and those that do have coding experience can use it to make their game better.
The problem with GameMaker and other point-and-click engines is that developers are much more limited than with other engines.
And while there is a free version, getting the most out of GameMaker requires you to buy either the Professional or Master Collection versions.
GameMaker Studio 2 is an engine from Yoyo Games. It’s the second iteration of GameMaker Studio and comes with an import feature so your previous projects with the first one can be up and running in no time.
The time it takes to develop a 2D game using this engine is pretty quick, emphasizing a drag and drop feature for their assets, making the workflow much more dynamic and robust.
The community is vast, and you can find multiple resources across social media.
You can find GameMaker Studio 2 on Android, iOS, Windows Phone, Tizen, Amazon Fire, and PS Vita.
The Godot engine is great for making both 2D and 3D games. The engine “provides a huge set of common tools, so you can just focus on making your game without reinventing the wheel.”
It’s a free game engine and is also one of the big-name open-source game engines, through the MIT license. No royalties, no subscription fees, no hidden strings—whatever you develop through the Godot engine is yours.
Godot has a community that’s constantly fixing bugs and developing new features, which is always a good sign. An active community means answers to even your most specific Godot-related questions.
Godot also links out to its other internet HUBS, including Reddit forums, Facebook groups, steam community, the Godot forums, and more.
This is a great little cross-platform engine. It caters to all levels of game designers, from the beginner to the expert.
AppGameKit utilizes Vulkan as its coding language and doubles down on its cross-platform support. You can get started easily, have everything running quickly, and branch out to different platforms, achieving a large amount of exposure for your game.
“AppGameKit is an easy to learn game development engine, ideal for Beginners, Hobbyists & Indie developers.” Does that sound like you?
The AppGameKit game engine focuses on quickly coding and building apps and being able to share them across platforms. This rapid iteration and cross-platform sharing is geared towards mobile game development, but handles most platforms:
- iPhones and iPads
- HTML5 Browsers
- Raspberry Pi
AppGameKit costs $79.99, with options to bundle the base product with add-ons, like the Visual Editor, to save money on both products.
Crytek states on their site,
“With CRYENGINE, we have a simple goal: to create the most powerful game engine in the industry, and to give creators all across the globe the tools to harness this power to create world-class gaming experiences, no matter their budget or team size.”
I believe that they do just that.
Forgive me, but I’m about to age myself. Back when I was seventeen and I first played FarCry, I was floored. It was truly like being in a breathing, living world with different aspects of nature immersing you in an intense gaming experience.
I remember spending time ignoring game objectives to take in the environment: swaying palm trees, dynamic shadows, and animal life. I knew I was experiencing something different.
CryEngine is a free game engine platform. You get the full engine source code and all the engine features without having to pay any license fees, royalties, or other hidden fees.
The CryEngine is a visually stunning engine. The graphics are beautiful and the characters are life-like.
You can use CryEngine to develop for several different platforms:
- Xbox One
- PlayStation 4
- Windows PC
- Oculus Rift
That’s right—if you were looking to dive into the world of virtual reality game creation, CryEngine has you covered.
In addition to the engine itself, CryEngine also provides plenty of free learning resources. Tutorials, forums, and documentation give you the tools you need to get started. Because of the power behind the engine, there’s a bit of a learning curve. YouTube and the official CryEngine resources are your friends, here.
If you’re looking for a shortcut for in-game assets, you can likely find it in the marketplace. The Cryengine marketplace offers packages like “mountain cottage” or “space soundtrack” in exchange for money. There are also assets available for free, like the “CryEngine V Beginners Pack” and the “Explosives” pack.
It’s also worth mentioning that CryEngine is one of the few open-source games engines. Which offers free licenses and incredible flexibility for developers.
Amazon Lumberyard (Open 3D Engine)
Lumberyard was a beta AAA game engine that has since been replaced by Open 3D Engine. It is based on Crytek’s CryEngine, but the dev team over at Amazon has already made significant updates to the system. Continued upgrades on Amazon’s part will bring Lumberyard further away from the CryEngine.
Lumberyard’s visual technology is based on CryEngine, which means gorgeous 3D environments and a whole slew of awesome real-time effects. Everything is there: weather effects, camera frameworks, cloth physics, character and animation editors, particle editor, UI editor, it’s all there! And there’s more.
Amazon is also including the source code for Lumberyard. Developer teams will be able to take the source code and customize the engine to optimize game development for their team. Aside from optimization, developers can customize the source code to mix up the gameplay.
Lumberyard is a free game engine to use. There are no royalties. There are no licensing fees. There are no upfront purchases of the software. If you are making a single-player game, it is completely free to use. If you are making a local-only multiplayer game, it is completely free to use.
Where Amazon makes money is through AWS. Naturally, the game engine is designed for effortless compatibility with the Amazon Web Service. The thing is, Amazon has made it clear that developers only pay for what they need as they need it.
In addition to the seamless AWS integration, Lumberyard also includes Twitch integration. There was an event a while ago called “Twitch Plays Pokemon” and it was a real mess. But it was a delightfully entertaining mess. The idea that many users influence a single game is such a great concept.
And now Twitch support is built right into the Lumberyard engine. Twitch ChatPlay means developers can easily incorporate interactions in real-time with the viewers on Twitch into the gameplay. This could be something like chat commands.
It doesn’t get much better than this. The AAA caliber game engine, with gorgeous, award-winning graphic potential, is totally free. The source code is included, and parts of the source code can even be included in your game, to let your players mod a bit! Plus, AWS integration means throwing your game online has never been easier.
If you’d rather make a single-player game and never pay Amazon a cent, you can do that. If you want to support online multiplayer with servers of your own, you can do that! Such a powerful engine with such a cheap pricing structure is very exciting.
Don’t even get us going again about the Twitch integration. Player-viewer interaction, integrated right into the engine? This software could fuel some awesome new game mechanics. It’ll be great to see what developers do as more of them get their hands on the engine and start tinkering.
The best thing about RPG maker is the same reason why it occasionally gets a bad rap—just about anyone can use it to create a game.
The software is designed to let you build a complete game, from start to finish (even if you don’t know anything about game programming).
“The RPG Maker series allows you to customize every aspect of your game with an easy-to-use interface, making it perfect for beginners yet powerful enough for experts.”
There are several RPG Maker products. RPG Maker MV costs $79.99. There’s a free trial option for Windows users.
“Libgdx is a Java game development framework that provides a unified API that works across all supported platforms.”
API is the abbreviation for application programming interface—having a single API makes the libGDX engine a great choice for cross-platform development. It doesn’t matter which platform you’re targeting: Windows, iOS, Linux, Mac OS, etc. all use the same API.
LibGDX allows you to run and debug your game natively on your desktop. This makes it easy to generate rapid iterations of your game and test the changes quickly (since you won’t need to fire up iOS/Android etc. to test those changes).
The libGDX forums are alive as well, with topics that cover development with libGDX and tutorials for getting started. There’s also a “source guide” with demos and examples you can take advantage of.
You can download LibGDX with the help of their setup app.
“Urho3D is a free lightweight, cross-platform 2D and 3D game engine implemented in C++ and released under the MIT license.”
The Urho3D wiki contains everything you need to get started with the engine, including How-To Guides for setting upon:
- Windows with Visual Studio
- Windows with MinGW
There are walkthroughs for creating your first project, and several other forum topics ranging from cutting holes in terrain to developing basic material effects for rendering.
Urho3D is currently on version 1.7, and as we mentioned earlier it’s a completely free engine to download.
There’s a long list of credits and an actively contributing community.
The website has a complete list of features, including the version in which those features were first implemented.
Urho3D also addresses its limitations, including the fact you’ll need skills in “C++ for performance-critical code and improving existing subsystems such as networking, physics, and animation, depending on your needs.” The brief limitations list is available in full on their site.
SpriteKit an engine developed by Apple and is exclusively on Apple devices. It has a lot of depth for a free application and can help you develop a 2D title in no time. You will have a great support system in the form of Apple, and iOS is solid.
This is the perfect engine if you are looking to break out onto the app market, especially on the Apple store.
It is a free engine download for iOS.
Now, this is what I’m talking about. You don’t exactly need to know how to code to access the best that this engine has to offer. It is as easy as just cutting and pasting assets.
The BuildBox game engine is able to create 3D and 2D titles without coding at all. The great graphical quality of the assets is super attractive and adds a great style to your arsenal. This is perfect for those new to game design and developing things for mobile platforms. Check out Bruce Lee Dragon Run!
As of right now, it’s on iOS and is offered as Plus, Indie, and Pro plans priced at $15, $35, and $99 respectively.
Corona SDK uses Lua as its programming language, which can be a breath of fresh air for those game developers who need a little break from the more programming languages.
It allows for great app development on the engine, allowing the designer to include all the bells and whistles we are used to as mobile phone users.
Corona SDK is found on iOS, Android, Kindle, and Windows Phone.
Marmalade SDK is an engine by Marmalade Technologies Limited.
Marmalade Games has had a hand in making some iconic adaptations of board games like Clue, Life, and Battleship for mobile devices, so you know what it is capable of. The engine’s philosophy is called ‘write once, run everywhere, AKA writing the game assets and the like in one form and being able to run it on many different platforms.
It utilizes C++ as its chief programming language.
Since it’s a proprietary license, you will be doling out some coin on this bad boy. We’re talking hundreds of dollars. However, if you are a serious game designer, no price is too great to get your vision across.
It is supported on Android, BlackBerry 10, iOS, LG Smart TV, Tizen, Mac OS X, Windows Desktop, Roku 2, Roku 3, and Windows Phone 8.
Clickteam Fusion is a fun engine supported by even more fun and creative team. Ever hear of Five Nights at Freddie’s? Yep, made with the Fusion engine.
This engine comes chock full of graphical assets already made and ready to be put to use. It has an integrated physics engine and a great community, to boot.
It is available on iOS, Android, and Windows. You can even get it on Steam.
What better than an HTML-based engine to wrap up the list? Construct 2 doesn’t hinge on your ability to code. Sign me up!
If you are much more familiar with HTML5, this could well be the mobile game engine to pick. Not only do you not need to code to create 2D games in Construct, but it runs pretty well, and has cross-platform support.
You can find Construct 2 on iOS, Android, Windows Phone, and web browsers.
Whatever you ultimately choose, there is a whole slew of engines that can be tailored to your specific needs for mobile game development.
Whether it’s Unity, Unreal, or Clickteam Fusion, there is truly an engine out there for every type of designer and creative type. Some are pricier than others, with some having proprietary licenses instead of being open source.
If you’re willing to part with some money, (or not), you can build on your portfolio of creative works by creating a great little mobile game to bring in players.
The Spring engine is a game engine specifically aimed towards RTS creation, specifically 3D RTS games.
Using the specific code, Lua, Spring engine makes nearly everything customizable. For control freaks like me, that is a godsend! If you are a fan of RTS gems like Age of Empires or Halo Wars, Spring engine might be exactly what you are looking for when developing your title.
Spring engine emphasizes that the capability of in-game assets, (i.e. unit sizes, etc.), is only limited by your own PC’s power, giving you the potential for some seriously large battles in your created game. It was written using many different programming aspects, including C++, OpenGL, FreeType2, and more.
Spring engine is completely free, but I recommend throwing a few dollars the developer’s way to show some love from one gamer to others!
Panda touts that ‘it just works’, and it’s true. Panda stresses great visualizations, flexibility, and more. They aim to be the ‘most flexible’ game engine out there, and so far, they are making a pretty decent case for it.
Like many great open-source game engines, Panda 3D can run on nearly every major platform. This adds valuable versatility to both the programmer as well as the player of the game.
Panda 3D wants you to know it is geared towards tinkerers; those game developers that aren’t satisfied with merely thinking, building and finishing. No, Panda 3D wants you to look under the hood of your project, exploring all of its features and what it has to offer.
Panda 3D also allows for support with assets from other game engines, like Bullet, allowing for more flexibility, the very thing they emphasize.
As a designer, you can have direct control over nearly every aspect of the building process, with everything you need being in close contact, monitored heavily, and easily editable for your convenience.
Anyway, I have said enough about the pros of Panda 3D, go download it already!
Cocos 2d-x claims that it is the ‘World’s #1 Open-Source Game Development Platform’. Well, are they?
Of course, it is difficult to give a definitive answer if you aren’t exactly familiar with game design, or if your personal preferences favor something more in line with Godot or Panda 3D.
Using the MIT license, Cocos 2d-x is completely free and open. It has a truly impressive bevvy of features at your disposal, namely the ability to be cross-platform and an easy way into the world of game development. It uses C++ but can be versatile and also use Java.
Cocos 2d-x is probably your best bet if you are planning on developing 2D games over 3D. You have greater control over the code, which allows you more freedom to tinker around and build your project with full autonomy.
Cocos 2d-x is fast, and I mean fast. You can crank out projects pretty quickly compared to other engines, and it has great stability of use.
This free engine is a great option for open-source engines for Android. It emphasizes working with Java, i.e. making it super easy and accessible for developers to pick up and go.
Not that it means it is completely easy; the team at jMonkey Engine does recommend taking it slow, especially if you do not have a lot of programming experience. They recommend having some prior knowledge just to make the transition into game creation easier.
Right off the bat, the team boldly claims that using their engine will be easier than utilization and outright learning C++, which is true. C++ can be a hang-up for many not familiar with programming, and jMonkeyEngine can be a great option for those who want to create games without really breaking your back trying to learn a whole new language.
As stated, jMonkeyEngine can help you build the next great Android or iOS game, with cross-platform design to help integrate your game or project. They are currently shifting some focus to virtual reality and the ambitious Oculus Rift.
And like any good engine, they provide a bunch of good tutorials and guides. These can be true lifesavers when you are stuck in the creative or technical process of development.
If you have been inside learning code, C++, and Lua, you already know they’re all useful in their own ways and especially when it comes to game development.
If you are looking for a game engine that combines C++ and Lua, along with a strong emphasis on those beginning their game development journeys, Leadwerks could easily be your answer.
Leadwerks is a cross-platform game development engine that is great for beginners. In fact, it stresses the ease of access and use of the engine for newer programmers. The engine utilizes C++, Objective-C, and Lua as its programming languages, with a particular emphasis on Lua and LuaJT.
Leadwerks is so far only for Windows and Linux operating systems.
While it’s recommended that you know some basic programming, Leadwerks prides itself on being able to crank out some games without a knowledge of programming at all. Again, making it one of the best game engines for beginners.
Granted, you’ll need to show off your programming skills for developing more in-depth projects, but the possibility to just mess around and create smaller projects is an excellent practice for beginning game developers.
It has a proprietary license, so Steam users will have to dole out around $99 for using it entirely. While this may be steeper than other, smaller engines, there is no royalty fee to pay once you actually develop your game.
Along with this, you can download further aspects to the engine, increasing your assets and programming capabilities, really fleshing out the entire experience.
There is a free demo (the Indie Edition Demo) of Leadwerks right on the Steam client, so you don’t have to take a costly plunge into using a game engine in which you don’t know if you’ll click with.
However, since it has reputed ease of use, I can guarantee you’ll get something out of it. This demo gives you a feel for what is possible in the engine.
What would a reliable game development engine be without some substantial tutorials?
Leadwerks tutorials can be found in multiple locations. Personally, I recommend YouTube walkthroughs for the best possible visualization. You get to see the user interface in action, and get a better feel for how the workflow could look when developing a game.
Of course, going on the actual parent site can give you some documentation to get you around the small learning curve needed to achieve game development greatness.
Developed by Gendai Games, GameSalad was released in 2010. GameSalad increased in popularity after partnering with Macworld Expo and eventually created a free version in 2010. After five years, however, Gendai Games discontinued the service, opting for a few payment options. But we’ll get to those a little later.
GameSalad is one of the best game engines for beginners! With all of the different game engines on the market right now, it can be challenging to find one that works for you. If you are an absolute beginner, GameSalad could be the perfect tool. One of GameSalad’s promises is that you can ‘Make your first game in an hour.’
In fact, it’s quickly gaining steam in schools. It’s a method to teach younger students and computer rookies how to jump into the world of computer science. What makes GameSalad different from other engines and authoring tools? It totally foregoes the use of syntax, which simplifies the learning process a lot.
However, this doesn’t mean that more experienced developers can’t benefit from the ease of use of GameSalad Creator. No matter your experience level, you can definitely thrive in any project you pursue with the authoring system and game engine.
GameSalad is especially great for those developers focusing on 2D game development in particular.
GameSalad has a few payment options. Unfortunately, as of right now, there is no GameSalad free version. There is, however, a free trial to see if you gel with it and its creative capabilities.
- First is the monthly version, which costs $8.
- $17 a month
- $25 a month
The latter two payment options obviously include additional features not included in the free trial and $8 versions.
GameSalad Pro offers additional features like
- Publishing to IOS
- Publishing to Android
- Publishing to HTML5
Regardless, the price points are pretty reasonable. If you are a creator dead set on making a game or app, the monthly price is more than doable. I mean, you pay more for a few streaming services a month, so why not try GameSalad?
There are even some discounts available for educational options. For example, if you are teaching a class how to develop games, GameSalad helps you establish a payment plan and procedure for using the engine.
CraftStudio is a cross-platform game engine. Even better, it emphasizes collaboration with other game developers. It was initially put on IndieGoGo for crowdfunding. It reached its goal of $16,000 and began development in earnest.
Developed back in 2011 and launched in 2017 by Élisée Maurer and Sparklin Labs, CraftStudio aimed to be a fantastic and comprehensive voxel-based game development engine.
The central aspect of CraftStudio is maintaining game development assets in the cloud. Using this method, game developers the world over can access resources and collaborate with other talented creators.
If I wanted to start developing a very simple, bare-bones kind of game, one that deals with the foundations of such a game, I couldn’t find a more suitable engine than Box2D. First released in 2007 as Box2D Lite, what we now know of Box2D has had a most recent stable release in April of 2014.
What is the best way to sum up what Box2D is? Here, let the developers explain,
“Box2D is an open source C++ engine for simulating rigid bodies in 2D. Box2D is developed by Erin Catto and has the zlib license. While the zlib license does not require acknowledgment, we encourage you to give credit to Box2D in your product.”
A big issue that Box2D deals with and stresses is collision detection. Collision detection is especially emphasized in video games. Very generally, it is the issue of two game objects, (buildings, characters, etc.), colliding with one another.
Have you ever been playing a game and seeing two characters run into each other, morphing into some sort of grotesque monster? Well, never fear, it’s not your worst nightmare, it’s just that those two models encountered a bug and the collision detection was ‘off’.
Box2D engine has been included in some titles on the Nintendo DS, the Wii, and others, and offers cross-platform. This includes the potential to port to mobile phones especially. Imagine you develop a new, more modern version of the cellphone classic ‘Snake’. I can already hear the cartoonish cash registers going ‘KA-CHING’.
I think it is pretty clear that the Box2D engine is a unique little engine if you are interested in more in-depth concepts of coding like collision detection and other bits of 2D know-how.
If you are familiar with C++ and have a penchant for 2D games, more specifically something that teaches you more about the basics of game design, (i.e. physics, collision detection, etc.), this just might be the ticket for you.
In the mid-1990s, Ken Silverman, a rookie game programmer, started working on and tweaking what would become an integral part of video game history: the Build engine.
As a college freshman, Ken Silverman worked tirelessly on the Build engine. Working around the same time as John Carmack and id Software, Ken Silverman launched the Build Engine in 1995.
If you have ever played Duke Nukem 3D, you’ll remember the Build engine creating a semi-3D environment. This 2.5D factor changes a lot of things about game design, namely the perceptions of gamers.
While many of the Build engine games resemble games like DOOM or Wolfenstein 3D, the engine takes advantage of sectors with varying heights of ceilings and floors. When these varying heights are taken into account, the final product gives the distinct impression of playing in a three-dimensional world while not actually doing so.
The Build Engine has some pretty famous games to its name. Including Duke Nukem, Shadow Warrior, Redneck Rampage, and Blood.
The Best Game Engines for Mobile
Right now the biggest market for video games is on mobile devices.
Video games such as Genshin Impact and PUBG Mobile, and Five Nights At Freddy’s became massive pop-culture sensations and influenced many game creators to follow their lead.
There’s never been a better time to develop games for mobile devices, but what engine should you use for mobile games?
Unity Engine for Mobile
Unity is widely considered to be the best for mobile game development. Unity lets you easily import 3D models from Maya and Blender, and has a huge library of both free and paid assets you can use for your game. It even comes with both 3D and 2D modes, allowing you to make any style of game you have in mind.
It’s a powerful engine that’s well known for very good reason. Unity works across platforms, including iOS and Android, and has a very large and very active community. In fact, the sheer number of tutorials and resources available makes it a perfect engine for new developers. Best of all, Unity is available free of charge, but does take royalties from the games you release if they reach a certain threshold of success.
Gamemaker Engine for Mobile
With that said, another perfectly good option is GameMaker. One complaint about Unity is that its 2D mode can be a bit complicated. It handles 3D games exceptionally well, and can certainly make compelling 2D games.
But the crown for best 2D game engine goes to GameMaker Studio. If you’re a novice at game development, Gamemaker is among the simplest engines to use out there, and has been widely credited with the creation of many professional Indie games. It’s been used to make games such as Webbed, Death’s Gambit, and Hotline Miami.
It even has a simple drag and drop system you can use while you’re still getting to grips with how coding works and some video tutorials to help you get started. GameMaker Studios offers up an unlimited free version, though you do get more out of it by paying a subscription fee.
Godot for Mobile
Finally, there is Godot. Similarly favored by Indie game developers, one feature that Godot offers that the others do not is hundreds of nodes.
Nodes are pre-made codes that can be selected to make the opening steps of game creation easier. It also is free and open-sourced, so you’ll never have to pay royalties for the games you make.
Use any one of these engines and you’ll soon be well on your way to making the next mobile gaming sensation. With new mobile games coming out every day, there’s plenty of room for the next Angry Birds or Candy Crush to shake things up.
These engines are perfect to practice, improving your skills, and finally to release your games. Start your engines.
How to Choose the Right Game Engine
- Your Computer – The best computer for your budget. You want power. Something that can handle a larger workload.
- Your Game Genre – Different engines for different genres.
- Your Perspective – Are you creating a 3D or 2D game? This changes the way you develop your game considerably, so keep it in mind.
- Your Art Skills – Not required. But helpful.
- Your Targeted Platform – Android, Xbox, etc …
- Solo or Team – Will you be working with others? Some engines are better for collabs.
- Community Support – Most of the popular engines have awesome support. Check them out before you start.