Like a Dragon’s programmers publicly shared some of Infinite Wealth’s source code as a message to aspiring programmers. We ask them about the unprecedented decision
Like a Dragon: Infinite Wealth, the latest entry in Sega’s Like a Dragon series, sold over one million units worldwide within a week of its release, breaking the franchise’s past records. But the grander the scale of a title, the easier it is for the individual efforts behind it to go unnoticed. That’s why we collaborated with SEGA to interview members of each section of RGG Studio and find out all there is to know about their meticulous work on the Like a Dragon franchise.
In this edition, we speak to RGG Studio’s technical director Yutaka Ito and programming section manager Tomoaki Nakamura about what it’s like to join the studio’s programming team and get started working on Like a Dragon games.
Yoshihito Tateishi, programmer and CEO of console game developer AnuraBless, also participated in asking the questions for this interview.
Why publish Infinite Wealth’s source code on X
―Ito-san, you revealed a snapshot of Infinite Wealth’s source code on your X account, which garnered quite the response. What was the intention behind this?
Yutaka Ito (Ito hereafter):
The reason why I created an X account in the first place was because I felt like there weren’t many game developers out there spreading technical information for people who want to become programmers.
Perhaps there’s a student out there who’s wondering how the Like a Dragon series is made and wants to become a programmer, but doesn’t know what they’re supposed to study. It would be very difficult for them to actually get answers from the development team or access information about how commercial titles are programmed.
I would like to encourage anyone who’s even remotely interested in becoming a game programmer and give them a push if they’re feeling unsure. The reason why I published some of the source code for Infinite Wealth on X was to show people what kind of environment the game was made in, as well as to show them that it’s surprisingly simple.
―I never expected to come across the source code for an AAA game while scrolling through social media, I was quite surprised.
Ito:
We kind of pushed the limits of what we’re allowed to make public.
―Am I right in assuming the bit of code was for Crazy Delivery?
Ito:
If you know, you know… So, no comment from me on that (laughs).
―(laughs) That said, source code feels like it’s a core part of the game and something very confidential. Did you release the code on the spur of the moment, or after detailed consultation with the rest of RGG Studio?
Ito:
Of course, I consulted with each team to check if it would be safe to show the source code. Naturally, I also asked the person who wrote the code for permission. I chose parts that looked relatively clean and that I felt would get interesting reactions, all while avoiding anything confidential.
―So you knew that it would go viral?
Ito:
Yes, people pointed out all the things I expected they would (laughs). What I didn’t expect though, was the number of comments asking, “You’re still using C++ in this day and age?” I was surprised at how many people don’t know that C++ is used in game development.
Of course, it’s natural to use C# in Unity when you’re thinking of making a game for the first time, and many commercial casual and mobile games are made in Unity. However, a lot of high-end titles are developed in C++. Many of the graduates who come for an interview at Sega have no experience with C++. But if you want to be involved in the development of console games, it’s a good idea to gain experience creating games in C++ while you’re still a student.
―I remember there being many reactions about the large number of “if statements.”
Ito:
We chose a simple part of the source code with many if statements so that even a beginner in programming could understand it. Nowadays, compilers automatically optimize the code, and processing doesn’t grow that heavy just because there’s one too many if statements. However, it seems people were not expecting to find something like that in the source code of a commercial title, so it generated some buzz.
Tomoaki Nakamura (Nakamura hereafter):
Since game source code is rarely disclosed in the industry, I think people thought that there must be some kind of special programming method used in game development. However, in reality, we made the game using ordinary C++, as we’ve shown, and I think we made people realize that C++ is enough for anyone to be able to make a game.
―By the way, was the source code tweaked for showing to the public, or is it actually used as-is in Infinite Wealth?
Ito:
We published the source code as-is, with only a few debugging comments removed.
―It seemed to me that the bit you published was all written by the same person, as the writing style was the same throughout, including things like indentation and bracket positions.
Nakamura:
Yes, as you’ve guessed, the published source code was all written by the same person, which is why it’s so uniform. Sometimes there’s more than one person editing a code, but in such cases, there’s bound to be discrepancies in the positions of brackets or the way spaces are inserted (laughs). As for how the code is written, newcomers usually work with their seniors for a while, so oftentimes their style of writing ends up resembling that of their seniors.
There are no strict coding conventions at RGG Studio
―You also mentioned in your post that there are no coding conventions at RGG Studio and that each member basically writes in their own style. It was interesting seeing peoples’ surprise at that.
Ito:
When RGG Studio was initially established in 2011, we had programmers from both Sega’s arcade game development and console development teams joining forces, and we noticed right away that there were big differences in function naming and capitalization rules between the teams.
Back then, the company leaned towards establishing uniform coding conventions, and RGG Studio was also considering choosing one and sticking to it. However, we still struggled to make things uniform, and after releasing a couple of games, we came to the conclusion that there was no particular problem even if the source code was written in different styles.
Nakamura:
For one-time console games, it’s not really common for the source code to continue to get updated for several years after release, so we prioritize letting each person work on the game comfortably in their own style rather than being fussy about how they code. I do think, however, that in the case of a live-service game where the source code is continuously updated and goes through staff changes, it would be logical to apply stricter coding conventions, so that it’s easier to keep track of things.
―But with large-scale projects like the Like a Dragon games, I expect chaos would break loose if there were no rules at all. Do you have some sort of unspoken rules that limit how many liberties staff can take, despite autonomy being your basic premise?
Ito:
The titles we work on use the general Like a Dragon framework, so there are rules at the overall game design level, but there are no rules at the source code level. We teach newcomers how to make games in the Dragon Engine during their training and point out any incorrect use of the engine on a case-by-case basis. The rest is basically up to them.
―You’ve mentioned previously that you have small teams dedicated to minigames, side content etc. respectively, so in that sense, it feels like the autonomy of each developer is guaranteed.
Ito:
That may be so. The Like a Dragon series has 40 to 50 programmers working on each title, but there’s a variety of different cultures in there depending on the section they are assigned to, be it adventure, battles, minigames or something else. Think of it like a lot of small modules that each work on the game using the method that best suits their needs.
And honestly, if you were to ask me if the main programmers know all the details of what each module is doing, I would say no – and I don’t require them to do so either. Each section leader takes responsibility for their work and makes sure they see things through to end, which is precisely how we’re able to make such large-scale games in the Like a Dragon series.
We want programming to feel fun and rewarding for our team
―What’s it like to work as a programmer at RGG Studio?
Ito:
Because of our rapid pace of development, we place great importance on direct communication and resolving issues as soon as they come up. To this end, we are particular about the seating layout, making sure to place young programmers next to more experienced staff so that they can ask questions while looking at each other’s screens. We also try to have newcomers sit next to senior staff members who are close to them in age to make it easier for them to communicate openly.
One thing I always tell our new programmers is to respect people in other teams. Rather than flat-out rejecting difficult requests, I instruct them to think of alternatives and try to to be considerate towards the other party. This kind of reliable attitude makes the designers and planners more inclined to consult with the programmers, and I believe this is very beneficial for interpersonal relationships in the studio.
―How do you train programmers at RGG Studio?
Ito:
New programmers at RGG Studio go through a one-year training period during which they make three original games. But the catch is that each game is developed in a different engine. We first have them use our Dragon Engine, followed by Unity, and finally Unreal Engine.
For a long time, we used only our in-house engine for development. But five or six years ago, as the number of students who only knew Unity increased, we decided to use Unity to develop our newest game at the time, Super Monkey Ball: Banana Blitz. We also decided to make Like a Dragon: Ishin! in Unreal Engine because we wanted to make sure we’re able to respond flexibly to any future changes in the standards of game development. That’s also why we teach new programmers at RGG Studio how to handle three game engines – Dragon Engine, Unity, and Unreal Engine, during their first year.
―So, programmers assigned to RGG Studio learn to code for three engines: Dragon Engine, Unity, and Unreal Engine.
Ito:
The instructors responsible for the newcomers’ training are programmers who have actually developed titles for the respective engines. Since the training focuses on practical aspects, it helps new members grow as professional game programmers in a short period of time. There are many things that can only be learned through hands-on game development, so only the first month of the three-month course on each engine is devoted to lectures. The students spend the remaining two months planning, presenting, and programming their own projects. In the end, they present their completed games in front of all the programmers.
―So it’s not just learning, but also putting together the project and showcasing the finished product to others.
Ito:
There is a reason why we ask them to come up with their own proposals. We require our programmers at RGG Studio to not only work as instructed, but to form and voice their own opinions on the game’s design and contribute towards improving the game, so we train them in this area as well.
―As a manager, is there anything you pay special attention to in how you lead the programmer team?
Ito:
Above all, I want them to enjoy their work. I mentioned earlier that there are no coding conventions at RGG Studio, and I believe that being able to program in an environment that suits you, using your preferred style of coding, also contributes to work being enjoyable.
Another thing is to make sure the team feels rewarded for their effort. After finishing their training, each of the second-year programmers are assigned a Like a Dragon minigame to work on. When they realize that they’re the only programmer on that minigame, it encourages a sense of responsibility. They also get to expand their connections within the company as they communicate with the designers and planners through their work. Plus, if the minigame is well-received after launch, they get a big confidence boost.
If they’re given the chance to demonstrate their skills at the forefront of a project, and the game they worked on gets rave reviews, I think it naturally leads to the programmers finding game development fun.
―With the Like a Dragon series having such a short release cycle, it seems like new staff can build up their portfolios in no time.
Nakamura:
If your name appears in a game’s end credits in your second year in the industry, and your next title is right around the corner, you might feel like sticking at it for another year. Last year’s newbies had their names come up in three games in a single year.
Ito:
Recent major titles tend to have long development cycles, so I think the new programmers at RGG Studio are blessed (laughs).
―Finally, what would you like to say to your fellow programmers and those who are aspiring to become programmers?
Ito:
RGG Studio is not only open to fresh graduates, but also to people who want to switch industries. Recently, we hired three mid-career workers, two of whom had no experience in the game industry, but within a year, they were already working as excellent game programmers. Game programming is not only for those who have studied it professionally. Anyone can become a game programmer as long as they have learned the basics of programming. If you are working in another industry with the dream of becoming a game programmer, we encourage you to apply for the mid-career job openings at RGG Studio.
―I’m looking forward to your future endeavors. Thank you for your time!
Like a Dragon: Infinite Wealth is available for the PC (Steam), PS4/PS5 and Xbox One/Xbox Series X|S. In the previous part of this interview, we talked to RGG Studio’s programmers about the biggest challenges involved in making Yakuza games.
[Interviewer, Editor: Ayuo Kawase]
[Interviewer: Tasu (Yoshihito Tateishi)]
[Writer, Editor: Yuuki Inoue]