Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/dawnarc/cv

My curriculum vitae
https://github.com/dawnarc/cv

cpp game-logic game-server java lead-programmer online-game ue4 unreal-engine

Last synced: 13 days ago
JSON representation

My curriculum vitae

Awesome Lists containing this project

README

        

# 王爱国(Aiguo Wang)

Male | Single | Dec. 1987 | Birth Place: Yichang, Hubei province | currently live in Hangzhou-China

13 years working experience | non-party personage

mail: [email protected]

### Self-Evaluation

My 13 years working experience include 5 years online game server side development experience, 8 years game client development using Unreal 4.

##### My Blog

https://dawnarc.com/

##### My Zhihu Column (Tutorials of UE4 and TechArt, 8K+ followers)

https://www.zhihu.com/people/dawnarc/columns

##### My Stack Overflow

https://stackoverflow.com/users/1645289/protoss

##### UE4 technical original articles in my old blog

https://blog.csdn.net/wag2765/article/category/8482832

##### My UE4 ANSWERHUB account

https://answers.unrealengine.com/users/62390/dawnarc.html

### Working Experience

##### Wooduan Technology Co., Ltd, | Senior Engine Developer

2022/04 -- until now

Industry category: Online game | Enterprise nature: Private | Scale: 500-1000

Job description:
Working on a shooting game in console using UE4.

##### Hero Games | UE4 Tech Expert

2020/08 -- 2022/02

Industry category: Online game | Enterprise nature: Private | Scale: 1000+

Job description:
Working on next-gen sandbox game using UE4.

##### Original Force | Lead Programmer

2019/12 -- 2020/08(9 months)

Industry category: Animation | Enterprise nature: Private | Scale: 1000+

Job description:
Working on AI project with UE4.

##### Shanghai WindSoul Network Technology Co., LTD | Client-side Lead Programmer

2017/12 -- 2019/08(1 year and 9 months)

Industry category: Online game | Enterprise nature: Private | Scale: 20-99

Job description:
Responsible for the development of a Next-Gen MMORPG mobile game, an open world Action video game and a TPS video game, all using Unreal Engine 4.
I was responsible for the development of core gameplay, underlying architecture, performance optimization and few TechArt work. Instructing subordinates who never used UE4.

##### Suzhou Snail Digital Technology Co., Ltd. | C++ Developer

2016/12 -- 2017/8 (9 months)

Industry category: Online game | Enterprise nature: Private | Scale: 2000+

Job description:
Developing a sandbox PC game with workmates with UnrealEngine4. This project is based on the source of ARK.

##### Indie Game Development by myself | Game Designer & Developer

2015/08 -- 2016/10 (14 months)

Industry category: Indie game

Job description:
Developing a RTS online game with UnrealEngine4 independently. Responsible for all programming of client-side and server-side, and also made a particle like “Arcane Missiles”. Involved in designing gameplay and art.

##### Shanghai TheBingo Information Technology Co., LTD | CTO

2012/11 -- 2015/08 (2 years and 10 months)

Industry category: Online game | Enterprise nature: Private | Scale: 20-99

Job description:
Responsible for the development of server side infrastructures, games core logic as well as client’s network of the whole company. Control and guide company’s technical direction, along with interns coaching and mentoring.

##### Shanghai Dream2 Network Technology Co., LTD | Server-side Lead programmer

2010/12 -- 2012/11 (2 years)

Industry category: Online game | Enterprise nature: Private | Scale: 100-499

Job description:
Mainly responsible for Pockie Ninja server side engine maintenance and extension as well as game logic development

##### VanceInfo (Nanjing) Software Technology Co., LTD | Research and Development Department | R&D Engineer

2010/03 -- 2010/08 (6 months)

Industry category: Computer software | Enterprise nature: Listed company | Scale: over 10000

Job description:
Participate in Vodafone telecom and Singapore telecom system development

### Resume

#### Training experience



Time
Institution Training
Content




2017.01 - 2017.09
3D Concept Design of Mo Xingzhi Art
Process Models and Next-Generation


2010/08 - 2010/12
Shanghai Lingxun Education
C++ (network, MFC)


2008/08 - 2010/02
Aptech-Yichang authorized training center
JavaEE and .NET enterprise development



#### Working experience



Company
Time
Project
Technology




Wooduan Technology
2022/04 -- until now
A console shooting game
UnrealEngine4


Hero Games
2020/08 -- 2022/02
A next-gen sandbox game
UnrealEngine4


Original Force
2019/12 - 2020/08
Digital Human (for an AI project)
UnrealEngine4


