Category Archives: Video Game Development

So you want to be a video game developer, huh?

(Cover Photo: ©1961 – Toho Co., Ltd.
Akira Kurosawa’s “Yojimbo”)

No problem.

Read this, then we’ll talk about it 😉

Myths & Facts

Many people believe that video game developers earn millions, live in Hawaii, drive a Ferrari, and date Victoria’s Secret supermodels. Well, maybe some of my colleagues do… Not me, for sure.

“Hey, where are the supermodels ?!”

Contrary to popular belief, career in video game development is full of challenges. Besides dealing with coding hurdles and release date stress, where time is your enemy in both cases, you need to handle egocentric teamwork meetings while keeping an eye on the tight budget. If that is not enough, you need to refine your skills forever and ever to make sure that you are keeping up with the latest technological achievements, even before they are released. – “Hey, where are the supermodels?!”

Despite all challenges, a game developer’s life is actually more upbeat than speculated. Forget about all the challenges for a minute; the best part is the necessity of refining skills. When you keep on sharpening your technical/artistic skills, you’ll have a chance of tweaking industry standard workflows. With every tweak, you’ll add a bit of haute couture touch both to the project you’re working on, and to your signature development methods. The more you sculpt a unique style, the more you stand out from the rest. And, that makes a real difference, by all means.

Education necessary?

Most preferably yes, but not essential. I studied both Science and Arts, but have always considered myself an autodidact a self-taught person. Nobody taught me how to develop video games! Through rewarding self-discipline skills, studying various topics in Mathematics, Physics, Architecture, Sculpture and Philosophy helped me to increase self-knowledge and unleash my creative potential. I’m an advocate of the mantra, “never stop learning.”

Regarding the opportunity for learning new tricks, a new video game project still makes my heart beat like a butterfly, even after 30+ years of active coding. – I keep the spirit alive!

“Self-education is, I firmly believe, the only kind of education there is.” – (Isaac Asimov)

Manners Maketh Man

Video game development is challenging, sore and tough. Doing video game business is worse!

Because of cheap and dirty business tricks that you are not familiar with yet, your heart can be easily broken. You may lose self confidence by getting discouraged, no matter how talented you are. Misery plagues creativity! When days turn into nights, melancholy takes over. Then, your talent starts to fade away. At the final phase, you start asking yourself “What have I done to deserve this?”, and the more you question your manners the more you lose self confidence. A perfect vicious circle! – Yep, I’ve been there. I know what I’m talking about.

No worries! It’s not your fault.

Unlike typical businessmen -underestimating your skills in a hot meeting, while puffing the fume of an expensive cigar right into your eyes- game developers are artists. I’m afraid, raw capitalist tricks work on us, simply because we are fragile.

Here is the cure… Act by the book! Follow the unwritten rules and guidelines of professionalism, and be happy 😉

    • Develop a thick skin.
    • Be prepared for the worst.
    • Settle with “less”. – Less is more.
    • In case of failure; get angry, not sad. Stand up and fight!
    • In case of criticism; embrace it. It is a chance for sharpening your skills.
    • Be good at what you are doing, not the best! Best kills creativity, and feeds pride.
    • You better be really good at what you are doing!

For starters, spend some time with experienced game developers. Speak less, listen more, show respect, and be gentle. Pay attention to how they tolerate mistakes. It is mistakes, that makes an artist a better one. Good artists are well aware of it, most probably you are not. That makes a difference!

“Creativity is allowing yourself to make mistakes. Art is knowing which ones to keep.” – (Scott Adams)

Knighthood served as a “Free Man”

I have always been a freelancer; a “free man” with no chains tied to a game development company/publisher. I had the chance of picking the projects I wanted, working with people I liked, and always preferred creativity over materialism – Free as a bird!

Sounds too good?

Actually, it is a state of nirvana, that comes with a few costs!

Expect to work harder than full-time developers – You are a marathon runner, not a nine-to-fiver. Be prepared to work more than 10 hours a day.

“There is no substitute for hard work.” – (Thomas A. Edison)

