Wednesday, July 28, 2021

A Diamond Tier Games Industry Practice: Programmers' Meeting

Since August of 2020 I've been working as a senior game developer at a company in the Netherlands called Flavour. Flavour specializes in making serious games and they've been at it for quite some time. I must say it's been nothing short of amazing and more on that another time because I want to talk a little about something we do here that I particularly find valuable and that's the programmers' meeting.

During the programmers' meeting we get all the tech folks from all projects and do the following in a Slack call:
-Off-topic casual conversations and checking up on each other <3
-Sharing each others' industry experience with one another
-Asking each other for guidance/help regarding variety of issues
-Showing each other things we've worked on or have been working on
-Talking about anything and everything technical and industry related. (For example: Code conventions, architecture of a certain project, a newly released library, favorite tools of the trade, home automation projects and so forth.)

In this environment it's also allowed and encouraged to prepare talks/presentations about topics you'd like to discuss. One thing I enjoyed thoroughly is that different kinds of programmers can come together and discover each others' domain with ease and get to see the ways everyone battles in their region. Considering that it takes about an hour a week (formerly an hour every two weeks) it's a great way to connect colleagues and nurture growth whether it's for technical or non-technical skills.

Now, that being said I wanted to share one of the presentations I've made for one of our meetings here and give a little bit of a back story on how it came to be too. You'll see how it all comes together in the end and why I'm such a fan of these meetings.

I like helping people and if I see people succeed, grow and improve that makes me tremendously happy. Since 2011 I've been lucky enough to work with a number of exceptionally kind and intelligent young professionals in the scope of my work at Gray Lake Studios. With quite a bit of these junior colleagues I had the privilege of guiding them for their position. During this time frame I learned a lot from them and had the chance to collect a few nuggets of wisdom regarding useful ways to help them. Fast forward to May 2021 during which we were discussing bringing new interns/trainees in to join our production team. Around June this became a reality and I was super hyped to share my mentorship experience at the programmers' meeting, especially with our medior programmer who expressed his interest in learning how to onboard and train newcomers and was looking forward to act as the responsible party for our prospective programming trainee.

