New Game Designers
"Game designer" is a somewhat ambiguous title. To Allacrost, a game designer is tasked with combining code, media, and writing together together to create the game's experience. Game content includes maps, characters, equipment, and more. If this sounds interesting to you, read on to learn how to get started as an Allacrost game designer.
Designers don't necessarily have a strict set of technical qualifications that they must meet. You do not need to have several years of advanced programming experience or superior artistic talents in order to help create this game. Thus, it is a role suitable for those who are passionate about making games, but lack a specific skill set in game creation. Really, the most important qualification of a game designer is to have a strong passion for the project. The following skills, although not required, will greatly help any aspiring Allacrost designers. These skills will naturally be picked up over time through working on the project as well.
- A basic understanding of programming
All of the advanced coding is done in C++ by experienced programmers. A game designer merely needs to use this code appropriately in their scripts to write simple functions
(1) The ability to use a source code management tool and compile source code
Game designers need to be able to fetch the latest updates of the project and compile the game at any point in time. They will also need the knowledge of how to commit their own changes into the project repository.
(2) A knowledge of the Lua programming language
All of the scripts and functions that game designers write is in Lua. This is a simple, easy-to-learn scripting language that is used for all Allacrost data and scripts. An experienced designer is expected to be able to read the scripting code and write simple script functions of their own.
(3) Basic competency in using image editing software
Whether using Adobe Photoshop, the free and open source GIMP, or another image editor, being able to make simple edits to images is greatly beneficial. The most common usage of this skill in Allacrost is to produce a single tileset image from multiple individual tile images.
(4) Use of a map editor
Allacrost uses its own map editor that is built and maintained by the development team. But the same general principals for use in our editor are the same as other 2D map editors.
(5) Experience with using and editing wikis
The Allacrost wiki needs to be updated regularly to reflect changes in the project or the game itself. Designers are expected to help the wiki stay organized and updated.
(6) Great organizational skills
Game designers need to help the team organize content that has been generated either internally or externally. Successful game designers are very organized and detailed people.
Below is a list of duties that game designers fulfill. Don't worry if some of these sound intimidating to you. We won't force you to write Lua scripts, for example, if you don't have the necessary tools or knowledge to do so.
Managing Media Content
Media content include image and audio files. We use file types of .jpg, .png, .wav, and .ogg for our media. By "managing", we mean adding, removing, or modifying these files in the game's directory tree. You won't be creating this content yourself, but taking the content that someone else created and putting it in the correct location.
Discovering External Media Content
A significant amount of the artwork and audio in Allacrost comes from external sources. This duty requires you to seek out any acceptable content from external sources (such as OpenGameArt). Upon finding content, you'll need to format the data according to our standards (file naming, image resizing, audio compression, etc..). Finally, we always make sure to accredit the creators of external content by adding their information into a text file that the project maintains.
Map creation is one of the most difficult and rewarding tasks that a designer undertakes. This involves using the Allacrost Map Editor (a separate program that we build and maintain) to lay down tiles into layers that compose a map. Then, you'll need to create a Lua script file for the map. This script file serves a number of functions. For example, it places sprites, treasures, and other objects on the map. It also contains the dialogues that characters speak while on the map. And finally it contains some scripting code to make the map come alive. You may need to ask for help from a developer for some of the more complicated map script functions that you need to write.
Creating Game Data
This involves editing Lua files to define the properties of things like items, equipment, skills, enemies, and characters.
Balancing is a precarious and difficult job to do. You'll need to play through the game multiple times and tweak the properties of game content and enemies on a map so that the game is neither too challenging nor too easy for players.
Writing Script Functions
Lua script are what make the game interesting, and every map contains dozens of these functions. Although it is programming, you need not be an experienced developer to write most of the functions we use. The hard work has already been done for you in the game's engine, and you just need to call the appropriate subroutines in order to get the result you desire. Most script functions are written for maps, but there are others that are done for battles and other scenes as well.
The final task for game designers to complete is to play the game and try to break it. This is not solely the responsibility of game designers, however. Developers and even players in the Allacrost community lend a hand with this work.
Here's a list of steps recommended to get you up and running as a new game designer.
(1) Read or skim through the New Contributors page
This will give you an overview of the project in general and what resources are available for you to use.
(2) Download the game's source code, compile it, and make sure that you can play the game Refer to the Compilation Instructions page for information on how to do this. Feel free to skip this step if you are having difficulty, but know that at some point you will need to learn how to do this. You can always ask for help on the forums or in the IRC channel. If you want to play the latest release without compiling from scratch, refer to the Installation Instructions page. But keep in mind that the latest repository checkout may contain many significant changes and improvements from the most recent release.
(3) Compile the map editor and check that it runs
Again, refer to the Compilation Instructions. You can also grab the editor from the latest release. Read the Installation Instructions page to figure out how to do that. Again, if you have problems ask on the forums or IRC for help. Once you have the editor running, opening one of the existing maps and start playing around with the editor. Just get a feel for how to use it and what it can do.
(4) Study some Lua files
The easiest way to learn how to design Lua files is to look at existing files and emulate what you see there. Navigate to the lua/ directory to see all of the Lua files. You can examine Lua scripts for maps, character definitions, enemies, items and equipment, and so on. Most of what you find should be pretty self-evident of what it defines and what it does, though some of the map files can be very large and confusing.
(5) Examine content directories
Browse around the following directories: img/, mus/, snd/. Get a feel for how our media files are organized and formatted. Some pages in the wiki also contain more information on the organization of content. Artwork Categories is a good one for designers to read through.
(6) Browse around the other wiki pages for game designers
Go to Game Designer Main and skim through the other pages you find that are linked there. You don't need to study them thoroughly right now. Just get a general idea of what information is out there to help you achieve the various tasks that you will need to do as a game designer.
(7) Check the Roadmap and find some work to do
Having completed the previous steps, now you should have some vague sense of how to get things done, so it's time to get started on some real work. Check out the Roadmap page and look for any game design work that needs to be done. Or you can inquire on the forums or IRC and ask how you can help out. If possible, try to start with a small and simple task to get your feet wet. Depending on the type of work you get assigned (or assign to yourself), you'll want to read up on any relevant information on the wiki or elsewhere to help you complete your task. And if you need help, do not be afraid to ask, even if it is something that sounds simple. If you fail to find the information you need on the wiki, its a good idea to come back after you complete your task and add this information so that others can benefit from your knowledge.
(8) Stay active on the forums
You'll want to always keep yourself informed of the project status regularly so that you can focus your efforst on what is most urgently needed at a given time. Game designers really need to stay active on forum discussions related to design, and to share their thoughts on how the game can be improved either by modifying existing maps, adding new media content, rewriting dialogue that doesn't fit well, and so on. As you participate in these discussions and follow the Roadmap, it will start to become self-evident to you what work needs to be done next.
Things to Learn
Most game designers will not know everything that they need to when they first join this project. Working on a project like Allacrost, in any role, is a continual learning experience. Here's some general information that you can start learning on your own that will greatly help you in your role as a game designer.
(1) Learn basic programming skills
This could be done in any language, although a scripting language is best (Lua is a scripting language, though it's a somewhat esoteric language). For example, you can look for free online tutorials or courses to learn about variables, functions, and classes. CourseRa may have some free courses for you to learn, for instance. There's a six-week Python course there that concludes with a clone of the game Asteroids. Stick with the basics, but learning advanced topics later wouldn't hurt.
(2) Learn Lua
Go to http://www.lua.org and read up on the Lua programming language. You can also search for "Lua" in your search engine of choice and find other tutorials or free online books to read. You should only need to familiarize yourself with the basics for now. Variables, functions, and tables are essential to learn and understand. You can learn about more advanced topics later as needed.
(3) Learn basic image editing skills
This depends on what image editor you use. Many Allacrost developers use GIMP, which is freely available for all major operating systems. Go to http://www.gimp.org to download and find tutorials and other information to help you get started.
(4) Learn how to use Mercurial
Mercurial (Hg for short) is the source control management tool that Allacrost currently uses. All code, scripts, and media content that are delivered with the game are stored in our mercurial repository. Read through the documentation available on the Hg website, or search through tutorials to figure out how to use this tool. If you use a specific client, such as TortoiseHg, you may wish to start by reading the documentation for that client first. All you need to know to begin with is: how to download files from a Hg repository, how to get the latest updates to a Hg repository, how to add/move/rename/remove files from a Hg repository, and how to commit changes that you make to the Hg repository. That should be enough to do most of what you need to do.