Invest in yourself – Besides work, make some time for reading something “new”. Never underestimate the advantage of using latest technologies. Keep sharpening your skills regularly, and be ahead of full-timers.

“Give me six hours to chop down a tree and I will spend the first four sharpening the axe.” – (Abraham Lincoln)

Expect no respect from full-time developers – They are going to hate you! Simply because, you have already become what they want to be. – You have achieved the goals of becoming a “free” game developer. You are no more afraid of taking risks. You have right to say “No!”. Your talent is appreciated. And, you are well paid… Enough number of reasons to attract hatred. So, be a professional by getting prepared for a bunch of miserable/jealous full-timers gathered around a meeting table. Do not let the meeting room turn into a battlefield. Take control of the conversation by tolerance. Make sure they understand that you could have simply become one of them, if you hadn’t taken the risks!

“Go up close to your friend, but do not go over to him! We should also respect the enemy in our friend.” – (Friedrich Nietzsche)

Expect no credits – None at all. If you are well paid and your work is appreciated, this is all you’ll get for a long time. Within years, you’ll start getting credits for your work, for sure. However, you better accept the bitter truth that you’ll never get the same “fame factor” that full-timers do. Full-time dedication to a single developer/publisher is always rewarded with full credits. I am afraid, this is how it works… As a result of your anonymous contributions; you will not be famous, you will not be invited to release parties, and you will be purposely excluded from development team photos. Most embarrassingly, your existence will be denied while your work will always be remembered! – It’s easy to deal with this case; don’t confuse fame with success. For me, success is happiness.

“Fame is the thirst of youth.” – (Lord Byron)

Expect no money – At least for now! You’ll make plenty of money, soon, but this shouldn’t be the ultimate motivation of your career. Game development is all about “passion”. A passion for coding challenges, artwork challenges, teamwork challenges, and even more challenges that you do not expect at all. Keep in mind that you are solving technical problems for the sake of art. It is 100% fun! – In return, you’ll get paid for it, sooner or later.

“A wise man should have money in his head, but not in his heart.” – (Jonathan Swift)

Despite all psychological threats above, working in video game industry as a freelancer is the best way to serve and survive. Swimming with sharks in a pool will keep you prepared for anything. Contrary to full-time workers, take advantage of your freelance position; free your mind, be creative & productive, and dominate the pool. – In case you need Plan B, enjoy the luxury of switching to an another pool 😉

Beyond Barriers

Many people assume that living in Istanbul (Turkey) as a freelance game developer and doing business with international game developers/publishers would be the hardest thing to do. I hear, “But, you’ve got to be there!” kind of buzz all the time. – Actually, not at all. In addition to overcoming cultural complexities, living in Istanbul as a freelancer and doing business with international game developers/publishers has always been the smoothest part in my workflow.

Even back in 1984, it was a no-brainer process. Before our local post office had a fax machine for hire, I used to contact people by writing business letters and sending them my codes/artwork on cassette tapes. Yes, it used to take 2 months to get a reply from UK, but that was the way how business was done in those days! – Worth waiting every minute for, actually. Each and every day I used to ask mom if the postman had delivered something for me; an acceptance letter, a cassette tape with my next project specifications on it, a new release with my code/artwork in it, or a paycheck preferably.

When I started working in UK, things changed entirely. Peaceful days were gone. Never-ending meetings, heavy ego traffic, more chat, less work, and unsuccessful management tricks adding insult to injury by causing more stress as we get close to the release day! Yep, usual game development company stuff, same even today. 😉

Take my word for it! Get rid of unnecessary distractors. If you are self-disciplined and well-organized, nothing compares to working at home as a freelancer. Today, we have e-mail, video conference and more than anything we need at our fingertips. Easier and faster than ever. Never mind the distance, focus on the business! Sharpen your skills. If you are really talented at something, there is simply no barrier for doing business globally.

The barriers are not erected which can say to aspiring talents and industry, “Thus far and no farther.” – (Ludwig van Beethoven)

One final word, young man… Keep in touch!

A lot of things have changed and evolved during the last 3 decades of game development, except one thing; the necessity of keeping in touch with your contacts! If you’re in entertainment business, keeping your relations alive is everything. – Sounds easy, but is actually hard to do.