Shanghai WindSoul Network Technology Co., LTD
2017/12 - 2019/08
Multiple UE4 games
UnrealEngine4 + KBEngine + protobuf + MySQL


Suzhou Snail Digital Technology Co., Ltd.
2016/12 - 2017/08
ARK online game
UnrealEngine4


Indie game development by myself
2015/08 - 2016/10
RTS online game
UnrealEngine4 + libuv + protobuf + boost


Shanghai TheBingo Information Technology Co., LTD
2014/05 - 2015/08
Spinal Breakers server side
JavaSE7.0 + libuv + protobuf + MySQL


2012/11 - 2014/04
Cute Warrior server side
JavaSE7.0 + libuv + protobuf + MySQL


Shanghai Dream2 Network Technology Co., LTD
2012/07 - 2012/11
Warblade server
ACE+boost+protobuf+SqlLite+MySQL+Python


2010/12 - 2012/06
Pockie Ninja server
JavaSE6.0 + IOCP + MySQL


VanceInfo (Nanjing) Software Technology Co., LTD
2010/03 - 2010/08
eReader System
GXT2.0 + BME(Huawei) + Oracle11g



#### Project description (from present to past)

##### Console shooting game

My works include: procedural animation (faking physics cloth simulation), houdini destruction workflow (include runtime physics simulation & vertex aimation) with Unreal 4.

##### A next-gen sandbox game

I'm responsible for landscape procedural generation prototyping using Houdini, dedicated server optimization of UE4, stress testing tool for UE4 server, assets checking and analysing tool for artists, UE4 based scalability system that used for graphic quality settings.

##### Digital Human (for an AI project)

The work I'm responsible for includes the following: Refactoring the old animation system that converted blueprint scripts of animation system to C++ source;
developing animation tool for offline animation rendering that used for seamless animation blending and cutting; developing interfaces which used in UE4 that used for real-time animation of muscle simulation;

##### Multiple UE4 games

programming language is C++, Blueprint are less used.

Core gameplay I developed independently includes: ARPG Battle System, RTS movement AI, Climbing System which likes `Breath of the Wild`, highly customized API for camera transforming, Customized Joystick System(using HUD, not UMG) which likes `Srike of Kings`, Run-time Face Making System and so on.

Underlying architecture I developed independently includes: Assets Manager(Loading, Memory Persistence and Unloading for both single asset and batch assets), Uniform Interface for UMG operation (Loading UMG Blueprint, Widget Open, Close and Caching), Network layer for TCP handling, Replication using UE4 Dedicated Server .Instructing subordinate to develop a tool to transform Excel to protobuf generated cpp sources and Serialization Data for protobuf.

performance optimization work I’m independently responsible includes: performance for Large Scale Scene, include Lighting, Material, Shadow, Foliage, Animation, Gameplay and so on.

TechArt work I’m independently responsible includes: Dynamic Sky Sphere (Frame rate improved from 7 FPS to 30 FPS on Qualcomm Snapdragon 835 after optimization). Fog of War which likes `Sekiro: Shadows Die Twice`(using run-time Post Process Settings). Instructing subordinate to develop Interactive Foliage System (millions Instanced Mesh optimized) which includes propagation of flame, grass cutting half. And so on.

I was also responsible for a customized Third-Person Shooting project for Shanghai Branch Office of Improbable, I have resolved some issues independently, includes: issues of linking SpaitalOS’s libraries on Android, two UE4 bugs I have fixed: C++11 features not support fully when building Android package using Clang, OpenSSL API in new version not support on Android.

##### ARK online game

programming language are C++ and Blueprint.

This project is based on , and we do some works for inculturation in China. The game engine is UnrealEngine4.

##### RTS online game

programming language is C++, consider the performance on mobile devices, didn’t use Blueprint.

I had researched Unity3D for 2 months in the beginning, but I found that the performance and Materials of Unity is not perfect, then I start to learn UnrealEngine4. Beside the development of programming, I also learned and made few Particles with UE4, most Particles were bought on Unreal Market. all programming of client-side and server-side were did independently.

The network module of server-side was programmed with libuv, and integrated it with UE4. The network module of client-side was programmed with FSocket of UE4 API. Logic messages were encoded and decoded with protobuf. Version control system was git, and server-side of git was Gitblit. Building tool was cmake.

The works with UE4 that I finished independently include: performance optimization of UE4, e.g. CPU, GPUand memory; the replication of data and communications of TCP network; Multi-thread and synchronization in UE4; Integration in UE4 with C++ frameworks: boost, RekNet, protobuf; development of UI, include UMG, Slate and Canvas; server-side development for MOBA game server which was integrated with UE4 GameThread; programming B star pathfinding algorithm, and combine it with NavMesh of UE4 to achieve special logic; post processing of scene, include: Environment Lighting, Height Fog and so on; Version-to-Version migration of Android, include: Integration of protobuf-lite and UE4 in NDK mode.


