About me

About me

I’m working as an Audio Programmer in Giant Network now, my daily duties are related to the broad spectrum of the game audio development, including consultant for gameplay programming and support for game engine programming. I participate in how to solve the difficult game audio problems from the game client to the low-level engine. And I architect and implement pipeline tools to speed up the audio team’s daily work. Also, I write technical memos and teach internal training courses about computer science, game development, and so on.

I’m here

Technology stack

Computer Science

I’ve been self-taught through different subjects in CS such as algorithm and data structures, computer system architectures, programming languages and so on, by classic textbooks and online courses.

Math

I’ve been self-taught about different mathematical subjects until now since I finished my formal educations. My mathematical knowledge (such as calculus/linear algebra/statistics/discrete math) is sufficient for game development. I’m currently working on more advanced topics like abstract algebra and differential geometry.

Programming Language

  • C++: I’m familiar with C++11 and later standards thoroughly at a practical level, please check my CodeFactor for a brief code quality review.
  • Dart: I learned Dart in order to get some fresh mind wind about the Declarative Programming trend in the mobile app development community. The showcase project is Unboungo website, a toolkit app running on Android and iOS by Flutter framework.
  • C#/Objective-C/Java/JavaScript/Python/Shell script languages and others: I didn’t study these programming languages completely because they are not the preferred choice in my most interested domain, but I would learn them on-the-fly when a certain task needs. For example, I use Python in my Coursera ML website homework and PMovieFestival, Java in InnocenceEngine-Java.

Computer Graphics

  • About API: I started my learning journey of real-time rendering by experimenting on modern OpenGL, and later I adopted to DirectX 11. Now I’ve been familiar with Vulkan and DirectX 12 by working on my own game engine. My only unfamiliar major API is Metal because I don’t have enough time for it.
  • About techniques: I understand the most of the state-of-the-art rendering techniques and implemented some of them (except those which are heavily product-specific or not widely supported by the hardware vendors, for example, hardware-accelerated ray-tracing). My major learning sources are the last decade’s SIGGRAPH and GDC courses, classic textbooks, and those wonderful developers’ personal blogs. Some of my top interests are GI, surface reflectance model, and rendering software architecture.

Game Audio

  • About API: I could work from the front-end (building project in authoring tools, framework design) to the back-end (game engine integration, wrapper API design) of FMOD and Wwise professionally, or craft the custom game audio solution from the platform audio API. In my daily works now I help sound designers, musicians, and programmers to solve any problems they would occur during their game audio implementation.
  • About techniques: My background in the music industry brought me a practical understanding of how to interpret traditional audio tasks. And I’ve learned about how to develop DSP software in the past few years. I’ve been working on a low-level audio framework project Waveless website for a while, by reinventing the wheel from fundamental things like basic FFT algorithm and biquad filter.

Commercial tools and framework

  • Qt: I use it for the editor and tools of my game engine.
  • Unity: Typically I only write the prototype/evaluation/demonstration code for other teams or dive into their audio problems when they need. The most Unity games I’ve worked a little with before are those rapid consumption mobile games for the domestic market from my previous employer.
  • Unreal Engine: Typically I give prototype solutions in C++/Blueprint or UML style things about the audio part for the whole game. I’ve participated in the development circle fully in several released UE4 games, including one VR title ARKPark website which I spent significantly more time than other games.

Other software development skills

  • Version control system: I use Git, Perforce, and SVN daily.
  • IT Operations: I’ve had some part-time IT experience like configuring and deploying PM/VCS tools for colleagues in the audio department.
  • Documentation: I write documents with Markdown and LaTeX at most of the time.
  • UNIX family OS: I have some user and developer experiences on CentOS/Ubuntu/macOS by deploying cross-platform projects and building host servers.
  • Beer and wine: It’s too serious to work in the game industry nowadays, so I trained myself a little to be an alcohol-beverage-oriented programmer.

Projects

  • InnocenceEngine
Screen capture

I have been working on this side project actively for years, more detailed pieces of information are inside the InnocenceEngine website and the Trello website themselves.

  • Music I’ve written and produced lots of Audiomack website music for my own interests in the past few years.
  • Photography I like always keeping amateur in Behance website photography, to maintain the natural inspiration (also because the nice equipment is fairly expensive).

Working experience

2020- Audio Programmer

Giant Interactive Group Co., Ltd.

Game audio development consultant, R&D in the sound propagation simulation for the interactive software.

2016-2020 Technical Sound Designer

Suzhou Snail Digital Technology Co., Ltd.

Full-stack technical support for whole company studios’ game audio development. Specialized on the audio engine integration, in-game audio implementation and general programming optimization.

2015-2016 Audio Engineer

Zhejiang Feifei Film and Television Culture Media Co., Ltd

Film music composing, sound design, live recording and audio editing.

2015 Junior Assistant

Kaibo Music Studio

Recording production, composing and audio editing.

Education

2012-2015 Beijing Midi School of Music

First two years I was in Electric Guitar discipline and the final year I spent more time on the audio engineering field.