3-bit Node Graph Architecture for Next-Gen Game Development

Speaking of my latest video game development project, yet an another milestone achieved. – Quite a tough one, indeed!

But first, please allow me to focus on some of the very basic mathematical logic definitions heavily used in software engineering, so that we can clearly understand what’s going on under the hood of a decent game development process.

Don’t worry, it’s not rocket science 😉

Some theory

All video games have gameplay mechanics based on logic. A game is “a set of story driven goals to achieve” from a programmer’s perspective.

When you open a chest, solve a puzzle or kill an enemy, you are actually triggering a logic unit that is predefined within the game code. Depending on game’s technical requirements and gameplay complexity, there can be thousands of these units forming a web of logic units.

Game programmers tend to use graph theory for defining and coding logic units. Each unit is symbolized with a simple geometric shape. A box, a circle, anything… And these units are connected to each other with links.

  “Logic units” (nodes) represent tasks that the player will perform.

  “Links” (lines) represent the relationship between the logic units.

Behaviour Analysis

A node graph architecture is almost identical to an electronic circuit. When you start executing a node graph code, you are actually branching from one component (node, in our case) to an another by the rules you’ve set for the logic units, just like electric current flowing from a resistor to a capacitor. And, as you can guess, this type of signal flow is 100% linear.

When the player accomplishes a task, the node related to that event will be “expired”. In other words, it will be dead. Expired nodes cannot be resurrected. Once they’re done, they will be ignored (skipped) during code execution, forever. – Which is unlikely in electronics! An electronic component, such as a resistor, a diode, etc. cannot be conditionally turned on/off.

Back to 2002 for a “classic” implementation: Flagger

During the “Culpa Innata” development sessions, we precisely knew that we needed a node graph architecture for handling game’s complex execution flow. Many discussions were held on the method of implementation. All members of the core management & development team were expert electric/electronics engineers with no experience in video game production [Reference], but me! As a video game programmer, my perspective towards node graph theory was naturally very different, contrary to their classical approaches. I wasn’t thinking in terms of voltage, current, etc., but focused on just one thing: optimized code execution.

Thanks to my Zilog Z80 and Motorola 68000 assembly language programming background, I offered the term “Flag” for the base logic unit (node), and teamed up with Mr. Mete Balcı for 3 weeks. In December 2002, we developed a tool called “Flagger”.

Pros and Cons

Flagger was a C++ code generator with a very handy visual interface similar to UE4’s current Blueprint approach. Using Flagger, we were able to add nodes, connect them to each other, program the logic behind the nodes/links, and even take printout of the whole node graph scenario. When the visual logic design process was over, it was just a matter of selecting “Generate C++ code” from the menu, and source code was generated within minutes.

Over the following years, Flagger evolved into a more sophisticated development tool capable of handling various scenarios. Although it was a very handy tool and saved many hours during “Culpa Innata” sessions, there were a few problems with the classical node graph theory that the implementation was based on;

  Flags were single threaded. Only one node was allowed to execute at a time. No multi-threading.

  Flags were expirable. When a task was done, related flag (node) was marked as “expired”, not deleted for the sake of logic integrity.

  Flags were not reusable. Once they were expired, there was no way of resurrecting them. – Inefficient memory usage, thanks to hundreds of expired nodes.

  Flags were heavily loaded with variables. Too many dialogue related “customized” variables were defined for special cases (exceptions). – Inefficient memory usage, once again.

  Flag execution flow wasn’t well optimized because of node-tree search algorithm. The more nodes we had, the longer it took to accomplish the search.

  Flag execution was linear. When a node was expired, the graph code was first searching for related nodes and then retriggering the whole diagram from the beginning, like an electronic circuit simulator. – Well, that was ideal for modeling a circuit, not for developing a video game!

A Modern Approach: 3-bit Worker!

13 years later, I have once again found an opportunity to dive into node graph theory, and just completed implementing a new architecture for my latest video game development project. Unlike Flagger, it is something extraordinary! It is very… atypical, unconventional, unorthodox… Well, whatever… You got it 😉