##### Spinal Breakers online game server side

Network module was programmed with C++, other modules were programmed with Java.

Spinal Breakers’s server side architecture is basically the same as Cute Warrior. But it optimizes server side development tools, and modifies the previous constructive mechanism. Specifically, the new project uses maven instead of ant in the previous projects. Integration environment uses Jenkins. As the project's client logic all adopts the lua script to develop, and google official does not provide protobuf’s lua version to support, so the client communication protocol uses a third party open source framework of protobuf: protoc-gen-lua.


##### Cute Warrior online game server side

Network module was programmed with C++, other modules were programmed with Java.

The program architecture of this project is similar to that of Pockie Ninja server, which includes connection server, game logic server, public data server, central data server, DB server. It adopts distributed architecture.

The network communication layer uses node.js underlying library libuv, so that the server side would support cross-platform. During the development, when I committed a bug in github for libuv, it was closed for no reason. But there is a serious point to the problem.

The logical layer uses Java, as well as script. Compile these “scripts” at project initiation time through own tool interface of jdk, then manual load class file to the virtual machine. In that case, original JavaScript is replaced to improve the script performance. The logic layer and communication layer use JNI interface. The game can also be divided into multiple scene and a process can support multiple scene. A scene with large load pressure can adopt distributed processing through a process divided into a scene.

In contrast with network module of Warblade online game server-side, all dynamic memory allocation are pooled: according to PCU limitation configuration, allocating a large memory on server startup, all these memory don't need to destroy after using. It trades memory for time, and decreased CPU usage obviously, this is the key factor to implement thousands PCU load.


##### Warblade online game server side

Programmed with C++ and python.

The project includes gateway server, game logic server, cache server and database server, and uses distributed architecture. The network layer uses ACE framework, cache uses sqllite, database uses mysql, communication protocol uses google’s protobuf, script uses python (achieve C++ interface interaction through the support provided by boost).

Within the game, every scene is a single process. UDP communication protocol is adopted among these processes to enhance the efficiency of network communication. Data formats in the game uses coded format provided by protobuf. When parse role data, directly decode these protobuf binary data as protobuf custom objects. When store role data, write to the hard drive through sqllite first, then store in mysql database at regular time. I participated in the development of server side underlying architecture and part of the game logic, as well as a small amount of client logic such as mall system.


##### Pockie Ninja online game server

Network module was programmed with C++, other modules were programmed with Java.

Pockie Ninja project includes connection server, game logic server, public data server, data center server and DB server, and it adopts distributed architecture. Its game server, public data server and central data server can scale under load, break into several services or merger, and deploy each service into physical server separately. Server communication module adopts IOCP. Both middleware and game logic uses Java, and middleware can call communication module through JNI. Game script document adopts JavaScript, which is executed by JDK script engine. And database is all made of the blob data type to reduce the DB maintenance complexity.

I was mainly responsible for the game logic writing and engine maintenance extension in the project. I accomplished SNS system all logics and several large-scale versions such as “Tail beast siege” independently. I also completed related tools development including DB data reader; server merge tool; central data server writing and cross-server battlegrounds system; as well as overseas multinational version support and maintenance.


##### eReader system (Vodafone Telecom baseline version and Singapore Telecom customized version)

Programmed with Java.

The project consists of eleven systems including [Manager (management platform)],[Portal (client interface)],[Server (data access platform)],[CMS (content management platform)],[SDP (billing system)],[Timer (timing processing system)]. There are more than 30 people who participate in development and more than 10 people testing in the core group.

I was mainly responsible for GXT framework secondary encapsulation, Portal system environment establishment, Manager platform products and content online and offline; Timer platform timing billing and loan notification; Portal users’ action tracking, favorites, order; and the whole project requirements analysis, design and coding supported by daylight saving time.

‘Manager’ includes more than 10 modules such as content division management, content management, product management, billing policy management, system account management, readers account management, client software management; ‘Portalapp’ is mainly responsible for handheld devices required authentication, HTTP message validation and business logic; ‘Timer’ performing tasks regularly, such as timing billing and loan notification; Server is responsible for database access. HTTP+XML or SOAP is adopted in different platforms to implement distributed communication.

The deployment environment of this project is SUSE10+Oracle11g, which adopts distributed architecture and uses Agile Development and Hudson Continuous Integration development mode. BME is the company’s internal framework that integrating front end UI, database access and transaction management.