Here are all the points I brought forward that I thought could help my team. I kept these points a bit looser than normal because I didn't want things to be set in stone but more in the format of 'I've found these things useful to know but I would also like to hear your thoughts on it' kind of talk. I was especially curious about the input from our team considering the fact that we have a lead with way more experience than I did and another colleague who has been teaching game development at one of the best schools in the Netherlands. Without further ado below is my presentation: (Originally a 15 slide google sheets presentation with the boldened titles in the middle of each slide and a sentence or two below the title to get the ball rolling. I wrote more here and expanded on these to give less room for misunderstandings.)

  1. Symbiosis: Your junior is not a work slave. Your junior, just like you, is a person and they are here to grow professionally and personally all the while aiding the company through their role.
  2. Listen & help them focus: Talk to your juniors and learn why they are here and what they want to achieve in the long run. Learn what their abstract goals are. For example an abstract goal could be ‘I want to be a better programmer’. Then help them translate these to concrete goals such as ‘Finish reading Martin’s Clean Code’.
  3. Salt in the soup: One of the first things that can help build the confidence of a junior is letting them work on something that goes live at the end of a sprint cycle or a week. Keep it small, easy and within their reach. This can additionally demonstrate the whole flow for doing ‘real’ work to them with minimal risk for all parties included.
  4. Mentoring isn't only hard stuff but soft stuff too: Otherwise you could give them a book or YouTube playlist and they wouldn’t need you to begin with. When they have complicated questions and/or issues that go beyond the limitations of their technical responsibilities you still need to show up and show them the way. Are they not showering enough and they're stinking, you need to tell them they need to shower before coming to work. Are they speaking ill of another colleague behind their back you need to show them that's not the way to resolve issues. Are they taking too many requests and not speaking out you need to help them improve their expectation management skills. The solutions to these issues are unfortunately not on stackoverflow.com. In the past ten years I've had to deal with these kinds of issues often and luckily with a few exceptions and immediate and direct response worked in our cases.
  5. Expectations: Set them up for success. Do not expect new members to function right away without establishing a healthy dose of introduction to all things necessary. Early on spend enough time showing the ropes and demonstrate and communicate the habits you’d like to see. It will save everyone a lot of headache in the long run if your junior is up to speed and has minimum amount of barriers to begin with.
  6. Responsitrillities: Try to treat your junior's responsibilities as your own (but don't over do it of course). If they fail part of that failure could be you failing to provide adequate help in acquiring the skills for the task at hand. Remember to hold a mirror to yourself when they're doing badly. On another note failures and mistakes happen and it’s okay in healthy doses. Treat them as areas to treat. Don't panic and focus on continuous improvement. Your aim is to give the necessary support for you junior for them to realize becoming a self-standing member of your team.
  7. "Let me fix that for you...": Do not frequently do a junior's work for them if you know they can do it themselves but you need it done fast/right. Show them how and let them do it. You don't want two people working on one person's job or redoing everything someone does. After you instruct them adequately give them a chance to demonstrate what they've learned. Do remember that sometimes with some situations/persons their set goals may have been established out of scope for them. Do not overextend to cover up, try to reset these goals instead.
  8. “In space no-one can hear you scream”: Well, that’s because space is awesome! Give your juniors space to pursue their own interests and discover new things in their field, read about new discoveries, use new tools, watch the latest videos from industry folks. This will not only encourage them to enjoy their time and grow personally but you’ll also benefit from the things they’re learning which you should be asking them to share with your dinosaur self. This is something we used to do at Gray Lake Studios on Fridays. Yep, entire Fridays. Imagine you go to work and catch up on all the YouTube videos, dev articles and what not and then work on your crazy projects instead of other things.
  9. Learn from your juniors: More often than not working together with and guiding a junior will grow your mentoring skills. These skills are very handy because it can help you learn how to inspire and elevate your colleagues. It will also teach you a great deal on how to approach conflicts and resolve them without alienating those around you. When you're mentoring you're also the student being mentored on how to mentor. Watch yourself carefully, try to detect your short comings and find ways to grow in these areas. Not only that you'll also be learning about the newest tools, state of the art developments in the industry and much more if you're willing to take the time to listen to your junior. Finally your juniors will frequently challenge how things are being done and will have a fresh look on age old issues you've been facing. This is some diamond level feedback and input. Listen to them carefully.
  10. “I have nothing to do...”: a.k.a. the biggest truth-lie ever invented by every junior ever although without ill intentions on anyone's part. Two things are important here. Useful suspension material and teaching autonomy. At Gray Lake we used create abstract goals for our juniors and then convert these to concrete actions juniors can take. This is one tactic for a junior that created a focused approach to their timeline with us and it created further tasks that could be added as long as this fed the goals they've set in the beginning. This could be reading a relevant book that improves their skills or watching an industry talk with relevant material. Another thing that's handy is to create a backlog of entries that could be picked up independent of the sprint goals. Sometimes tasks will finish fast and instead of a junior going around requesting everyone's attention for more things to be created for him it's better if they already have somethings they can dedicate themselves on or create such tasks by themselves and announce that they're on such a task.
  11. “Can you help me with...”: a.k.a. I need to give this five minutes to see if I can figure it out myself but I thought I could ask you and save those minutes at your expense. This is another common phrase we heard at my company until we've advised our juniors to give it 5-10 minutes to see if they can solve it themselves and only then to come and get us. Of course this isn't applicable to every question or help request they have but more for technical ruts they may come across that's a couple of google searches away. Be careful to distinguish them and not to deny help where actual help is needed. Figuring out when to ask help is also a skill. You should to help them acquire this.
  12. "I will remember it!": a.k.a. I will definitely forget this, approach you later when you’re busy and sheepishly ask you about it exactly in the middle of your work for which it took you a lot of effort to focus on. Treatment: Get your trainee a notebook. Notebooks are their life. Let them take notes, write goals and tasks down. Solve issues on the notebook. Sleep with the note book. Love. the. notebook. World peace comes with? You guessed it right, the notebook.
  13. "...": Long silences from your intern with no information on what they’re up to are usually a bad thing especially if they're on the same project with you. Don’t helicopter and micro-manage but talk to them if there are big gaps of silence. Do spot checks. Do not go more than a full working day without talking to them. If they're doing things for a week and you hear on Friday that they worked on an entirely different task and did irrelevant work that's going to be a lot of time and energy lost. Sometimes juniors may also be bad at asking for help or keeping in touch. They could need guidance on a variety of issues but be afraid to ask it. Demonstrate good communication skills and encourage them to check in with the team or with you with a healthy frequency. Ask them what they're working on, if they need any help and also tell them what have you been up to to demonstrate a good habit of keeping each other in the loop.
  14. "Only two there are, no more, no less.": A junior may be assigned to ‘you’ but this does not mean we’re dealing in absolutes like the Sith do and they exclusively must communicate with you on all things that happen. Try to foster a healthy network for them social and professional and encourage them to ask for help and guidance from others too where necessary. Create the space for them to explore the work and responsibilities of others’ and make friends with their colleagues.
  15. "Have you tried turning it on and off again?": About that… sometimes your colleagues may come to work and not be able to do any work, they may seem distressed, occupied… Something is going on but what? We’re all people. We have problems at home, with our family, with our loved ones, friends, projects and our emotions get the best of us. Start with this simple approach: “Let’s take a break and grab a cup of coffee.” It’s a good idea to create some extra breathing time for them, chat with them to see if there’s something you can do to help them. If there’s something beyond our reach let them take some time off to get through it. We're not machines.
  16. Discussion Time: This is the slide where we ask questions, make remarks, discuss and hear other nuggets from you.
