Interview with Gwenn Guihal, Author of Yessir (and it runs on Appletv!)
2019.04.03 by COCOS
2D Interviews Cocos2d-x

We want to thank Gwenn Guihal for talking with us about his game YesSir and surprise, it runs on the latest AppleTV!

0. Tell me a bit about yourself and team.

I’m Gwenn Guihal, a French 32 years old iOS developer working at voyages-sncf.com, the main train booking app and website in France. I create games during my free time, mostly in the morning before going to work. YesSir is my first game and I’m currently working on another one.

1. Tell us where you came up with the idea for this game. What were your inspirations?

When I was young, we played all the time as Tank Wars with my brothers on our PC 286. I was really in love with this game. Twenty years later, as I did not find any game on the app store as fun as Tank Wars, I decided to create my own one.


2. What version of cocos2d-x did you use?

I used version 1.2 of cocos2d-x.

3. How did you decide to use cocos2d-x instead of Unity, Unreal Engine or SDL?

First, I was looking for a 2D engine, 3D didn’t interest me. Next, although YesSir is only for iOS today, when I started the project, my goal was to make a cross platform game and in 2012, cocos2d-x was the only one which provided cross platform development with high performances!

4. What features did the engine offer you that made development easy? What do you wish the engine did better?

I appreciated having a low access level at OpenGL for the creation of the terrain by example. A great feature of cocos2d-x which makes life easier is the retain-count pattern implementation. Furthermore, the engine provides a great integration of Box2D and is compatible with other C++ libraries such as math and geometry helpers… Finally I really like that the engine is open-source, I could also make some minor customizations if necessary.

One thing to improve is the “action” syntax, it could be less weird and may be carried by the Node itself.

5. What tools did you use besides the engine?

Tools: Photoshop, Illustrator, Flash for animations, TexturePacker, bmGlyph
IDE : Xcode

6. What 3rd party libraries did you need to use?

Crittercism, Facebook SDK, Flurry, Clipper from Angus Johnson – a polygon clipping library -, Triangulate by John W. Ratcliff

7. Did you create the art yourself? What tools?

I took art inspiration from Limbo, a dark ambiance, only gray levels. On my mind, I thought it would be easier to make graphics only in black and white. I created everything myself but I spent a lot of time on it. I used Illustrator then Photoshop and Flash for animations.

8. Did you create the music yourself? What tools?

My wife produced the game music. She composed then recorded it herself with her cello. I just added some drum on her work.

I used free royalties sounds for FX.

9. Will you continue to make games in the future?

I have been working on a puzzle game for 1 year, dedicated to a larger public. So, of course I will, I do love making games!

10. Do you use SDKBOX? If so, what plugins are you currently using?

I don’t currently use SDKBox, I may use it on my new game for social content sharing and review.

11. Any advice for those also making games on how to get to a release point?

As indie game developer, I suggest to start small and then add features slowly. It’s better to have less features but they must be perfect with no bug, great graphics and amazing animations. When the user starts a game for the first time, he must be impressed by your work.

Don’t hesitate to challenge yourself; make things which seem impossible at first glance, it will make your game unique.

Finally, even if making a game is a long way, never give up and always persevere!

12. Your game runs on the new AppleTV. This is really exciting. Can you talk about how you did this?

In June 2012, I went into the creation of my first game : YesSir, a tank based battle game. I used version 1.2 of cocos2D-x, which supports only OpengL ES 1.1. My first job was to create the generative terrain, knowing it was my first time with OpengL, ever. So, when v2.0 was out, I didn’t want to migrate all my work to OpengL ES 2.0. Furthermore, I made several changes in the engine itself and I was too afraid to find out too much regressions.

Later, my game has successfully passed the iphone 5 launch, then the iphone 6 and 6+ with a few changes in the code. I never needed to update cocos2D-x with the latest version.

Like many developers, I received my 1$ Apple TV Developer Kit in September 2015. Thus, I decided to port YesSir on this new device! Into XCode, I added a new target and a new “TV” macro then ran the project. As you might expect, there were a lot of errors, but 2 hours after, by removing some libs which did not support the Apple TV architecture (metrics, crash analytic, facebook, …) and commenting some code, specially in the audio part of the engine, YesSir launched successfully on the Apple TV! Concerning resources, I used the retina assets of the iphone 5.

The big part of the work was to update the touch user experience by a focus experience: I added a native swipe gesture recognizer on the main window then I updated the engine to propagate these events on the display list. I made some changes in CCMenu class in order to handle focus (almost) automatically : Right now, I just need to define how to place items among each other (below/above; on the right/left from other items). I updated each screen to support focus and to have only one element with focus per screen. Finally, I had to make some graphics adjustments because contrasts and colors on TV don’t have the same quality than an iphone or an ipad.

To summarize, I have worked on the port for 6 months, about 1 or 2 hours per day. Plus the port, I added a local multiplayer mode. YesSir is a little game, it was quite easy to adapt it on the TV, even with the v1.2 of the engine.

You can download YesSiron the App Store and watch the trailer!