First of all, it has nothing to do with classical electric/electronic circuit theory. This time, I’m on my own, and approaching the problem as a software engineer. Everything I designed/coded is based on game requirement specifications. In other words, it is implemented with “practical usage” in mind.

  I have defined the basic logic unit (node), as a “worker”.(Due to functional similarities, I simply borrowed this term from Web Workers.)

  A worker is a background task with adjustable priority settings. It performs/responds like a hardware interrupt.

  Each worker is multi-threaded.

  Depending on conditional requirements, a worker can expire and/or live forever. If expired, it can be resurrected and/or reinitialized, while preserving its previous state. So, a worker is a 100% reusable node.

  Each worker uses only 3-bits! No additional variables, no references, nothing else. – (If necessary, a worker offers flexible architecture for additional variables. However, I find it totally unnecessary. 3-bits are more than enough!)

  Workers are object oriented. They can easily be inherited.

  Inherited workers don’t need additional logic variables. All child workers share the same 3-bit information that they inherited from their parents!

  Each worker has a time dependent linear workflow. Just like a reel-to-reel tape recorder, it can be played, paused, slowed down, accelerated, fast forwarded, rewinded, and stopped.

  Workers can be non-linearly linked to other Workers! Which means, node-tree search algorithms are no more necessary. There is no “main loop” for executing nodes! Code execution is pre-cached for optimum performance.

  Workers are optimized for event driven methodology. No matter how many concurrent active workers (threads) you have in the scene, there is practically no CPU overhead. Ideal for mobile scenarios.

  Workers are managed by “Managers”. A Manager is inherited from base Worker node. So, any worker can be assigned as a Manager.

  Workers can communicate with each other and access shared variables via Managers.

  Whole architecture is 100% platform independent. For a showcase, I’ve implemented it for Unreal Engine 4 using C++ and Blueprints. It can easily be ported to other game engines; such as Unity, CryEngine, etc.

  And, most important of all, everything is meticulously tested. – It’s working as of today 🙂

Any drawbacks?

Sure… Due to complexity of comprehending “a set of non-linearly linked time dependent linear nodes”, debugging can be a nightmare. As always, designing simplified and organized logic sets reduces potential problems. – I keep my logic sets neat and tidy 😉

So, what’s next?

Well, to be honest, since all theoretical stuff is done, I’ll switch to game content development. I am quite sure that I’ll keep on adding/removing things to my 3-bit node graph architecture. I will keep on improving it while preserving its simplicity, for sure.

“It is vain to do with more what can be done with less.” – (William of Ockham)

New Video Game Project: Annual Information Update 2014

The new video game project that I started working on a year ago, precisely, is going great! With respect to maintaining confidentiality, I still can’t share specific details with you, but I am more than happy to say that everything is going on “as planned”. – Something quite contrary to the nature of game development in general 😉

One for all, all for one

As the co-producer of the project, I have many responsibilities in addition to the usual things that I have to do. Game design, story development, programming, conceptual artwork design, 3d modeling, texturing, music production, etc. Although sounds like a one-man-army project, actually it is not.

“Only one artist takes all the responsibility…”

In order to preserve game’s artistic style, it is quite normal that only one artist takes all the responsibility of designing & planning everything, and making sure that things will be kept/done in that way. And, this is exactly what I am doing nowadays. – (At one point, we will have developers and artists contributing to the project, naturally. Until that moment, everything must be “well-defined”.)

Coding

Instead of creating detailed game design documents, some game development projects begin with “conceptual coding”. Same goes for this project. Contrary to traditional game development workflow that begins with documenting the game design, I decided to start with implementing a proof of concept.

Similar to LEGO building bricks, I have been coding fundamental elements of “gameplay”. As a result of these coding sessions, I have clearly envisioned a number of next-gen features that can possibly enrich our game.

We are currently evaluating the options. When the gameplay implementation is over, I’ll go back to game design document for sure. – (Yes, I know that it sounds a bit unorthodox, but I have my reasons. Sometimes it’s good to break old habits for the sake of creativity. In this game, I will let “gameplay” define and drive the game design!)