Finally here's the link to the slideshow for your convenience. I hope this was an interesting bit for you as much as it was for me to write it.

Stay safe!
Tunç




Friday, April 24, 2020

Why Blizzard & LucasArts is but you isn't?

Recently I had the privilege to have a conversation with the CEO of a games company managing several studios with more than 100 employees. I won't be giving names or disclosing any personal information to keep things anonymous. During our talk he told me about how he started his company about 20 years ago and how things evolved for him and I gathered some of the highlights from our talk and wanted to share them here:
  1. Stick to what makes you special.
  2. Build a world slowly and steadily.
I understand that at a first glance these are qualities that should be obvious to anyone making games but I've found that even though the self-evident nature of it all it's easy to forget about having to adhere to these values. 

So let's expand on these a little bit and I will also have some lowlights at the end for you about what I've found disagreeable about some of the aspirations and values.

Sticking to what makes you special breeds two advantages. One advantage is that you master your craft iteration after iteration and you become better at making the kind of games you want to entertain with. The other advantage is the fact that your audience starts to expect titles with a similar set of values as you start making a name for yourself. This is much like when we say Paradox Interactive and you say historically themed complex strategy games.

So during our conversation I listened to a story in which this core value for this company hasn't changed in twenty years and if you were to look at their track record they've been pumping out a lot of games featuring the same few mechanics, mastering them with each iteration. In essence this not only gives them the edge in knowing their domain so well but also saves them a lot of time as they don't need to reprogram or redesign certain aspects for their games. That means you save time and money and you can focus on other things that are also of great importance to your players. Of course with each iteration they are bringing improvements on these other segments as well. For their company with every new game they're adding a new narrative to their universe.


And as you can guess this is not something new and it's a lot like Blizzard's Warcraft series if we were to pick an example. It's easier to see this in a lot of successful game companies. I'm confident you can come up with examples yourself.

Of course this doesn't mean that you shouldn't reinvent things or you shouldn't ever try new genres and it also doesn't mean that a game company successful in one kind of game won't be as successful in another. The idea here is that this kind of consistency will give you an edge over time in terms of production and in terms of eloquently delivering a new message through your selected medium.

This brings us to our next nugget. As I was researching their games I've found out that there were hundreds, if not more, games that were proposing the exact same or a similar set of features with slightly different narratives. The gameplay was similar, the art almost a copy, the storefront a doppelganger... So what made them distinguishable after all? How do they dominate their genre and keep their popularity in the market whereas all these other games seemingly equal on all ends have no way of competing with them. Of course the answer to this is a combination of things but I found that the one distinguishable value between the competition was the insequential and omnidirectional nature of the narrative universe. What I mean with that is you could play any of the games to enter their universe and you could continue playing any of the prequels or sequels without having to worry about picking a continuation as the stories are of separate periods yet of a connected set of characters, background and world. The benefit of creating such a universe is not only the indifference in point of entry for a new player but also the fact that the games were perfect matches for the already existing fanbase.


Think of some of the newest Star Wars movies in which they are depicting background stories of the more beloved characters and these movies do not require any kind of foreknowledge of the original Saga for someone to enjoy them. You could take a person who didn't know anything about the series and still enjoy the picture as they are self-standing stories. This way LucasArts not only attracts its fanbase but also recruits newcomers who haven't experienced the Star Wars universe.

I'm going to end this blog post here and will write about some of the values that I haven't agreed with in the next post. Hope you enjoyed this bit!


Friday, January 31, 2020

Prototype your game and save time!

On a recent visit to a gaming event I had the chance to play various prototypes from both young and veteran game devs. Without giving any names I want to talk about one of the games I played at this event and sort of talk about a mistake I made often during my early years in the games industry.

This game was a 2D sidescrolling platformer where you control the player by a gamepad and you could jump on things, hit some things and adventure to various areas and so forth. Nothing out of ordinary or new in terms of features however the graphics were out of this world. When I saw this game my Jaw almost hit the floor. They wrote shader after shader and created elaborate sprites for each enemy and creature and attack. The main character had a special tool that animated its garments specifically for each frame of its jumps. Every time there was a message on your screen it was some AAA budget UI madness that hypnotized you into loving it. Every bit of the game looked like someone put their life's work on it. It looked like they sunk years into making this game and verified it after talking to one of the developers.

