Fatshark and Bitsquid Game Engines, Game Development and Design
Total Page:16
File Type:pdf, Size:1020Kb
Fatshark and Bitsquid Game engines, game development and design Rikard Blomberg - CTO and Founder of Fatshark AB - Board Member and Founder of Bitsquid AB - [email protected] Let’s Start with a survey so I get to know you… Q: What are you studying – what program etc… Q: Do you plan or would you like to work with computer games? A good idea if you like plenty of hardware on your desk! How often do you play computer games? a) Several times or hours a day b) Once a day c) A couple of times a week d) Less than that, but sometimes e) Games are not for me – games are for kids, boys, nerds, etc… What is your preferred platform? a) PC or (Mac) or (Linux) b) Web based c) Current Gen Consoles (Xbox360, Ps3) d) Anything from Nintendo e) Tablet f) Phone g) Other… (I bet no one of you even owns a PsVita – am I wrong?) Do you know how to program? a) I am awesome! (John Carmack, Linus Torvalds) b) I could make a living on it. c) I know the basics. d) No, but I know how to use MS Office… Have you ever made a game? a) Yes, and it has been released and people actually pay me for it. b) Yes, but it is not commercial, I am not a capitalist pig! c) I just need to fix those last bugs… d) I started on a project but then…. e) No – isn’t that what we are supposed to do in this course? END OF SURVEY Thanks So how did I end up here? Spent a lot of time playing computer games and pen-and-paper RPGs Have always loved games of all sorts. Also loves “world-building” and simulations Did I do a lot of Programming? I started programming when my father brought this home in 1986. What is the name of the computer? Considered myself a good programmer (even fooled my friends that I was) until I actually started coding large complex systems i.e. games… Actually I became a rather good programmer around 2006 or so Now I am back being a n00b… cause programming is a craftsmanship. So, how did I end up here? . Wanted to become a physicist - started at F on KTH. Started at HHS by a fluke. Met Martin Wahlund who was to become my business partner. He is now CEO of Fatshark. Do you remember this company logo? How did we start making games? First game we made was for KTH Game Awards 2003. Project page still alive at: http://excitera.nu/kthga0203/boundless.php After the competition we started a company to commercialize the game, but we never got there… Things got in the way To make actually make games that we wanted to we found out that we needed: . Financing . A balanced team . Experience So what happened was: Consulting, sub-contracting More common in the game industry than what you might believe. Game projects usually have unbalanced resource requirements over time. More programmers are always needed as you get close to launch. Grin and Fatshark Fatshark was started in collaboration with Grin to work as a subcontractor on parts of games or on whole games. But eventually bad things happened: But Fatshark survived… (and a new creature emerged) Bitsquid founded 2009 Goal: To create a new high-end game engine, built from the ground to focus on performance, flexibility and productivity. Old logo (showing it will get me killed) Tobias Persson Niklas Frykholm A Skunkworks Project "It is an especially enriched environment that is intended to help a small group of individuals design a new idea by escaping routine organizational procedures.” Where are we now? 40 man strong studio doing: . Self published projects . Publisher projects (work for hire) . Supporting, continuing development of released games ~40 Experienced Developers (and one inflatable shark) based in central Stockholm Don’t try this at home kids! Developing a multi- purpose game engine is generally not a great idea. It was against all business-logic doing so… but sometimes you just have to go with your gut feeling. And we have some really interesting stuff in the pipe… (but I can’t tell you about that) What is a game engine? A game engine is a system or framework for creating computer games. Consist of two parts: . Tools . A runtime component Typically encapsulates platform differences (Hardware Abstraction) Why use a game engine? Why not? . Decrease risk . Don’t re-invent the wheel . Increase platform reach . Decrease cost . Decrease development time . I get back to the “not” part… What game engines are out there? (it’s a jungle) . Commercial . Publisher owned . Strictly In-house Unreal (my totally biased description) . Unreal Engine grew out of Unreal, a first person shooter. Focusing on larger development teams, console titles and AAA games. Has made inroads into the mobile space, targeting Android and iOS. Long list of licensees, and many best-selling AAA games have been made in the engine. Unreal also has a “free” version targeting smaller developers: UDK Unity(my totally biased description) . The Unity Engine is used by over 500 000 game developers. Unity supports console development, it is mostly used for simple 2D games for mobile phones, PCs and the web. Unity has a free version with limited functionality and a Pro version needed for serious development which costs $1500 per seat. Has a hugely successful asset store where developers can trade systems and assets. Some other engines Roll your own? Why? 1. You are a technology freak 2. You have some very special needs In either case: Expect Pain . Is both the name of the company (a subsidiary to Fatshark) . … and the technology (game engine) being licensed to a steadily increasing number of game developers. Company currently employs a CEO and 7 developers The Bitsquid Philosophy Simplicity Fast Job parallelism Dynamic Openness Data driven Flexible Flat simple data Lightweight structures How do we make games? A wide range of skills needed How do we make games? The Fatshark way of making games Usually fast – for good or bad Design is done collectively – for good or bad Ideas are either customer driven or taken from a backlog of ideas created at certain creative days. We try to reuse things to decrease risk. It can be reusing a setting and the art or reusing a gameplay framework. Game Design I am not a “Game Designer”. My current work mostly concerns running and managing a company. But I have some opinions (and they should be regarded as such). Ideas If I got a penny for every unique and fantastic game idea being pitched… [email protected] <[email protected]> Oct 3 [email protected] <[email protected]> to contact Apr 8 Your Email - [email protected] Regarding - general to contact Your message - Do you guys take game ideasYour from Email the - [email protected] general public? I'm asking because I have someRegarding ideas that - jobs I would like to send you guys. Your message - Hi, My name is Robin xyz and I want to contact you becouse I have an really special game idea. pls reply if you are intrested in hearing more about it. So ideas doesn’t matter??? To make a successful game You need a good idea and and way to get it to market. From there - It is 99% about execution! However – to make an insanely successful game (…think Minecraft) You need a brilliant idea.. and some crazy streak of luck From there - It is 99% about execution! No one will be able to tell if an you have a brilliant idea and luck – so I advice focusing on what you can influence. Where to start Start somewhere at least… It could be: . Defining an audience. Having that brilliant (oh well … at least good) idea! . Having a technology that shines in a certain area. Imitating that favorite game with just a small twist. Getting a high-level-vision from that crazy publisher Set a vision! Agree on the vision. Start coding… write that main.cpp (or whatever it is called) now! Please - make choices – narrow down Decide on features: – to skip! Decide on platforms: – to skip! Decide on content: – to skip! Decide on preferred distribution and monetization /* Documentation */ Document decisions – if you are more than one individual! For other purposes – skip documentation – you are making a game not an article or a book! If you like writing – make a blog about your development instead! When it comes to code: The main source of the information about what the code does should be the code itself. I have never used any single line of documentation written for our productions. But I have one big regret… …I regret that I didn’t take more pictures along the way, including especially screenshots of all funny bloopers and bugs created. “OFFICE” 1 OFFICE 2 OFFICE 3 OFFICE 4 OFFICE 5 Make it playable – NOW! If you are not making and engine – and you are not! Make it playable from day 1 (or at least week 1) Get a head start – work like crazy! Don’t expect help from anyone. Roll up your sleeves and get dirty. Don't Stray Too Far From Your Vision! Iterate while (game->quality() != AWESOME) { void (*task)(CGame*); task = find_possible_improvements(game): (*task)(game); } Rejoice(); exit(0); Iterate, iterate, play, play, iterate, play… however I have a nagging suspicion that this must is the case: CGame::quality() { return NOT_REALLY_THERE_YET; } Maybe closer to the truth… while (game->quality() != AWESOME) { void (*task)(CGame*); task = find_possible_improvements(game): (*task)(game); if(out_of_time() || out_of_money()) { int result = Pray(); exit(result) } } Rejoice(); exit(0); Find a balance between general/reusable and quick/dirty.