Jump to content
  • Advertisement
  • 12/09/09 01:34 PM
    Sign in to follow this  

    Flavien Brebion


    Myopic Rhino

    In this article we turn the spotlight on long-term GameDev.net member Flavien Brebion and talk to him about game development, in particular his stunningly beautiful MMO game Infinity - The Quest For Earth. You can follow Flavien's journal here on GameDev.net for more information about Infinity and other projects.

    You've been a regular on GameDev.net for some time now, but for those who don't know you could you give us some background as to who you are and what you do?

    My name is Flavien Brebion, 32. I'm French and live in Brussels, Belgium. I am an aspiring game developer, although I currently have a full-time job in a side industry (virtual reality using game techniques).

    How long have you been involved in game development and how did you get started?

    I've been programming games since my childhood. I started around the age of 11 on an Amstrad CPC, then later on an Atari ST, and then moved to the PC. I created various games, including a humorous point & click adventure game, an isometric single-player RPG, and even a sim-city "colonization" game. Most of those games were abandoned but still reached the "alpha" stage and were somewhat playable, although not complete. The main reason for that was mainly shift of interests (from myself or from the people I worked with).

    What projects are you working on currently?

    My main and only project at the moment is Infinity - The Quest for Earth. To simplify, this is a space-sim, sandbox MMO, a bit like Eve Online, but twitch-based (no point & click, you directly control your ship). It is directly inspired from the old franchise Elite/Frontier, and one of the main "selling" points, like Elite, is its realistic universe with seamless planetary landings and a massive procedural universe.

    People reading your GameDev.net journal have been treated to some amazing pictures of your in-development game, Infinity - The Quest for Earth; have you always been into graphics programming?

    Yes and no. When I started to hunt for a job, I decided to specialize myself in one area, graphics programming, as it was one of my main interests. Although I'm not as specialized in the other domains, I have decent-to-excellent knowledge of all critical game programming areas, including networking, databases, physics, game systems, interfaces, etc.

    Your journal often speaks of advanced graphics techniques - how do you keep abreast of the latest developments in graphics technology?

    Through research & experimentation. I keep my skills current by researching works from other programmers, watch conferences or reports from other companies online, like the GDC or SIGGRAPH reports. I also spend quite a bit of time experimenting with new techniques myself, or discussing ideas with friends. Also, I frequently watch over advanced topics on game programming sites, such as our very own gamedev.net's, even if I don't post as much as I would like to.

    You must burn through graphics cards like nobody's business - do you always work on the latest hardware?

    I wouldn't say the very latest, but I upgrade my computer regularly, normally every two years. I'm currently on an Intel Q6600, Vista, 3 GB of RAM and a Radeon HD 4890, however I will change it next year. I can't wait to get one of those SSDs, hopefully it will drastically reduce my compilation times, especially with a large code base such as mine (nearing half a million lines of code in C++).

    How was Infinity born? I recall you were working on a racing game at the time - then the first images of Infinity began to appear - how did you get from racer to planet rendering?

    My previous project before Infinity was a sci-fi high-speed hovercraft racing game, codenamed "Lightspeed". It also reached the "alpha" stage of development. One track was playable but the project died due to a lack of content and teammates going off to university (hence having no more time to dedicate to the project). I think it was pretty much at that time that I started to fully realize that relying upon others wasn't a good idea, especially when they're not getting paid. Meanwhile, I was working on an experimental procedural planet renderer, and decided that for my next project, I would try to do something that requires as little content as possible (ironically, I've never had as much content as I do now for Infinity), which screamed "procedural space game". I also consciously avoided any type of game that required complex animations, such as characters. Not for programming reasons, but for content reasons (finding good animators is even more difficult than finding good modellers or texture artists).

    When you started work on your original Infinity code, did you deliberately plan to turn it into a game?

    At the very beginning, it just started out as an experiment. As it grew in complexity, I soon realized it was a perfect candidate for a sci-fi space sim. So for all but a few months, it has always been my intention to make a game from the code.

    How long has Infinity been in development now?

    It's hard to give an exact date, because while I started early (around 2004 if I remember well), I didn't concentrate on it until it became my main focus of interest, which occurred around the end of 2005. So, more or less 5 years now. As I already have a full-time job, Infinity is developed part-time, so it goes relatively slowly (when compared to funded projects with a dedicated team).

    How many people are currently working on it? Is it still a one-man effort or have you drafted in people to take on some of the burden?

    Programming-wise, it's still pretty much a one-man effort. A few other people have volunteered to make independent prototypes though (for example, there's a pretty complex economy prototype that has been in the works for a year). For the rest, there's a team of 5 other dedicated developers responsible for content development (artwork, sounds, writing). Design is more or less collective.

    Finally, there's also a contribution system. Interested parties are free to submit 3D models, textures, sounds & music . Many have become quite involved and very skilled, bordering on professional quality level. So we've received a pretty insane amount of contributions from hundreds of people, and even if only a fraction of those will eventually get into the final game, that's still more content that I would have dreamed of at the beginning.

    How do you manage the work between team members?

    Since the core team is quite small, the work is naturally split depending on each developers competences. We all work remotely. Day-to-day communication happens through IRC and forums. Assets management is done via FTP or the website/wiki. I think the biggest issue is communication, and getting people from different time zones to stay in contact, especially when they get busy IRL for various personal reasons.

    An interesting feature in Infinity is the procedural planet generation and rendering - can you describe how that idea came about and how you implemented it?

    The idea simply came from looking at Elite: Frontier, and thinking, "How did they achieve such an amazing technology (a realistic universe with seamless planetary landings) on two floppy disks, 15 years ago" ? That's how I started to investigate procedural techniques and terrain generation/rendering.

    The algorithm itself is pretty straightforward, although the details require a lot of attention. It's based on a quadtree subdivision, similar to geo-mipmapping (although at the time I wrote it, I had no idea what geo-mipmapping was). One of the key differences is that it deforms a spherical surface instead of a flat plane. It's pretty much like a cube morphed into a sphere, then displaced by a heightmap. Of course, the real difficulty is the 1001 little problems that appear when you want a realistic seamless planet. Such as, handling of gaps between terrain patches, handling lighting, generating heightmaps, normal maps and textures procedurally, keeping a high-resolution precision to have a real-sized planet, etc.

    How important was it to you that the graphics of the planets look as realistic as they do?

    Fairly important, but not to the point of not having to look good, artistically. Immersion is probably the most important factor. For example, Spore uses a similar technology, but the planets feel tiny/cartoonish, almost like toys. In Infinity, I wanted to have real-sized planets, that the players can explore for hours, if they so desire. The sense of scale is something that very few games have successfully achieved, and I think Infinity will be particularly impressive in that area.

    The realism seems to go further and into the actual space itself - are you using real Newtonian physics to define the universe and the stars, planets, galaxies and other phenomena such as nebulae and so on?

    No, Newtonian physics is restricted to ships and human entities. However the universe is based on modern astronomy/astrophysics knowledge, using Kepler's stable orbits. Statistics are used to control the proportion of procedural bodies appearing in the galaxy. You will be able to find gas giants, multiple-stars systems, rings/belts of asteroids/dust, icy/barren/volcanic planets, and of course Gaian (Earth-like) planets. They're based on real theories, so you will not find a Gaian planet outside its star's habitable zone for example. All these bodies move in real-time, so it's possible to attend a sunset over the mountains on an alien world.

    You must have a pretty keen interest in astronomy - how long do you spend researching the theory behind the space features you're implementing?

    True. I read astronomy/physics magazines regularly every month for the past 6 years. When implementing new space features I take at least a few hours to re-read old magazines, search on the web for statistics/pictures to give me a good understanding of what they are and how they should look. However, I'm not stubborn so if something doesn't go as planned, or if we discover in beta that it just doesn't work/isn't interesting, I have no problem adapting to make it more interesting and fun to play. Realism and immersion, yes, but not at all costs. One typical example are Gaian planets. They'll probably be more frequent in-game than in reality, because they're also the most interesting type of planets that players can explore and interact with.

    Space. It's big. It's REALLY big. It must be daunting to code in such huge scales - how do you go about such a thing? Do you use any special data structures or measurement units to help?

    As you can imagine, working with a single type of unit doesn't work. I use a hierarchical system of units. At the galactic level, light-year (LY) units are utilized. At the star system level, the kilometer is the base unit, and coordinates are represented by double-precision floating point numbers. At render time, vertices are generated as single-precision floats, but translated into camera space to minimize the loss of precision due to large numbers.

    Infinity is going to be an MMO - at what point did you decide you wanted to add in the Massively Multiplayer element to the game?

    Pretty much from the beginning, after I wrote the first prototype of the seamless procedural planetary engine. A procedural sandbox universe is a very interesting challenge design-wise, and a perfect setting for a sci-fi MMO, so it was a natural choice.

    Do you plan on running the MMO in a single universe instance like Eve, or are you looking to split the load across multiple server instances with player caps?

    A bit of both, actually. The shard design is similar to Eve Online's, but due to latency reasons (the game is twitch based, not point & click), there will likely be at least 3 shards, in Europe, USA and Asia. For financial and practical reasons we'll probably launch the game with a single server (Europe) and expand as needed.

    What challenges have you faced so far in working on the massively multiplayer element of the game?

    Scalability and complexity of development (with various server nodes sending messages to each other, asynchronously). The server isn't finished yet, but so far I'd say scalability is and will remain the major concern. For example, the server has to perform collision detection since the client cannot be trusted in an MMO. It's pretty complex, since our ships have different hit zones (each thruster, each weapon, and even different hull sections). When balancing weapons, you have to take into account not only the type of weapon, the damage it does and its other effects, but also how much it will stress the server due to a high firing rate. Keeping the amount of SQL requests low and caching the data is also a concern.

    Did you write the network and client/server code yourself?

    Yes. It's based on UDP, with a reliable layer for messages that need it. I use a few other external libraries like curl for HTTP requests or downloading patches.

    What motivated you to release an early tech preview in the form of the Infinity Combat Prototype? What was the purpose of this and have you gleaned all you needed from it, or should we expect to see more updates?

    There will be no more updates of the ICP, since maintaining it would require work that is better invested in getting the actual game out as soon as possible. The primary goal of the ICP was to test the network model, the Newtonian physics/controls, and get a feel of what the combat would be like. A secondary objective was to release something to the community to keep it motivated while waiting for the development cycle to culminate to launch. To show that there is light at the end of the tunnel, and that Infinity is not just another vapourware project.

    Are you using any third party middleware technologies in the development of Infinity?

    I'm using many third-party libraries. OpenGL/DirectX for rendering, OpenIL for loading images, OpenAL for sounds, ODE for physics, TinyXML for XML files, squish for DXT compression, Curl to download files/access the web, ZLib for ZIP compression, and probably a few others that I forgot to mention.

    Would you look to licensing your technology to other studios at some point?

    Yes, it has been the plan all along. Unfortunately, it requires the engine to mature, especially in the domain of documentation and tools, and I prefer to spend my time on Infinity development to get an alpha out as soon as possible. But it will be done, eventually.

    Moving on the game design for a game such as Infinity, how did you go about creating a story for what is essentially a huge area of play?

    The size of the area of play may look huge at first, but in reality the actual area where you'll find quests and NPCs is much smaller. It is concentrated in the populated regions, whereas the rest of the galaxy is just here as a bonus for the explorers at heart.

    For the story, we started with a rough plot and began to refine it. Our goal is to create a rich and immersive universe, with complex political intrigues, tensions between various factions and sub-factions. We want to offer players all sorts of missions, some procedural, others much more advanced and context-dependant. One nice feature of a procedural universe is that you can get rid of static spawns of NPCs, so even generic missions can push you into unknown territories.

    Is there a single story covering everything, or are you relying on many smaller story threads interweaving?

    Both! The single story part is still experimental, and it's not even written yet. However, our plan is to propose an evolving scenario similar to the one of a solo game, except that it wouldn't be focused on a specific player. It would be split into chapters, and there would be objectives to reach, that could be accomplished by any player. Of course, it's not mandatory to participate in the main story.

    In addition, there will be tons of smaller missions, some will be pretty generic, but many will be more advanced, and may even be related to previous missions or be context-sensitive. We're also looking at creating some PvP missions, two (or more) players could get conflicting objectives at the same time and would have to compete to win.

    Will there be any factions people can join or play as?

    There are three main factions. The Centaurus Oligarchy, the Deltan Federation and the Star Fold Confederacy. They're all human. We decided early on against introducing alien races, as they are cheesy and overdone in most games/movies, and also require dedicated content. In addition to those, there will be dozens of smaller factions and organizations, corporations of conflicting interests.

    The scale of the game must pose some interesting challenges - how do you go about making it fun for players?

    That's a hard question, as the definition of fun is different for every player. In general, I think trying to make a game fun for everybody is the best way to ensure that it isn't fun for anybody. So our main goal is to make it fun for ourselves and hope that many gamers will share our vision.

    More specifically, there are features that we absolutely want to have in our game and that are part of our vision of what "fun" is, and will not change. For example, the twitch-based combat (you fly your own ship directly, and don't just point & click and watch the battle). The Newtonian physics. The "Star-Wars" short-range combat with explosions and special effects. The seamless immersive and realistic universe, with planets/moons orbiting in real-time. And the freedom to explore the galaxy without being bottlenecked by jumpgates, etc.

    What will players eventually be able to do in the game?

    Infinity is primarily a sandbox game, so there's a lot to do for many kinds of players. While combat will remain an important part of the game, we don't want to make the mistake of proposing an empty sandbox, so there will be plenty to do otherwise. Trading, prospecting, mining, developing a business/industry, transporting, crafting, exploring, etc. And of course, all the missions/quests related to the story/factions.

    It could be possible for players to fly around forever and not bump into another soul - do you have any plans to help bring people together and make them hang around together?

    This is very true, but the game is designed around what we call "cores", geographical zones of the galaxy where the human populations are located. That's where you'll find cities, NPCs, quests, services, social activities, etc. That's also where the new players start. We fully expect that players will cluster around those zones. Finally, there are other game mechanics to ensure that exploration of deep space is not without danger. For example, refuelling involves ram-scooping a star or gas giant, as there is no nearby space station to refuel at.

    On the flipside, what incentives will you be providing for people to explore your rich universe and all its wonders?

    The Unknown. Since the galaxy is procedurally generated, there's a chance to see things that nobody else in the player base has seen (including the developers). It's also possible to find rare ore deposits or visit strange new places. Some of those may be directly involved in the storyline, like the "quest for Earth", whose location has been lost.

    Do you think that the social side of the game will be important to people? What ways are you providing people to interact with each other?

    Yes, I think that will be a very important part of the game. We will provide all sorts of tools to encourage players to group and/or interact with each other. For example, ships can be equipped with various sensors/scanners that detect the presence of other ships/entities, based on the energy emissions (so stealth is also possible). Players can form corporations/organizations, share ships/stations/cities, set up their own rules/laws, join squads for missions, or for large warfare, in fleets.

    How will you go about implementing the travel between stars and planets in the MMO environment? Games such as Elite allowed you to physically speed up time in the game - this obviously won't be possible in an MMO when everyone is on the same timeline...

    Our current plan is to use a 3-tiered system. Standard navigation for low accelerations. Warping for intra-system navigation (planet to planet), up to lightspeed. And finally hyperspace jumps for inter-stellar navigation or long-range planetary jumps. We will try to balance the game so that it takes no more than a couple of minutes to jump from a star system to another.

    There are also HIPs (hyperspace interstellar portals) that link the cores together. Here we are speaking of long-range interstellar navigation, which is otherwise not accessible to the ship's jumpdrive in a single jump

    You have a large and active community, how key are they to the direction that Infinity has taken and will continue to take in the future?

    Very important. It's probable that Infinity wouldn't have progressed to what it is today (and what it will be tomorrow) without its community. In addition to giving feedback on ideas and designs, the community is directly responsible for the majority of the content in the game, through the contributions system.

    Sometimes it feels a bit overwhelming. The community has helped a lot, but the hype and the expectations are so high after all these years, that I'm concerned there could be some disappointment and frustration for some when the first version of the game is released for testing. The game cannot, and never will be perfect, and everybody has their own personal vision for the game.

    How are you going about financing the development of Infinity? Do you have any external investment?

    There is no external investment. I've been saving money for a couple years to be ready for the launch of the game. My plan is to start small, maybe with a few thousand players to limit the costs, and grow over time, add new nodes to the server so that it can support more players. In that respect, I'm glad that the game hasn't become that well known outside the hardcore communities, because if it had millions waiting, I sure would have to revise my plans.

    How are you going about marketing the game so far? It's already got a buzz behind it after being featured in publications such as PC Gamer and so on - was this intentional or has it just 'happened'?

    It pretty much "just happened". We aren't actively marketing the game yet, but if a magazine or website wants to do an interview or speak to us, they are more than welcome.

    Do you have any indications of how you'll monetise the game after release? (Subscriptions, free-to-play, etc?)

    It will most likely be based on a small monthly subscription fee with an unlimited time trial. Digital download only, no box sales, no initial costs.

    Are you interested in any of the latest ideas emerging from the digital space, such as microtransactions and other clever ways to monetise a game?

    Microtransactions seem to be well received by casual gamers, but are frowned upon by the hardcore gamers. Infinity being a niche game relying on word-of-mouth, I think it wouldn't be wise to go in that direction.

    Any news on when we can start expecting alpha/beta tests? And a final release?

    The alpha test should start in 2010, but will have missing features. The beta will probably be open to everybody (although limited in number of places), but I think it's unlikely to happen before end 2010, or even 2011. As for the release... when it's done!

    You've been involved with Infinity for a long time now - what ways do you use to unwind and relax from what looks like a hugely intense project?

    Gaming - recently I've been playing Dragon Age and Left For Dead 2; watching TV series such as House MD & Dexter and reading - I'm a fan of Isaac Asimov.

    Finally, do you have any tips you'd like to offer people wanting to make their own games based on all your experiences so far?

    As a disclaimer, what I'm about to say only applies to my experience of working as an indie developer with a team of volunteers over the net.

    I would say that the most important thing would be to start small and to grow slowly, and to avoid reliance on others as much as possible. Ideally, as a programmer you'd have all the skills to complete the programming side by yourself, and use stock art/music that you could replace with "real" content once talented people join your project. Sometimes I see a project leader that tries to get 20-30 people as early as possible, and I can't help but think, "this project is doomed from the start". Finally, you have to stick to the decisions you have made in the past, even if they're not necessarily the best ones. For example, maybe you'll discover that the 3D engine you've been working with has some limitations you didn't envision. Work around those limitations, don't just decide one day to switch to another engine, or worse, make your own.

      Report Article
    Sign in to follow this  

    User Feedback

    There are no comments to display.

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!