Painting a stark contrast the story of this game is something like the following: A young hero who has no money wakes up in her room and promptly goes out to fight some monsters that attack the city for unknown reasons. There was nothing else to the story. I was thrown into this amazing world with amazing visuals with amazing shaders with amazing UI effects and with amazing explosions and power attacks the player can do but when I asked the developer who the character was I received a reply along the lines of 'Yeah... We don't really know. We don't have a name for her. She's just the main character.'

This is a common mistake to make when you don't have anything to tell or you don't have a story to recount but you love games and you want to make a game just like the ones you loved playing. Unfortunately I'm also guilty of making this mistake many times. Most often young devs end up making games in the same spirit Michael Bay makes movies. It's all about the explosions and the action and there is not much else to withdraw from the experience. Obviously there are games that mechanically dominate and entertain and lack on the side of story however this doesn't mean a game that doesn't have a story isn't telling one but more on that at a later time.

The problem I see here is twofolds: One is that they didn't have a vision for the game apart from it looking and playing great and two is that they sunk an immense amount of dev time to polish the game before they decided what the game is about and if they want to make changes to anything at this point it's going to be a pain in the ass. You want to change the main character's clothes... all those weeks you spent on making those tight spritesheets need to be repeated, you want to bring a story element that ties your gameplay together then you have to match the quality of all the visuals you created, coded and timed to include that bit. What about the player UI? That super cool shader effect you wrote needs to be rewritten and readjusted because you need to add a new bar there... you get the idea. It's close to impossible to bring game altering decisions at this point without it costing an arm and a leg in production.


Mockups are super helpful. Use them to save time. Left and right will play the same game.
It takes weeks to make the art and animatio for right and a few minutes for the left.

Wise thing to do is to prototype and mockup your game and make sure you plug as many holes as possible before you commit to polishing it. On paper you can put a mark down and it could be a new enemy whereas on a polished game that's not the case.

Tuesday, November 12, 2019

Hyper-casual Headache

Some few weeks ago I came across the following youtube video of a young game developer/youtuber called Will Kwan. It's an interesting video that goes through various steps of how Will made various casual game prototypes and gotten one of them to get 400.000 downloads and the aftermath of it all. I highly recommend you watch this video if you are another young developer who imagines the riches you will make after creating the next casual game hit. 

This video will surely bring you back to reality.


At one point in his video Will discusses that perhaps we'll see the hyper-casual genre get vanquished by something new. Below was the response I commented on his video. 

"I don't know if we're ever going to see a genre dethrone the hyper-casual. It's almost like looking at memes on your phone on some image board or some posts on Instagram. You waste game after game without sticking to anything while on the other side the publishers/developers are tailoring and polishing their apps to squeeze the most attention and money out of you. These games most often have no personal impact for its players. It's like a tissue you use because your nose is runny. You just needed it. Not that tissues are bad. We need and rely on them. Hyper casual games can be good destressers/time killers.

On another note I don't think one game will be THAT GAME THAT WOKED EVERYONE UP and convinced everyone to drop hyper-casual altogether! Look at it like this: We have pop-music. Most often it's not that interesting but sometimes there are catchy tunes. Heck, I like quite a bit of pop songs and some casual games. It's on the radio, on the tv, on your phone... everyone knows who Justin Jeeber is. When Flying Lotus started dropping sick tracks that didn't eradicate pop music, right?

As a final note what's really interesting is 100 years from now I can't even fathom the saturation of the market or whether if there's a market then of anything like what we have now. I always imagine the 'good' kind of games that really add something to our lives won't be forgotten... much like the classics of literature. The 'good' games we have and had will become the classics of digital entertainment. 

I don't really have a problem with hyper casual but I do with the predatory nature of this hyper casual business world."

Tuesday, April 23, 2019

Filling Itchio/Steam Tax Forms for Dutch Game Developers/Partnerships

