The Tale of a Newbie Programmer

Do you know Sora, our newest crew member? Please enjoy this self-introduction. We’re giving the floor to him now!

Hello! You may have not heard about me before, as I quietly slipped into the crew.

I come bearing the mame of my favorite character: Sora as my nickname. I discovered 100% Orange Juice through a friend back in 2016. If I had to quickly give an introduction: I live in France, am 24 years old at the time I’m writing this, and I love heavy metal music. Atreyu’s band is my personal favorite. \m/

My favorite hobbies are pretty much: gaming, creating things, drawing, and hugging my Sora & Suguri plushies.

I joined the Fruitbats on the 10th January 2020. It’s my first professional experience as a programmer, and I was super excited to get started. After setting up the project files and everything, I got assigned my very first task: making the master volume option, which needed both UI modification, and save file changes.

The game engine used, Luna3D, is made in a very specific way which does not use OOP everywhere – I just got out of intense C++ practice before getting hired, so seeing old methods of coding felt a bit threatening at first.

The fun part of working with a brand new environment was first getting my bearings, finding what does what, and putting those two together into a decent code. Thanks to the team, I asked whenever I needed help, and I had my answers quite fast. Something I wasn’t used to though, is that logic and drawing are both handled in two different places, which I was not doing before. That said, a lot of the basic concepts were completely unknown to me as I had no previous experience with them. 7 hours of work were needed before I managed to get a decent result that worked quite well. Later on, I kept on going with other voice options, as well as other tiny changes here and there.

The first big project I had to handle on my own was one of the new Playground mini-games: Poppo Shooting. It went through several prototypes, the one that comes to mind being stationary balloons, and a score based gameplay. It got changed later to moving balloons carrying rewards.

It was also the first time I had to tackle the wonderful network code, and managing the AI behavior. When starting the development, I was unsure of which direction I should go, there wasn’t (from my understanding back then) any hitbox functionality, which was crucial for a balloon & dart based game, which was the base idea. A quick search on google led me to an SDL example, which I could adapt to our code. And miracle of miracles, it worked. Besides that, some of you might remember that the CPU was really bad at this minigame. I came back to it weeks later (I think it was a few days before School Crashers event ended) and improved the AI by a lot, giving them priorities, a (way) better aim, and decision management.

Afterwards came some QoL features, such as saving the lobby name & password between game sessions, and changing those in the lobby directly if you were the host. The previous experience I gathered made that way easier for me to implement. It was the first time I had to bother Tony (Rive, our lead programmer) for some AoS2 code snippet, which I took about 30 minutes (and a lot of re-explanations) to understand. If you read that Tony, please forgive me!

The next “big” feature I made was the integration of the Rich Presence feature of Steam & Discord, as well as fixing steam invites so they would make you join your friend’s lobby directly. It took a lot of effort to debug, but in the end everything worked quite well. The funny part was working with an old framework (discord-rpc) which has no more support at all. I remember having some issue about the game invitations, but trying to email discord would redirect me to a server that gives support to the newer version and not the old, which was not helping me at all. But in the end, I eventually found out the issue myself and corrected it. We had to implement a way to retrieve Steam avatars and convert it into a usable texture, which took me a lot of research in order to know how to do it, as I had little to none knowledge about how DirectX works. With the help of hexun, we managed to get the avatars working together, which were added later in the lobby screen.

Later on, the project I have probably spent the most hours on (a full month and a half!) was handling, along with trackftv (yet another of our programmers), the Bounty Hunters event. While Track was creating the quest & bounty side of the game mode, I was creating the shops as well as thinking of items. It was a lot of suffering fun to debug all of this. (And even if some horrible desyncs got through when it was put live, we managed to fix it quite rapidly.) The one thing I remember the most is all the panel layering issues we had – Basically, the panels had way too many things on them at once, which completely messed up the layers (For example, BH shops going over Arthur’s shops, like competition was a crime!)

Thankfully, Track managed to fix all of it… I think. I’m sure we’ll have to look back at it again once we’ll tackle the remastered version of Bounty Hunt!

You can notice here that we originally planned items to be locked behind your current Norma level.

Lately, you saw me pulling out the official modding support. It was something I really was looking forward to, knowing that I came myself from the modding scene in other games. The whole system took about 20 hours of work. It’s of course not yet finished. A lot more is coming for it, including the much requested Steam Workshop support. I don’t have any big details to share about the system overall, just that it was a second take at it after failing the first time a few weeks back. But I’m glad that today so many people enjoy making custom skins for their favorite units.

I could expand that list of projects even more, but some things have yet to remain private for now. I’m super happy to be a part of this wonderful team, and I can’t wait to see how far we’ll be going together!

Editor’s note: everyone be nice to Sora!

New Stories for 99 Spirits

Main capsule image
99 Spirits – Cage of Night is now available for the first time in English. It is the first of the two side stories to PC Puzzle RPG 99 Spirits, giving you a chance to know more of the fan favourite support characters. We are releasing Cage of Night directly on Steam as a DLC to 99 Spirits, and it includes both English and Japanese versions of the game.