Spinners and Probability

Coding is all about making decisions. Getting your hands dirty in Mathematics has always been rewarding. Going back and forth between Calculus and Geometry is more than a stellar experience.  Not because it makes you a better programmer, but simply because it turns you into a “wise decision maker”.

In terms of design and implementation, this game development project is full of complex decisions. Thankfully, “coding” is the glue between questions and answers. When used wisely, coding offers new ways of dealing with decisions that you derive from Mathematics, and this is exactly what I’m trying to achieve throughout this project.

Content is King!

I spent a lot of time creating a narrative hook, which I believe is the most underestimated element in today’s game design trends! With references from 16-bit retro gaming era, I am quite sure that a well-defined hook creates a huge impact on gameplay.

“Admittedly, I had to make 7 revisions for a ‘great’ hook…”

It was a tough job. In order to fine-tune the hook, I had to rewrite it again and again for many times. After each rewrite, I left it on my bookshelf at least for a few weeks, so that I can completely concentrate on other things as well.  When I picked it up weeks later, I was objective enough to assess the tension and come up with fresh ideas. Each iteration added more flavour to the previous version. Admittedly, I had to make 7 revisions for a great hook, which later turned out to be “Level One”. – Worth every minute spent!

Hidden Treasure: “Workflow 2.0”

The most distinguishing element of this project is the optimized workflow that I have been working on as a side project for many years. Thanks to this workflow, our project will have the luxury of really dramatic cost savings, a more “talent oriented” development process, and the competence of keeping game design/style integrity throughout the development process.

So far, so good…

Still thousands of things to do, so I’m going back to work now.

I’ll keep you posted.

An unexpected surprise made my day!

Since the day I noticed his Star Wars, Alien and Predator sketches, I have always admired Tuncay Talayman’s artwork.

It has been a privilege –and a lot of fun– working with him during Culpa Innata development sessions (2001-2003). Even after all those years, his continuous passion for improving his techniques and seeking new ways of artistic expressions, still surprises me. The portrait below is one of them 😉

What a lovely surprise… Thank you very much Tuncay!

Tuncay Talayman's portrait of Mert Börü

CRYENGINE is for everyone!

Video game development industry has recently been embraced with one great news after another!

In response to Epic’s Unreal Engine 4 subscription plan, Crytek has just revealed that from May this year, indie developers will be able to use all of CRYENGINE’s cutting-edge features for a monthly subscription fee of 9.90 USD/EUR per user – royalty free!

Now, this is getting crazy! 😛

Press release: Crytek announces CRYENGINE-as-a-Service Program

Unreal Engine 4 for everyone!

Thanks to Unreal community, a rumour about the NEXT BIG THING has been doing the rounds for almost a year. Well… It seems this is more than BIG!

Today, Epic announced that “Unreal Engine 4 is for everyone!”

Not kidding… Now, it is for everyone!

For $19/month (plus, 5% of gross revenue), we can have access to everything, including the Unreal Editor in ready-to-run form, and the engine’s complete C++ source code hosted on GitHub for collaborative development. – Oh My God!

You can read Tim Sweeney’s post on the Unreal Engine website for more information.

Hats off to Epic!

Epic is one of the few companies in the video game industry that really take care of what developers are saying, and I am a great fan of them because of their nice attitude towards us.

Thank you Epic!

“Paradise Lost” found!

(Illustration: “Forthwith upright he rears from off the pool”,
by Gustave Doré – © University at Buffalo Libraries)

“Paradise Lost” was the first commercial Amiga game designed and developed in Turkey. It was proudly produced by Ahmet Ergen and me, and released on 4 floppy disks in December, 1991.

Though it was a phenomenal technical achievement in terms of setting the bar for game development in Turkey by the early 1990s, thanks to problematic distribution channel and no media support, it was a commercial failure. Only a few hundred copies were sold! And, as far as I know, none of them have survived. It is a game that is no longer known to exist in any private collections or public archives. Long lost and forgotten… Until now!

Continue reading “Paradise Lost” found!