(Contents of this blog post aren't professional or legal advice of any sorts. If you don't know what you're doing please consult a lawyer that can help you.)

Hi there folks. Just recently as Gray Lake Studios we've decided to register our accounts as developers/publishers both on itch.io and Steam so we can publish our upcoming titles on these platforms.

Gray Lake Studios is a Netherlands based company and is registered here at the Chamber of Commerce as a Partnership Firm between the two co-founders. (Chamber of Commerce = KvK and Partnership Firm = Vennootschap Onder Firma - V.O.F.)

Now if you're also a Dutch Partnership Firm like us then perhaps we can help with some of the hurdles we came across and shed some light unto this issue so those who follow after us don't have to lose time like we did.

Long story short these platforms require you to fill in a tax questionnaire and helps you prepare an electronic form you can submit to U.S.A's Internal Revenue Service - I.R.S.

Most everything on the questionnaire should be easy to answer since they are questions about your company details, address etc. We've come across two obstacles. Here they are:

1 - Do you have a Tax Identification Number? (T.I.N.)




KvK unfortunately does not automatically issue a T.I.N. for Dutch Partnership Firms. The T.I.N. is NOT equivalent to your RSIN or VAT of your business. You have to visit this website here and obtain an E.I.N instead of a T.I.N and use your E.I.N. to proceed filling your tax questionairre. The website explains how you can apply by simply making a phone call. You should first download the SS-4 form from the IRS website, this form is two pages and then fill this form for yourself. After that make the call to the IRS and the person helping you will simply ask you the details on the SS-4 form. At the end of your phone conversation will give you your E.I.N. It took roughly 15-20 minutes. (You can find the phone number, when they open and other info on the link I provided.)

2 - Treaty Article Citation 26 - Limitation of Benefits



This was another 'What the hell am I supposed to fill here now?' moment for us. From what we understand this is the part where you're supposed read this document here IRS provides you. This is a .pdf document that goes over a lengthy treaty to help businesses avoid double taxation. If you peruse this document you will come across Article 13 on which we will find the part of the treaty that applies to our case. In the oncoming page we picked Other and added Article 13 Paragraph 1 as the Limitation on Benefits provision part.

After this part the tax questionairre is electronically prepared and is being sent. If there's any new information regarding the form I will update this mini guide.

Please remember this blog post is not a professional advice or legal advice of any sorts!

Friday, February 2, 2018

Kanye Tracks & Indie Games

I’m one of those people who never understood why people went mad about Kanye West’s music. ‘Isn’t this a developer blog?’ you’re thinking… ‘Huh?’... Well, yes it is however hang on and hear me out. Tunes from Kanye always struck me as shovelware crap when I heard them on the radio or on youtube here and there. By now if you’re a Kanye fan it may be clear that I don’t listen to hip-hop or rap as much as other stuff. Time after time I kept hearing Kanye this, Kanye that, Kanye so good you’ll lose your mind sort of banter and the number of followers grew bigger and their voice louder each time and I couldn’t stop thinking that there must have been something wrong with me since I didn’t really understand his music… or maybe I was right and it wasn’t worth listening to all along. There was only one way to find out of course, which was… to google ‘reddit why is kanye west so important’ and hit some links... and maybe after reading some of that I can listen to some songs because who doesn't need other people to tell them what to think.



After exhausting some written material I’ve learned that Kanye’s lyrics and his tunes brought some avantguard shit to the scene and he was an experienced producer who knew enough about his game to break its rules and craft fresh and bold statements people haven’t heard before. Then I went onto listening part… Still didn’t like it that much... but now I liked it a little bit more and I could feel that I completely shut myself out from giving it a chance before this. I knew where it was coming from and it had a charm it didn’t have before.

In the end what I’m saying is you can think of games, especially independent games as tracks from unknown Kanyes. Of course not all indie titles are opening up new genres and revolutionizing them but as an indie developer this could be a powerful mindset to consider. You can learn from Kanye and instead of getting trapped in a loop where you rehash and rehash existing material you may ask yourself ‘What is next?’. I'm not saying Kanye asked himself this question... all I'm saying is if you have the luxury to think about what you want to develop it may prove useful to take this question into account when you're churning ideas to develop or pitches to make.

Wednesday, July 26, 2017

How do you fight the "I'm drowning" feeling (as a game developer)?

Someone on reddit asked this question: How do you fight the "I'm drowning" feeling (as a game developer)?

Here's my answer for that:

I do this by doing three things. First, I make an overarching roadmap for the entirety of the development cycle. This includes headline chunks when put together represents the full workload necessary for release. This is usually two or three A4 pages long. Second, I keep an agenda/planner notebook of everyday tasks. Every morning I date the new page and write all tasks I need to take care of. This includes things like 'call mom', 'watch Unite 2016 video about serialization', 'pay heating bill' and 'further program the inputs for xbox'. When I can't finish a task, it's rewritten the following day. You need experience to prioritize the tasks and to scope your production to have this work correctly. This comes over time so don't expect things to run smoothly right away. Finally I keep one, big, chaotic notebook. In this notebook I'll try to solve programming issues, mindmap design problems and take notes of some ideas that pop up.