The game stars fan-favorites Saki and Komiya, and adds brand new characters. A story of tragic love and foxes’ games told in visual novel style, the Cage of Night is set during the events of 99 Spirits storyline and is set in a darker mood than the main story.

Additionally, it features six Mini Scenarios with in-between scenes from 99 Spirits that will bring a smile to your face and a Developer Symposium with commentary by TORaIKI, 99 Spirits’ creators to tell you where and how this all started.

99 Spirits – Cage of Night was a successful stretch goal on the 99 Spirits IndieGoGo project.

99 Spirits – Cage of Night is available with a -10% launch discount on Steam

99 Spirits of True PC Gaming

Last weekend had the pleasure to be interviewed by Adam Ames from True PC Gaming.

It ended up a long and fruitful talk, so if you want to read more about our work on 99 Spirits, head on over to http://truepcgaming.com/2013/05/15/trial-and-error-99-spirits-interview/ and give it a read!

logo

We have been sending review copies of 99 Spirits around for the past week or two – if you haven’t gotten one but would like to review the game, just shoot us a message.

Our current status is such that the game is fully in order and we are preparing the gold master to give to our distributors this weekend.

Almost all IndieGoGo goods have also been produced, save for the game discs for the special collector’s edition, which of course will get the release version of the game. We will ship all of them together when they’re ready.

Gather Your Fruitbat Party

Yesterday we had a nice chat with Jake Booth from Gather Your Party dot com. You can read it by following the link below:

http://www.gatheryourparty.com/articles/2013/03/07/interview-with-fruitbat-factory/

We would like to thank Jake for this fun interview, and we hope you’ll enjoy reading it.

OH! By the way, we are at 85% on the 99 Spirits’ IndieGoGo campaign. It’s so good to see more people pledging everyday. Thank you!

Cutest character ever

Cutest character ever

Here’s a sketch from the 99 Spirits artbook we’ll release as part of the campaign. A taste of things to come.

Interview with a Walrus

As we’ve been busy working on 99 Spirits and suddenly realized we haven’t posted anything on the blog this week, today we decided to bring you an interview with one of our own: Tony Blomqvist, the coder, proofreader, infamous walrus lover.

Jakke: Can you tell us a little about yourself, Tony?

Tony: I code stuff and it either works or doesn’t, I like music and anything Jakke doesn’t like.

Jakke: That’s a good start, what about…

Tony: and I believe all monkeys should be set free.

Jakke: Quite so, quite so. Now for the thousand dollar question: what is it you actually do around here, Tony?

Tony: Well, dearest Jakke McFlammy Flemington, a lot of different incoherent things. My main participation is in creating scripts and programs that help Fruitbat Factory’s localization projects, as well as proofreading the text. With War of the Human Tanks, I made the installer and launcher, developed scripts for managing the project’s text files, and edited the game’s source code to improve some text positions and gameplay mechanics.

Jakke: Oh, yeah, I think that rings a bell. What would you say was the hardest aspect in working on War of the Human Tanks?

Tony: Studying the game’s code with no prior C/C++ experience! As someone who has only recently started programming (mainly with Python), there was a lot to learn. The engine War of the Human Tanks runs on, System 4.0, allows games to be coded with C-like abstraction, but it was all new to everyone on the team, and all the documentation, of course, was in Japanese. Though frustratingly difficult at times, it was also a very educational process, and taught me a lot about C and code structuring. When I eventually could comfortably alter the code of bigger segments such as changing pre-battle tank repositioning to work on-the-fly, it felt very rewarding.

Walrus

Jakke: What about your strange, unnatural love for walruses?

Tony: My love for walruses. Now that’s a tough one. I have no idea. I guess the Finnish word for a walrus sounds cute? Yeah.

Oh, there’s that Beatles song about walruses. That’s pretty trippy. Maybe that has affected me too.  Its name is, unsurprisingly, “I am the walrus”. John Lennon wrote the song after he had heard that there’s a study group that likes to analyze the meaning of his lyrics. He made the lyrics totally nonsensical and thought “let the fuckers figure that out”. At least so Wikipedia or some other documentary claimed. That’s my most trusted source, I have to admit I wasn’t there.

Jakke: Thank you very much for the insightful commentary on the state of modern localization work.

Interview with a Fruitbat

So Last Gen, who earlier did a review on War of the Human Tanks by the tile of I love the Smell of Napalm in the Morning asked us for an interview. We had fun answering their questions about the secrets behind the Fruitbats.

For your eyes only: Interview with a Dev: Fruitbat Factory.

Fruitbat Photo

They even published some photos of us, though this one seems a little obstructed.

Also, another stage of the five-chapter “Let’s Play” guide for War of the Human Tanks is now up. This time it might even be helpful!

Where can you find it, you ask?

As usual, the guide can be found at: Chapter 4: ‘Kana Was Awesomely Awesome’