SlideShare a Scribd company logo
1 of 48
UGC In Game:
A Brief History And
How We Bring It To Mobile
Name Zhuo Yue
Job Title Senior Engineer
Company Tencent
What does UGC mean in video games?
From wiki:
...Video games can have fan-made content in the form of mods, fan
patches, fan translations or server emulators. Some games come
with level editor programs to aid in their creation. A few massively
multiplayer online role-playing games ... have UGC systems integrated
into the game itself. A metaverse can be a user-generated world...
User-generated content
Castle Smurfenstein
(Modified Castle Wolfenstein)
Year: 1981(Original Game) / 1983(Mod)
Modified graphics and sound effects
1981 : Castle
Wolfenstein
Doom
1981 : Castle
Wolfenstein
1993 :
Doom
Year: 1993
★First commercial game to
provide user-friendly modding
support/tools
★WAD files! (Media assets
separated from game engine)
Inspired by Wolfenstein 3D
(1992) mods
Doom : WAD file
1981 : Castle
Wolfenstein
1993 :
Doom
Where's All the Data?
Pros
• An important step to make modding easier!
• Level structures, Graphics, SFX, Music...
• IWAD(base) and PWAD(patch)
• Easy to share
• Open and extendable data lump structure (like data chunks)
• Lots of third-party editors!
Cons
• Only one IWAD & PWAD can be loaded at a time
• No behaviors...(had to patch game exe)
Media assets separated
from game engine
Doom : Editors
1981 : Castle
Wolfenstein
1993 :
Doom
• DEU: Abilities to modify WAD files
• DeHackEd: Abilities to modify
gameplay datas(by hacking exe binary)
• However logic (e.g. enemy AI) can't be
modified
Quake
1981 : Castle
Wolfenstein
1993 :
Doom
• Year: 1996(Quake) / 1998(Quake II)
• Evolutionary 3D engine
• WAD / BSP / PAK files
• Quake Introduced QuakeC as scripting
language(which was replaced by DLL subsystem in Quake II)
• Level editors
• Console alias
• Built-in demo record functionality
1996 :
Quake
QuakeC Language & DLL Sub System
1981 : Castle
Wolfenstein
1993 :
Doom
1996 :
Quake
QuakeC
• Interpreted language based on C syntax
• Ability to control much of the game
logic
• Weapons
• Enemy AIs
• Triggers
• Game rules
• ...
• Officially released qcc compiler
(with source code)
DLL Sub System (Quake II)
• Pre-compiled C/C++ DLLs to be
loaded by the game
• Used by Quake II and later games
• Can do EVERYTHING
• Much faster
• Less secure
• Source code released in 2001
Demos & Machinima (“Quake Movies”)
1981 : Castle
Wolfenstein
1993 :
Doom
1996 :
Quake
• Doom introduced (simple) demo recording functionality, Quake inherited and
enhanced this feature.
• Demos could be shared to the community (in .DEM files)
• Speedruns
• Deathmatches
• In 1996, the Rangers released the first “quake movie” - Diary of a Camper
• Featuring not only deathmatch, but a simple story, with dialogs in form of chat text
• Greatly inspired the whole community
• The name Machinima was created in 1998, and gradually became well-known
UGC goes beyond mods
(Mechanical + Cinema)
Half-Life & Counter-Strike
• Year: 1998(Half-Life) / 1999(CS Mod) / 2000(Valve CS Release)
• Counter Strike first released as a mod of Half-Life, then became one
of the Valve games
• “Open Development” - Mods of mods
• Maps
• Bots
• Server Plugins
• Game Modes
• Based on a heavy-modified Quake engine.
• Half-Life SDK
• Team Fortress / Day of Defeat
1998 :
Half-Life
1981 : Castle
Wolfenstein
1993 :
Doom
1996 :
Quake
Modding made easy
• Has official support for mods
• Doom / Quake Series
• Fallout / Elder Scrolls Series
• Call of Duty Series
• StarCraft / WarCraft Series
• Has unofficial support for mods
• Grand Theft Auto Series
1981 : Castle
Wolfenstein
1993 :
Doom
1996 :
Quake
1998 :
Half-Life
Steam Workshop
• Year: 2003(Steam Official Release) / 2011 (Workshop)
• Steam all-in-one service for distributing videogame official
add-ons and user-generated content
• Favored by independent game creators, mod creators and
players
• Easy to share & subscribe
• Search, category, ranking and comment services
• Compatibility check
2011 :
Steam
Workshop
1981 : Castle
Wolfenstein
1993 :
Doom
1996 :
Quake
1998 :
Half-Life
Minecraft
• Year: 2011
• A new type of sandbox game
• The game itself is a mix of map editor experience and survial RPG
elements
• Redstone & Command Block -> Customizable game logic
• Very large UGC community
• Mods
• Custom servers
• Builder teams
• Game record / live streaming videos
• No offcial mod support at first
But Minecraft (Java edition) is easy to modify
2011 :
Minecraft
1981 : Castle
Wolfenstein
1993 :
Doom
1996 :
Quake
1998 :
Half-Life
• Forge API
• OptiFine
• Server Plugins
2011:
SteamWorkshop
Minecraft-like games
• Voxel-based (3D) or tile-based (2D)
• Procedurally generated worlds
• Free building as core gameplay element
• Highly customizable
• Fun to create
• Easy to be shared as snapshots or videos
2011 :
Minecraft
1981 : Castle
Wolfenstein
1993 :
Doom
1996 :
Quake
1998 :
Half-Life
2011:
SteamWorkshop
Game Creation Platform/Games
• Roblox / Super Mario Maker / Garry’s Mod
• Game = player + editor + official assets + sharing platform +
BBS
?
1981 : Castle
Wolfenstein
1993 :
Doom
1996 :
Quake
1998 :
Half-Life
2011:
SteamWorkshop
2011:
Minecraft
User-generated contents
?
1981 : Castle
Wolfenstein
1993 :
Doom
1996 :
Quake
1998 :
Half-Life
2011:
SteamWorkshop
2011:
Minecraft
Texture
3D Model
Sound
&
Music
Level
(Map)
Item
Data
Enemy
Data
PowerUp
Data
Skill
Data
Crafting
Recipe
Enemy
AI
Trigger
&
Event
Game
Rule Item
Behavior
Text
&
Dialog
Custom
UI
Logic
Machinima
Fan Arts Demos Story
Live
Streaming
Game Guide
&
Walkthrough
Visual
Effect
What game/engine can do to support UGCs
Easier to use
More extendable
Level/Map Editor
Asset Editor
Gameplay Data Editor
Trigger System
Script System
SDK
Open Source
Demo Record & EditVideo Record
Live Streaming
Editor Studio / IDE
In-game UGC sharing platform / marketShare-to-SNS
Requires Asset Pack and/or Add-on System
● Appearance
●Gameplay Data
●Logic
●Game experience
●Platform
What about mobile games?
• Modding:
• Most mobile games don’t come with official mod support
• Android APK could be easily modified by third-party
(not so easy on iOS)
• User-generated content
• Some strategy games features user-created levels (e.g. CoC)
• Voxel/tile based sandbox games (e.g. Minecraft/Terraria)
• Mobile edition of game creation platforms – play only(e.g. Roblox)
• Logic editing is difficult
• Game experience sharing is easy on all mobile games
UGC in LEGO®️CUBE
• Voxel-based sandbox game
• Full mobile-functional game creation platform
How did we do that?
Appearance customization
Gameplay data customization
Logic customization
Game experience sharing
UGC
First of all...a mod pack system
Internal (non-customizable)
Base (customizable)
Bricks Items Monsters Effects
Mod Pak 1
Bricks Items
Monsters
Mod Pak 2
Items Effects
... ...
Mod Pak 3
First of all...a mod pack system
Internal (non-customizable)
Base (customizable)
Bricks Items Monsters Effects
User Map 1
Bricks Items
Monsters
User Map 2
Items Effects
... ...
User Map 3
User-created maps in LEGO®️CUBE
User Map 1
User Map 2 User Map 3
References between elements
Internal (non-customizable)
Base (customizable)
Bricks Items Monsters Effects
User Map 1
Bricks Items
Monsters
User Map 2
Items Effects
... ...
User Map 3
Customizable elements
Base Bricks
Brick 01
Mod Pak 1 Bricks
Brick 02 Brick 03
Brick 01 Brick 02 (Clone)
Each element has
its unique GUID
Customizable elements
Base Bricks
Brick 01
Mod Pak 1 Bricks
Brick 02 Brick 03
Brick 01 Brick 02 (Clone)Reference
Look for GUID
Data Manager
Customizable elements
Base Bricks
Brick 01
Mod Pak 1 Bricks
Brick 02 Brick 03
Brick 01 Brick 02 (Clone)
Override : same GUID
(‘Brick 01’ from Base
Bricks is hidden)
Customizable elements
Base Bricks
Brick 01
Mod Pak 1 Bricks
Brick 02 Brick 03
Brick 01 Brick 02 (Clone)
Clone : new GUID is
generated for newly
cloned element
Brick 02 & Brick 02
(Clone) both visible
Mod pack content in LEGO®️CUBE
Mod Pak Sharing Platform
Internal (non-customizable)
Base (customizable)
Bricks Items Monsters Effects
Mod Pak 1
Bricks Items
Monsters
Mod Pak 2
Items Effects
... ...
Mod Pak 3
Market
Server
• User Map (Mod Pak) is shared as a whole
• Compressed
• Identified by GUID
• References well reserved
• Simple version control
(update only)
• Author info
• Tags & descriptions
• Ranking & comments
Download
(Update)
Data edit framework
• One solution for editing multiple types of hierarchical structure data
(Map Config, Brick, Item, Monster ...)
• User friendly for mobile devices
• Program generated UI
• Tabbed or wizard style
• Dynamic hide or show UI elements
• Can handle references as well as instances
• Data validation
• Automatic serialization / deserialization
Data edit framework
Map config dialog (wizard style) Monster config dialog (tabbed)
Hierarchical editing
How to do that
• The solution is a bit like Unity’s inspector system
• Uses C# reflection
How to do that
• Different widget types
• No more UI work
Check button
Slider
Reference link
Voxel-based sandbox game
• Building (map editing) is part of the game
• Customizable random world generation
Performance problem on mobile devices
• Server simply can’t afford to run world generation for every player
(millions!)
• Clients are short in memory and CPU
• Want to support 20+ players in a single room for every one on every
device
• ... How to?
Distribute the load to every client
• Logic update
• Every active section of the map has an owner player designated
by server
• The owner do the logic updates (mostly monster AIs)
• Map update
• World generation is performed on every (according to view)
• Server only holds modified voxel data
• Combat & crafting
• For safety reasons, server controls the skill and item system
Enhance the building part
• Creative mode (infinite building materials)
• Section edit tools (copy, erase, move)
Game logic customization
DLL
Script
Code
• Can we create an interesting map without the use of PC?
• To control as many things as possible
Not supported
by mobile devices
Too difficult to type
on touch screen
What have we tried to bring to mobile...
Some node based scripting system
What have we tried to bring to mobile...
Some sequence circuit simulator
Input
A Button
B Button
Press Sensor
Output
And
OutIn #1
In #2
Door
Open
Close
Trigger System
• Event - Condition – Action simple enough!
When any player dies
If the player is in team #1
Respawn him on the spawn point
Event/Condition/Action Library
• Arranged in categories (all localized)
• Game
• Player
• Team
• Monster
• Item
• Environment
• Dialog
• Variable
• ...
Function & Variable
• Functions are
folded/expanded vertically
• Maximize screen usage
• Hide unnecessary detail
• Parameter can be reference to variable or
position/area/monster placed in the world
Handle multiplayer games
• Like other logic, triggers are executed distributly
• One player only knows about what’s inside his view range
• When an event is triggered, only one player(client) is chosen to check all the
conditions (for example
• PlayerMoveEvent : the player who moved
• MonsterDieEvent : the owner of the monster
• TimerEvent : the room host
• Once all the conditions are satisfied, the chosen player(client) broadcasts the
event context to all players (himself included)
• Trigger actions are then executed on every client with the same input
Sharing game experiences
• Plugins are available to
• Share snapshots to QQ / WeChat
• Invite your friends from QQ / WeChat
• Video recording on Android / iOS
• Storytelling could be done with the help of Trigger System
Q & A
Thanks
for
listenin
g

More Related Content

What's hot

Game development
Game developmentGame development
Game developmentRareCoders
 
Game development pipeline
Game development pipelineGame development pipeline
Game development pipelineGAME Studios
 
Introduction to Unity3D Game Engine
Introduction to Unity3D Game EngineIntroduction to Unity3D Game Engine
Introduction to Unity3D Game EngineMohsen Mirhoseini
 
Game development
Game developmentGame development
Game developmentreittes
 
A Brief Guide to Game Engines
A Brief Guide to Game EnginesA Brief Guide to Game Engines
A Brief Guide to Game EnginesDavid Parsons
 
Roles in the gaming industry
Roles in the gaming industryRoles in the gaming industry
Roles in the gaming industrymissstevenson01
 
1-Introduction (Game Design and Development)
1-Introduction (Game Design and Development)1-Introduction (Game Design and Development)
1-Introduction (Game Design and Development)Hafiz Ammar Siddiqui
 
Game Development Company, Flash Game Development,
Game Development Company, Flash Game Development,Game Development Company, Flash Game Development,
Game Development Company, Flash Game Development,Gateway Technolabs
 
Unity 2D game development
Unity 2D game developmentUnity 2D game development
Unity 2D game developmentThe NineHertz
 
Game Design Document - Step by Step Guide
Game Design Document - Step by Step GuideGame Design Document - Step by Step Guide
Game Design Document - Step by Step GuideDevBatch Inc.
 
Introduction to game development
Introduction to game developmentIntroduction to game development
Introduction to game developmentGaetano Bonofiglio
 
Why Live Ops Matters for Casual Games: 3 Stategic Mindset for POs
Why Live Ops Matters for Casual Games: 3 Stategic Mindset for POsWhy Live Ops Matters for Casual Games: 3 Stategic Mindset for POs
Why Live Ops Matters for Casual Games: 3 Stategic Mindset for POsTimShepherd83
 
Game Development with Unity
Game Development with UnityGame Development with Unity
Game Development with Unitydavidluzgouveia
 
2-Game Design (Game Design and Development)
2-Game Design (Game Design and Development)2-Game Design (Game Design and Development)
2-Game Design (Game Design and Development)Hafiz Ammar Siddiqui
 
Game Development Step by Step
Game Development Step by StepGame Development Step by Step
Game Development Step by StepBayu Sembada
 
Unreal Engine (For Creating Games) Presentation
Unreal Engine (For Creating Games) PresentationUnreal Engine (For Creating Games) Presentation
Unreal Engine (For Creating Games) PresentationNitin Sharma
 
Game design through the eyes of gaming history
Game design through the eyes of gaming historyGame design through the eyes of gaming history
Game design through the eyes of gaming historyDori Adar
 
Game genres
Game genresGame genres
Game genresaealey
 

What's hot (20)

Game development
Game developmentGame development
Game development
 
Game development pipeline
Game development pipelineGame development pipeline
Game development pipeline
 
Introduction to Unity3D Game Engine
Introduction to Unity3D Game EngineIntroduction to Unity3D Game Engine
Introduction to Unity3D Game Engine
 
Game Design Process
Game Design ProcessGame Design Process
Game Design Process
 
Game development
Game developmentGame development
Game development
 
A Brief Guide to Game Engines
A Brief Guide to Game EnginesA Brief Guide to Game Engines
A Brief Guide to Game Engines
 
Roles in the gaming industry
Roles in the gaming industryRoles in the gaming industry
Roles in the gaming industry
 
1-Introduction (Game Design and Development)
1-Introduction (Game Design and Development)1-Introduction (Game Design and Development)
1-Introduction (Game Design and Development)
 
Game Development Company, Flash Game Development,
Game Development Company, Flash Game Development,Game Development Company, Flash Game Development,
Game Development Company, Flash Game Development,
 
Unity 2D game development
Unity 2D game developmentUnity 2D game development
Unity 2D game development
 
Game Design Document - Step by Step Guide
Game Design Document - Step by Step GuideGame Design Document - Step by Step Guide
Game Design Document - Step by Step Guide
 
Introduction to game development
Introduction to game developmentIntroduction to game development
Introduction to game development
 
Why Live Ops Matters for Casual Games: 3 Stategic Mindset for POs
Why Live Ops Matters for Casual Games: 3 Stategic Mindset for POsWhy Live Ops Matters for Casual Games: 3 Stategic Mindset for POs
Why Live Ops Matters for Casual Games: 3 Stategic Mindset for POs
 
Game Development with Unity
Game Development with UnityGame Development with Unity
Game Development with Unity
 
2-Game Design (Game Design and Development)
2-Game Design (Game Design and Development)2-Game Design (Game Design and Development)
2-Game Design (Game Design and Development)
 
Game Development Step by Step
Game Development Step by StepGame Development Step by Step
Game Development Step by Step
 
Unreal Engine (For Creating Games) Presentation
Unreal Engine (For Creating Games) PresentationUnreal Engine (For Creating Games) Presentation
Unreal Engine (For Creating Games) Presentation
 
Game design through the eyes of gaming history
Game design through the eyes of gaming historyGame design through the eyes of gaming history
Game design through the eyes of gaming history
 
Game genres
Game genresGame genres
Game genres
 
Introduction to Game Design
Introduction to Game DesignIntroduction to Game Design
Introduction to Game Design
 

Similar to UGC In Game : A Brief History and How We Bring It To Mobile | Zhuo Yue

Confrontation Pipeline and SCons
Confrontation Pipeline and SConsConfrontation Pipeline and SCons
Confrontation Pipeline and SConsslantsixgames
 
Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...
Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...
Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...gamifi.cc
 
Delta Engine @ CeBit 2011
Delta Engine @ CeBit 2011Delta Engine @ CeBit 2011
Delta Engine @ CeBit 2011Karsten Wysk
 
PRESENTATION ON Game Engine
PRESENTATION ON Game EnginePRESENTATION ON Game Engine
PRESENTATION ON Game EngineDiksha Bhargava
 
Lecture 1 Introduction to VR Programming
Lecture 1 Introduction to VR ProgrammingLecture 1 Introduction to VR Programming
Lecture 1 Introduction to VR ProgrammingKobkrit Viriyayudhakorn
 
Game development -session on unity 3d
Game development -session on unity 3d Game development -session on unity 3d
Game development -session on unity 3d Muhammad Maaz Irfan
 
Hackersuli Minecraft hackeles kezdoknek
Hackersuli Minecraft hackeles kezdoknekHackersuli Minecraft hackeles kezdoknek
Hackersuli Minecraft hackeles kezdoknekhackersuli
 
Computer Games Development Chapter 7
Computer Games Development Chapter 7Computer Games Development Chapter 7
Computer Games Development Chapter 7Umair Shafique
 
Multiplayer RogueLike Game for the Commodore 64
Multiplayer RogueLike Game for the Commodore 64Multiplayer RogueLike Game for the Commodore 64
Multiplayer RogueLike Game for the Commodore 64Leif Bloomquist
 
AAA 3D GRAPHICS ON THE WEB WITH REACTJS + BABYLONJS + UNITY3D by Denis Radin ...
AAA 3D GRAPHICS ON THE WEB WITH REACTJS + BABYLONJS + UNITY3D by Denis Radin ...AAA 3D GRAPHICS ON THE WEB WITH REACTJS + BABYLONJS + UNITY3D by Denis Radin ...
AAA 3D GRAPHICS ON THE WEB WITH REACTJS + BABYLONJS + UNITY3D by Denis Radin ...DevClub_lv
 
JS Fest 2019. Денис Радин. AAA 3D графика в Web с ReactJS, BabylonJS и Unity3D
JS Fest 2019. Денис Радин. AAA 3D графика в Web с ReactJS, BabylonJS и Unity3DJS Fest 2019. Денис Радин. AAA 3D графика в Web с ReactJS, BabylonJS и Unity3D
JS Fest 2019. Денис Радин. AAA 3D графика в Web с ReactJS, BabylonJS и Unity3DJSFestUA
 
game development
game  developmentgame  development
game developmentumair khan
 
GDC 2015 でのハイエンドグラフィックス
GDC 2015 でのハイエンドグラフィックスGDC 2015 でのハイエンドグラフィックス
GDC 2015 でのハイエンドグラフィックスTakashi Imagire
 
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...Unity Technologies
 
Cross-platform Game Dev w/ CocosSharp
Cross-platform Game Dev w/ CocosSharpCross-platform Game Dev w/ CocosSharp
Cross-platform Game Dev w/ CocosSharpAlexey Strakh
 

Similar to UGC In Game : A Brief History and How We Bring It To Mobile | Zhuo Yue (20)

Confrontation Pipeline and SCons
Confrontation Pipeline and SConsConfrontation Pipeline and SCons
Confrontation Pipeline and SCons
 
Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...
Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...
Developing applications and games in Unity engine - Matej Jariabka, Rudolf Ka...
 
Delta Engine @ CeBit 2011
Delta Engine @ CeBit 2011Delta Engine @ CeBit 2011
Delta Engine @ CeBit 2011
 
PRESENTATION ON Game Engine
PRESENTATION ON Game EnginePRESENTATION ON Game Engine
PRESENTATION ON Game Engine
 
Lecture 1 Introduction to VR Programming
Lecture 1 Introduction to VR ProgrammingLecture 1 Introduction to VR Programming
Lecture 1 Introduction to VR Programming
 
XNAPresentation
XNAPresentationXNAPresentation
XNAPresentation
 
Game development -session on unity 3d
Game development -session on unity 3d Game development -session on unity 3d
Game development -session on unity 3d
 
Hackersuli Minecraft hackeles kezdoknek
Hackersuli Minecraft hackeles kezdoknekHackersuli Minecraft hackeles kezdoknek
Hackersuli Minecraft hackeles kezdoknek
 
Cocos2d game programming 2
Cocos2d game programming 2Cocos2d game programming 2
Cocos2d game programming 2
 
Cocos2d programming
Cocos2d programmingCocos2d programming
Cocos2d programming
 
Jan Kavan, CBE software s.r.o.
Jan Kavan, CBE software s.r.o.	Jan Kavan, CBE software s.r.o.
Jan Kavan, CBE software s.r.o.
 
Computer Games Development Chapter 7
Computer Games Development Chapter 7Computer Games Development Chapter 7
Computer Games Development Chapter 7
 
Multiplayer RogueLike Game for the Commodore 64
Multiplayer RogueLike Game for the Commodore 64Multiplayer RogueLike Game for the Commodore 64
Multiplayer RogueLike Game for the Commodore 64
 
AAA 3D GRAPHICS ON THE WEB WITH REACTJS + BABYLONJS + UNITY3D by Denis Radin ...
AAA 3D GRAPHICS ON THE WEB WITH REACTJS + BABYLONJS + UNITY3D by Denis Radin ...AAA 3D GRAPHICS ON THE WEB WITH REACTJS + BABYLONJS + UNITY3D by Denis Radin ...
AAA 3D GRAPHICS ON THE WEB WITH REACTJS + BABYLONJS + UNITY3D by Denis Radin ...
 
JS Fest 2019. Денис Радин. AAA 3D графика в Web с ReactJS, BabylonJS и Unity3D
JS Fest 2019. Денис Радин. AAA 3D графика в Web с ReactJS, BabylonJS и Unity3DJS Fest 2019. Денис Радин. AAA 3D графика в Web с ReactJS, BabylonJS и Unity3D
JS Fest 2019. Денис Радин. AAA 3D графика в Web с ReactJS, BabylonJS и Unity3D
 
game development
game  developmentgame  development
game development
 
GDC 2015 でのハイエンドグラフィックス
GDC 2015 でのハイエンドグラフィックスGDC 2015 でのハイエンドグラフィックス
GDC 2015 でのハイエンドグラフィックス
 
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...
Developing and optimizing a procedural game: The Elder Scrolls Blades- Unite ...
 
Cross-platform Game Dev w/ CocosSharp
Cross-platform Game Dev w/ CocosSharpCross-platform Game Dev w/ CocosSharp
Cross-platform Game Dev w/ CocosSharp
 
Mono
MonoMono
Mono
 

More from Jessica Tams

You Only Pitch Once – Getting Game Pitches Right The First Time | Gregan Dunn
You Only Pitch Once – Getting Game Pitches Right The First Time | Gregan DunnYou Only Pitch Once – Getting Game Pitches Right The First Time | Gregan Dunn
You Only Pitch Once – Getting Game Pitches Right The First Time | Gregan DunnJessica Tams
 
Insights You Need to Win in Mobile Gaming | Herman Lee
Insights You Need to Win in Mobile Gaming | Herman LeeInsights You Need to Win in Mobile Gaming | Herman Lee
Insights You Need to Win in Mobile Gaming | Herman LeeJessica Tams
 
Zero to 60: Building A Successful Games Studio Within A Hollywood Media Compa...
Zero to 60: Building A Successful Games Studio Within A Hollywood Media Compa...Zero to 60: Building A Successful Games Studio Within A Hollywood Media Compa...
Zero to 60: Building A Successful Games Studio Within A Hollywood Media Compa...Jessica Tams
 
Succeeding in the Maturing Mobile Gaming Market | Tuyen Nguyen, Owen O’Donoghue
Succeeding in the Maturing Mobile Gaming Market | Tuyen Nguyen, Owen O’DonoghueSucceeding in the Maturing Mobile Gaming Market | Tuyen Nguyen, Owen O’Donoghue
Succeeding in the Maturing Mobile Gaming Market | Tuyen Nguyen, Owen O’DonoghueJessica Tams
 
Staying on Top of Your Game: Engaging and Converting Players in an Evolving L...
Staying on Top of Your Game: Engaging and Converting Players in an Evolving L...Staying on Top of Your Game: Engaging and Converting Players in an Evolving L...
Staying on Top of Your Game: Engaging and Converting Players in an Evolving L...Jessica Tams
 
Improving LTV with Personalized Live Ops Offers: Hill Climb Racing 2 Case Stu...
Improving LTV with Personalized Live Ops Offers: Hill Climb Racing 2 Case Stu...Improving LTV with Personalized Live Ops Offers: Hill Climb Racing 2 Case Stu...
Improving LTV with Personalized Live Ops Offers: Hill Climb Racing 2 Case Stu...Jessica Tams
 
The rise of the regulators | Paul Gardner
The rise of the regulators | Paul GardnerThe rise of the regulators | Paul Gardner
The rise of the regulators | Paul GardnerJessica Tams
 
Why the Games Industry Needs Initiatives Like Putting The G Into Gaming | Liz...
Why the Games Industry Needs Initiatives Like Putting The G Into Gaming | Liz...Why the Games Industry Needs Initiatives Like Putting The G Into Gaming | Liz...
Why the Games Industry Needs Initiatives Like Putting The G Into Gaming | Liz...Jessica Tams
 
Epic Team Principles | Roman Zorin
Epic Team Principles | Roman ZorinEpic Team Principles | Roman Zorin
Epic Team Principles | Roman ZorinJessica Tams
 
10 Years of Angry Birds | Stephen Porter
10 Years of Angry Birds | Stephen Porter10 Years of Angry Birds | Stephen Porter
10 Years of Angry Birds | Stephen PorterJessica Tams
 
Game Changers: Three Business Disruptions Upon Us | Eric Goldberg
Game Changers: Three Business Disruptions Upon Us | Eric GoldbergGame Changers: Three Business Disruptions Upon Us | Eric Goldberg
Game Changers: Three Business Disruptions Upon Us | Eric GoldbergJessica Tams
 
Understanding Mobile Game Players | Saad Hameed
Understanding Mobile Game Players | Saad HameedUnderstanding Mobile Game Players | Saad Hameed
Understanding Mobile Game Players | Saad HameedJessica Tams
 
Soft Launch Planning and Management | Dylan Tredrea
Soft Launch Planning and Management | Dylan TredreaSoft Launch Planning and Management | Dylan Tredrea
Soft Launch Planning and Management | Dylan TredreaJessica Tams
 
1 Million Years of Audience Watch Time | James Beaven
1 Million Years of Audience Watch Time | James Beaven1 Million Years of Audience Watch Time | James Beaven
1 Million Years of Audience Watch Time | James BeavenJessica Tams
 
Accessible Reality | Trevor Blom
Accessible Reality | Trevor BlomAccessible Reality | Trevor Blom
Accessible Reality | Trevor BlomJessica Tams
 
Maximizing App Monetization: 5 Uncommon Tips | Rémy Cottin
Maximizing App Monetization: 5 Uncommon Tips | Rémy CottinMaximizing App Monetization: 5 Uncommon Tips | Rémy Cottin
Maximizing App Monetization: 5 Uncommon Tips | Rémy CottinJessica Tams
 
Do You Have What it Takes? What VCs are Looking For in Esports Investments | ...
Do You Have What it Takes? What VCs are Looking For in Esports Investments | ...Do You Have What it Takes? What VCs are Looking For in Esports Investments | ...
Do You Have What it Takes? What VCs are Looking For in Esports Investments | ...Jessica Tams
 
Commercial and Contractual Stability in Esports | Adam Whyte
Commercial and Contractual Stability in Esports | Adam WhyteCommercial and Contractual Stability in Esports | Adam Whyte
Commercial and Contractual Stability in Esports | Adam WhyteJessica Tams
 
Playtika's growth by change | Boaz Levin
Playtika's growth by change | Boaz LevinPlaytika's growth by change | Boaz Levin
Playtika's growth by change | Boaz LevinJessica Tams
 
Only the Best is Good Enough: How LEGO is Transforming its Approach to Videog...
Only the Best is Good Enough: How LEGO is Transforming its Approach to Videog...Only the Best is Good Enough: How LEGO is Transforming its Approach to Videog...
Only the Best is Good Enough: How LEGO is Transforming its Approach to Videog...Jessica Tams
 

More from Jessica Tams (20)

You Only Pitch Once – Getting Game Pitches Right The First Time | Gregan Dunn
You Only Pitch Once – Getting Game Pitches Right The First Time | Gregan DunnYou Only Pitch Once – Getting Game Pitches Right The First Time | Gregan Dunn
You Only Pitch Once – Getting Game Pitches Right The First Time | Gregan Dunn
 
Insights You Need to Win in Mobile Gaming | Herman Lee
Insights You Need to Win in Mobile Gaming | Herman LeeInsights You Need to Win in Mobile Gaming | Herman Lee
Insights You Need to Win in Mobile Gaming | Herman Lee
 
Zero to 60: Building A Successful Games Studio Within A Hollywood Media Compa...
Zero to 60: Building A Successful Games Studio Within A Hollywood Media Compa...Zero to 60: Building A Successful Games Studio Within A Hollywood Media Compa...
Zero to 60: Building A Successful Games Studio Within A Hollywood Media Compa...
 
Succeeding in the Maturing Mobile Gaming Market | Tuyen Nguyen, Owen O’Donoghue
Succeeding in the Maturing Mobile Gaming Market | Tuyen Nguyen, Owen O’DonoghueSucceeding in the Maturing Mobile Gaming Market | Tuyen Nguyen, Owen O’Donoghue
Succeeding in the Maturing Mobile Gaming Market | Tuyen Nguyen, Owen O’Donoghue
 
Staying on Top of Your Game: Engaging and Converting Players in an Evolving L...
Staying on Top of Your Game: Engaging and Converting Players in an Evolving L...Staying on Top of Your Game: Engaging and Converting Players in an Evolving L...
Staying on Top of Your Game: Engaging and Converting Players in an Evolving L...
 
Improving LTV with Personalized Live Ops Offers: Hill Climb Racing 2 Case Stu...
Improving LTV with Personalized Live Ops Offers: Hill Climb Racing 2 Case Stu...Improving LTV with Personalized Live Ops Offers: Hill Climb Racing 2 Case Stu...
Improving LTV with Personalized Live Ops Offers: Hill Climb Racing 2 Case Stu...
 
The rise of the regulators | Paul Gardner
The rise of the regulators | Paul GardnerThe rise of the regulators | Paul Gardner
The rise of the regulators | Paul Gardner
 
Why the Games Industry Needs Initiatives Like Putting The G Into Gaming | Liz...
Why the Games Industry Needs Initiatives Like Putting The G Into Gaming | Liz...Why the Games Industry Needs Initiatives Like Putting The G Into Gaming | Liz...
Why the Games Industry Needs Initiatives Like Putting The G Into Gaming | Liz...
 
Epic Team Principles | Roman Zorin
Epic Team Principles | Roman ZorinEpic Team Principles | Roman Zorin
Epic Team Principles | Roman Zorin
 
10 Years of Angry Birds | Stephen Porter
10 Years of Angry Birds | Stephen Porter10 Years of Angry Birds | Stephen Porter
10 Years of Angry Birds | Stephen Porter
 
Game Changers: Three Business Disruptions Upon Us | Eric Goldberg
Game Changers: Three Business Disruptions Upon Us | Eric GoldbergGame Changers: Three Business Disruptions Upon Us | Eric Goldberg
Game Changers: Three Business Disruptions Upon Us | Eric Goldberg
 
Understanding Mobile Game Players | Saad Hameed
Understanding Mobile Game Players | Saad HameedUnderstanding Mobile Game Players | Saad Hameed
Understanding Mobile Game Players | Saad Hameed
 
Soft Launch Planning and Management | Dylan Tredrea
Soft Launch Planning and Management | Dylan TredreaSoft Launch Planning and Management | Dylan Tredrea
Soft Launch Planning and Management | Dylan Tredrea
 
1 Million Years of Audience Watch Time | James Beaven
1 Million Years of Audience Watch Time | James Beaven1 Million Years of Audience Watch Time | James Beaven
1 Million Years of Audience Watch Time | James Beaven
 
Accessible Reality | Trevor Blom
Accessible Reality | Trevor BlomAccessible Reality | Trevor Blom
Accessible Reality | Trevor Blom
 
Maximizing App Monetization: 5 Uncommon Tips | Rémy Cottin
Maximizing App Monetization: 5 Uncommon Tips | Rémy CottinMaximizing App Monetization: 5 Uncommon Tips | Rémy Cottin
Maximizing App Monetization: 5 Uncommon Tips | Rémy Cottin
 
Do You Have What it Takes? What VCs are Looking For in Esports Investments | ...
Do You Have What it Takes? What VCs are Looking For in Esports Investments | ...Do You Have What it Takes? What VCs are Looking For in Esports Investments | ...
Do You Have What it Takes? What VCs are Looking For in Esports Investments | ...
 
Commercial and Contractual Stability in Esports | Adam Whyte
Commercial and Contractual Stability in Esports | Adam WhyteCommercial and Contractual Stability in Esports | Adam Whyte
Commercial and Contractual Stability in Esports | Adam Whyte
 
Playtika's growth by change | Boaz Levin
Playtika's growth by change | Boaz LevinPlaytika's growth by change | Boaz Levin
Playtika's growth by change | Boaz Levin
 
Only the Best is Good Enough: How LEGO is Transforming its Approach to Videog...
Only the Best is Good Enough: How LEGO is Transforming its Approach to Videog...Only the Best is Good Enough: How LEGO is Transforming its Approach to Videog...
Only the Best is Good Enough: How LEGO is Transforming its Approach to Videog...
 

Recently uploaded

Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 

Recently uploaded (20)

Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 

UGC In Game : A Brief History and How We Bring It To Mobile | Zhuo Yue

  • 1. UGC In Game: A Brief History And How We Bring It To Mobile Name Zhuo Yue Job Title Senior Engineer Company Tencent
  • 2. What does UGC mean in video games? From wiki: ...Video games can have fan-made content in the form of mods, fan patches, fan translations or server emulators. Some games come with level editor programs to aid in their creation. A few massively multiplayer online role-playing games ... have UGC systems integrated into the game itself. A metaverse can be a user-generated world... User-generated content
  • 3. Castle Smurfenstein (Modified Castle Wolfenstein) Year: 1981(Original Game) / 1983(Mod) Modified graphics and sound effects 1981 : Castle Wolfenstein
  • 4. Doom 1981 : Castle Wolfenstein 1993 : Doom Year: 1993 ★First commercial game to provide user-friendly modding support/tools ★WAD files! (Media assets separated from game engine) Inspired by Wolfenstein 3D (1992) mods
  • 5. Doom : WAD file 1981 : Castle Wolfenstein 1993 : Doom Where's All the Data? Pros • An important step to make modding easier! • Level structures, Graphics, SFX, Music... • IWAD(base) and PWAD(patch) • Easy to share • Open and extendable data lump structure (like data chunks) • Lots of third-party editors! Cons • Only one IWAD & PWAD can be loaded at a time • No behaviors...(had to patch game exe) Media assets separated from game engine
  • 6. Doom : Editors 1981 : Castle Wolfenstein 1993 : Doom • DEU: Abilities to modify WAD files • DeHackEd: Abilities to modify gameplay datas(by hacking exe binary) • However logic (e.g. enemy AI) can't be modified
  • 7. Quake 1981 : Castle Wolfenstein 1993 : Doom • Year: 1996(Quake) / 1998(Quake II) • Evolutionary 3D engine • WAD / BSP / PAK files • Quake Introduced QuakeC as scripting language(which was replaced by DLL subsystem in Quake II) • Level editors • Console alias • Built-in demo record functionality 1996 : Quake
  • 8. QuakeC Language & DLL Sub System 1981 : Castle Wolfenstein 1993 : Doom 1996 : Quake QuakeC • Interpreted language based on C syntax • Ability to control much of the game logic • Weapons • Enemy AIs • Triggers • Game rules • ... • Officially released qcc compiler (with source code) DLL Sub System (Quake II) • Pre-compiled C/C++ DLLs to be loaded by the game • Used by Quake II and later games • Can do EVERYTHING • Much faster • Less secure • Source code released in 2001
  • 9. Demos & Machinima (“Quake Movies”) 1981 : Castle Wolfenstein 1993 : Doom 1996 : Quake • Doom introduced (simple) demo recording functionality, Quake inherited and enhanced this feature. • Demos could be shared to the community (in .DEM files) • Speedruns • Deathmatches • In 1996, the Rangers released the first “quake movie” - Diary of a Camper • Featuring not only deathmatch, but a simple story, with dialogs in form of chat text • Greatly inspired the whole community • The name Machinima was created in 1998, and gradually became well-known UGC goes beyond mods (Mechanical + Cinema)
  • 10. Half-Life & Counter-Strike • Year: 1998(Half-Life) / 1999(CS Mod) / 2000(Valve CS Release) • Counter Strike first released as a mod of Half-Life, then became one of the Valve games • “Open Development” - Mods of mods • Maps • Bots • Server Plugins • Game Modes • Based on a heavy-modified Quake engine. • Half-Life SDK • Team Fortress / Day of Defeat 1998 : Half-Life 1981 : Castle Wolfenstein 1993 : Doom 1996 : Quake
  • 11. Modding made easy • Has official support for mods • Doom / Quake Series • Fallout / Elder Scrolls Series • Call of Duty Series • StarCraft / WarCraft Series • Has unofficial support for mods • Grand Theft Auto Series 1981 : Castle Wolfenstein 1993 : Doom 1996 : Quake 1998 : Half-Life
  • 12. Steam Workshop • Year: 2003(Steam Official Release) / 2011 (Workshop) • Steam all-in-one service for distributing videogame official add-ons and user-generated content • Favored by independent game creators, mod creators and players • Easy to share & subscribe • Search, category, ranking and comment services • Compatibility check 2011 : Steam Workshop 1981 : Castle Wolfenstein 1993 : Doom 1996 : Quake 1998 : Half-Life
  • 13. Minecraft • Year: 2011 • A new type of sandbox game • The game itself is a mix of map editor experience and survial RPG elements • Redstone & Command Block -> Customizable game logic • Very large UGC community • Mods • Custom servers • Builder teams • Game record / live streaming videos • No offcial mod support at first But Minecraft (Java edition) is easy to modify 2011 : Minecraft 1981 : Castle Wolfenstein 1993 : Doom 1996 : Quake 1998 : Half-Life • Forge API • OptiFine • Server Plugins 2011: SteamWorkshop
  • 14. Minecraft-like games • Voxel-based (3D) or tile-based (2D) • Procedurally generated worlds • Free building as core gameplay element • Highly customizable • Fun to create • Easy to be shared as snapshots or videos 2011 : Minecraft 1981 : Castle Wolfenstein 1993 : Doom 1996 : Quake 1998 : Half-Life 2011: SteamWorkshop
  • 15. Game Creation Platform/Games • Roblox / Super Mario Maker / Garry’s Mod • Game = player + editor + official assets + sharing platform + BBS ? 1981 : Castle Wolfenstein 1993 : Doom 1996 : Quake 1998 : Half-Life 2011: SteamWorkshop 2011: Minecraft
  • 16. User-generated contents ? 1981 : Castle Wolfenstein 1993 : Doom 1996 : Quake 1998 : Half-Life 2011: SteamWorkshop 2011: Minecraft Texture 3D Model Sound & Music Level (Map) Item Data Enemy Data PowerUp Data Skill Data Crafting Recipe Enemy AI Trigger & Event Game Rule Item Behavior Text & Dialog Custom UI Logic Machinima Fan Arts Demos Story Live Streaming Game Guide & Walkthrough Visual Effect
  • 17. What game/engine can do to support UGCs Easier to use More extendable Level/Map Editor Asset Editor Gameplay Data Editor Trigger System Script System SDK Open Source Demo Record & EditVideo Record Live Streaming Editor Studio / IDE In-game UGC sharing platform / marketShare-to-SNS Requires Asset Pack and/or Add-on System ● Appearance ●Gameplay Data ●Logic ●Game experience ●Platform
  • 18. What about mobile games? • Modding: • Most mobile games don’t come with official mod support • Android APK could be easily modified by third-party (not so easy on iOS) • User-generated content • Some strategy games features user-created levels (e.g. CoC) • Voxel/tile based sandbox games (e.g. Minecraft/Terraria) • Mobile edition of game creation platforms – play only(e.g. Roblox) • Logic editing is difficult • Game experience sharing is easy on all mobile games
  • 19. UGC in LEGO®️CUBE • Voxel-based sandbox game • Full mobile-functional game creation platform How did we do that? Appearance customization Gameplay data customization Logic customization Game experience sharing UGC
  • 20. First of all...a mod pack system Internal (non-customizable) Base (customizable) Bricks Items Monsters Effects Mod Pak 1 Bricks Items Monsters Mod Pak 2 Items Effects ... ... Mod Pak 3
  • 21. First of all...a mod pack system Internal (non-customizable) Base (customizable) Bricks Items Monsters Effects User Map 1 Bricks Items Monsters User Map 2 Items Effects ... ... User Map 3
  • 22. User-created maps in LEGO®️CUBE User Map 1 User Map 2 User Map 3
  • 23. References between elements Internal (non-customizable) Base (customizable) Bricks Items Monsters Effects User Map 1 Bricks Items Monsters User Map 2 Items Effects ... ... User Map 3
  • 24. Customizable elements Base Bricks Brick 01 Mod Pak 1 Bricks Brick 02 Brick 03 Brick 01 Brick 02 (Clone) Each element has its unique GUID
  • 25. Customizable elements Base Bricks Brick 01 Mod Pak 1 Bricks Brick 02 Brick 03 Brick 01 Brick 02 (Clone)Reference Look for GUID Data Manager
  • 26. Customizable elements Base Bricks Brick 01 Mod Pak 1 Bricks Brick 02 Brick 03 Brick 01 Brick 02 (Clone) Override : same GUID (‘Brick 01’ from Base Bricks is hidden)
  • 27. Customizable elements Base Bricks Brick 01 Mod Pak 1 Bricks Brick 02 Brick 03 Brick 01 Brick 02 (Clone) Clone : new GUID is generated for newly cloned element Brick 02 & Brick 02 (Clone) both visible
  • 28. Mod pack content in LEGO®️CUBE
  • 29. Mod Pak Sharing Platform Internal (non-customizable) Base (customizable) Bricks Items Monsters Effects Mod Pak 1 Bricks Items Monsters Mod Pak 2 Items Effects ... ... Mod Pak 3 Market Server • User Map (Mod Pak) is shared as a whole • Compressed • Identified by GUID • References well reserved • Simple version control (update only) • Author info • Tags & descriptions • Ranking & comments Download (Update)
  • 30. Data edit framework • One solution for editing multiple types of hierarchical structure data (Map Config, Brick, Item, Monster ...) • User friendly for mobile devices • Program generated UI • Tabbed or wizard style • Dynamic hide or show UI elements • Can handle references as well as instances • Data validation • Automatic serialization / deserialization
  • 31. Data edit framework Map config dialog (wizard style) Monster config dialog (tabbed)
  • 33. How to do that • The solution is a bit like Unity’s inspector system • Uses C# reflection
  • 34. How to do that • Different widget types • No more UI work Check button Slider Reference link
  • 35. Voxel-based sandbox game • Building (map editing) is part of the game • Customizable random world generation
  • 36. Performance problem on mobile devices • Server simply can’t afford to run world generation for every player (millions!) • Clients are short in memory and CPU • Want to support 20+ players in a single room for every one on every device • ... How to?
  • 37. Distribute the load to every client • Logic update • Every active section of the map has an owner player designated by server • The owner do the logic updates (mostly monster AIs) • Map update • World generation is performed on every (according to view) • Server only holds modified voxel data • Combat & crafting • For safety reasons, server controls the skill and item system
  • 38. Enhance the building part • Creative mode (infinite building materials) • Section edit tools (copy, erase, move)
  • 39. Game logic customization DLL Script Code • Can we create an interesting map without the use of PC? • To control as many things as possible Not supported by mobile devices Too difficult to type on touch screen
  • 40. What have we tried to bring to mobile... Some node based scripting system
  • 41. What have we tried to bring to mobile... Some sequence circuit simulator Input A Button B Button Press Sensor Output And OutIn #1 In #2 Door Open Close
  • 42. Trigger System • Event - Condition – Action simple enough! When any player dies If the player is in team #1 Respawn him on the spawn point
  • 43. Event/Condition/Action Library • Arranged in categories (all localized) • Game • Player • Team • Monster • Item • Environment • Dialog • Variable • ...
  • 44. Function & Variable • Functions are folded/expanded vertically • Maximize screen usage • Hide unnecessary detail • Parameter can be reference to variable or position/area/monster placed in the world
  • 45. Handle multiplayer games • Like other logic, triggers are executed distributly • One player only knows about what’s inside his view range • When an event is triggered, only one player(client) is chosen to check all the conditions (for example • PlayerMoveEvent : the player who moved • MonsterDieEvent : the owner of the monster • TimerEvent : the room host • Once all the conditions are satisfied, the chosen player(client) broadcasts the event context to all players (himself included) • Trigger actions are then executed on every client with the same input
  • 46. Sharing game experiences • Plugins are available to • Share snapshots to QQ / WeChat • Invite your friends from QQ / WeChat • Video recording on Android / iOS • Storytelling could be done with the help of Trigger System
  • 47. Q & A

Editor's Notes

  1. * 大家好,我是来自腾讯的卓越,很高兴能为参加Casual Connect的各位带来我的演讲。这次演讲主要想从技术的角度去聊一聊游戏中的用户创造内容,分为两部分,前半部分主要是回顾一下历史上给用户创造内容带来过重要影响的游戏,总结一下这些游戏分别在哪些方面给UGC带来了帮助,后半部分是分享一下在此基础上我们如何在移动游戏上提供更好的用户创造内容支持
  2. * 首先,我们来看一下,游戏中的用户创造内容是什么: Wiki上,关于游戏中的用户创造内容,提及了这么几个方面: 1.爱好者制作的游戏模组、补丁、翻译、自定义服务器或是自定义游戏世界 2.地图编辑器等游戏修改工具 3.游戏中内置的让用户自定义内容的系统 这些只是游戏中用户创造内容的一部分,接下来我们会从历史上的一些著名游戏中去发现更多的方面……
  3. 游戏中的用户创造内容,最早是以游戏模组的形式出现在计算机平台上的(早期的游戏主机平台事实上都是简单的计算机,而后期的主机平台又趋向于封闭,难以进行修改)。历史上首个较为知名的游戏MOD是1983年面世的蓝精灵城堡,它是基于1981年Apple][平台的游戏《狼穴3D》修改而成 当时游戏并未提供直接的MOD支持,通过修改原始游戏的图像文件与音效文件,将游戏中的敌人换成了蓝精灵
  4. 10年以后的1993年,id Software推出了对PC游戏业界带来了革命性影响的FPS游戏——毁灭战士(Doom)。传奇程序员约翰卡马克通过Doom游戏引擎给我们带来的不仅是图形技术和游戏体验上的变革(这方面想必大家都耳熟能详了),同时还有对游戏MOD历史上的首次重大变革。这个变革有几个方面: 1.是首个提供了用户友好的模组制作工具的商业游戏 2.首创了WAD文件格式,实现了游戏资源层与引擎层的分离 3.Doom引擎及其变种被后来大量的游戏所使用,对业界影响巨大 在id Software推出毁灭战士之前,他们的另一款FPS游戏——德军总部3D也获得了空前的成功。当时的玩家通过直接修改游戏资源文件的形式来制作MOD John Carmack & Tom Hall受到了玩家MOD的鼓舞和启发,认为在游戏的设计上更加利于玩家修改游戏是“正确的事情”,于是才有了Doom在Mod上的成功。接下来我们具体看一下Doom是如何做到友好的MOD支持的
  5. 首先来看一下Doom的WAD文件系统。WAD是DOOM引擎使用的文件包系统,其中保存了游戏的绝大多数媒体资源——关卡、图像、音效、视觉特效等。 这在如今看起来似乎很常见,例如Unity引擎的AssetBundle。但是在当时的游戏,基本做法都是将文件零散地放置或是结合到游戏引擎中。而Doom通过WAD文件包,一方面实现了媒体文件与游戏引擎的分离,另一方面在此基础上引入了补丁包(或者说增量包)的概念,使用户不需要修改原游戏的文件就可以使用MOD,大大降低了MOD制作、安装和分享的成本。 在WAD包格式的设计上,卡马克采用了开放且可扩展的数据块格式,并且将文件格式向MOD制作者公开,这也极大地方便了MOD内容和第三方工具的制作。由于引擎的继承关系,后来的Quake,基于(广义上)Doom引擎的Hexen等游戏,以及Valve的Half-Life、CS等也都继承了wad文件的格式 但是这套方案也有不足之处,也就是WAD格式并没有包含任何与游戏逻辑相关的数据:与如今常见的新游戏引擎不同,doom引擎混杂了游戏逻辑代码,并且没有做到在逻辑层面的数据驱动(修改逻辑,怪物属性、武器属性、道具属性等,尽管可以使用工具来进行patch);
  6. DOOM开放的资源文件架构给MOD社区提供了便利,这也给DOOM带来了大量的第三方编辑工具。在早期,DEU和DeHackEd两个工具对MOD社区起到了非常大的作用。 DEU允许玩家修改WAD文件的内容、并重新打包,这包括了游戏地图、纹理、特效、音效等原本DOOM引擎就支持的修改 而DeHackEdk则可以修改怪物、武器、道具和游戏模式等不包含在WAD文件中,而是整合到了游戏引擎中的数据,通过修改游戏可执行文件的方式。这可以在一定程度上改变游戏行为,并且可以允许玩家创建新的怪物和道具等。 然而,这种定制也是有限的,因为怪物AI之类的逻辑并不是引擎中的结构化数据,而是通过代码写死的,第三方工具对修改逻辑代码无能为力。 后面我们会看到,游戏的逻辑代码,直到后来的Hexen引擎与Quake引擎才能够由玩家定制
  7. 时间来到1996年,这次的主角依然是id Software。Doom游戏获得的成功,推动了Doom引擎的广泛使用,在这几年间产生了很多的Doom-like游戏,它们大多使用修改过的Doom引擎,并且继承了其良好的MOD支持特性。同时,官方MOD支持的理念也得到了推广,各类游戏的MOD社区逐渐壮大。在这样的背景下,伴随着新一轮的引擎技术革命,雷神之锤(Quake)诞生了。Quake引擎最大的特点是实现了真正且流畅的3D画面渲染,这给今日的3D游戏奠定了技术基础。 在对MOD的支持上,Quake也做到了新一轮的革新,最关键的3点分别是: 1.进一步扩展了文件包系统 2.引入了游戏逻辑脚本,这包含了通用脚本语言QuakeC以及控制台命令 3.引入了游戏录像(demo)录制功能 在文件包系统上,Quake1使用了更为直观的pak压缩文件作为文件包(其实就是zip包),这使得文件包的管理和制作更为便捷。同时,Quake还支持同时载入多个pak文件包,这个改动使得多个mod的共存成为可能。 https://en.wikipedia.org/wiki/Quake_mods#Quake_III https://en.wikipedia.org/wiki/Machinima#Quake_movies https://en.wikipedia.org/wiki/Diary_of_a_Camper
  8. QuakeC脚本语言的引入,是一个重大的改进。前面说到,在DOOM引擎中游戏逻辑代码是不可修改的。而使用脚本语言,玩家可以定制游戏的方方面面。 QuakeC是一种基于C语言语法的解释执行语言。官方开放的接口允许脚本控制游戏中武器、敌人、触发事件、游戏规则等逻辑,只需要使用官方提供的编译器即可。 通过定制游戏的逻辑,一批优秀的MOD涌现出来,这其中包括了大家耳熟能详的抢旗模式(Capture The Flag)和军团要塞(Team Fortress) 当时其他的一些游戏,出于方便自身或者MOD开发的原因,也提供了类似的脚本语言,例如毁灭巫师(Hexen)和异教徒(Heretic)等 值得一提的是,同时Quake1也引入了控制台控制台命令(alias)的概念,通过控制台命令,用户可以自定义游戏提供的各种选项和操作,MOD制作者也可以通过提供控制台指令来实现对MOD的配置。 尽管QuakeC有各种优势,但id Software在后续的作品中并没有继续使用它,而是从Quake II开始就引入了一套新的DLL子系统,让游戏直接载入预编译好的C或C++动态链接库来执行游戏逻辑。 Dll比起解释执行的脚本来说,功能更加强大,开发上更为自由,理论上基本能做任何事情,效率也大幅提升。尽管在安全性上有着担忧,但这仍然成为了后来的多数游戏MOD最为普遍采用的形式。 https://en.wikipedia.org/wiki/Quake_mods#Quake_III https://en.wikipedia.org/wiki/Machinima#Quake_movies https://en.wikipedia.org/wiki/Diary_of_a_Camper
  9. Quake中的用户创造内容不仅在游戏玩法方面有惊人的突破,在其他方面也创造了历史。 Doom引入了游戏录像功能,这个功能允许玩家录制一局游戏的数据录像,这个录像会被保存成文件,并且可以分享给其他人观看。在那个年代,互联网文件传输速度还不足以支撑大容量视频文件的传输,而数据录像的占用的容量很小,可以很方便的分享到爱好者社区。 Quake继承了这个功能,并且做了一系列的改进,其中就包括支持以观察者的视角来观看录像。 起初这个特性经常被玩家或者战队用来录制游戏速通或者对战录像,直到某一天,the Rangers,一群爱好者组成的战队,发布了一段名为Diary of a Camper的demo,在社区上引起了轰动 这段demo特殊的地方在于,它不仅仅是普通的对战录像,而是包含了剧本和对话、经过导演的“小电影”。原来demo还可以这么玩——这个主意激发了爱好者社区的想象力,导致了大量带剧情的作品涌现,这些使用Quake的录像功能录制的爱好者电影作品逐渐被称为Quake Movies,这个现象也逐步地发展到其他游戏的爱好者社区中。 1998年,游戏电影(Machinima)这个词被首次提出,用来指代哪些使用游戏引擎功能(或第三方工具)录制的电影作品。 Machinima = Mechanical + Cinema,游戏电影
  10. 在1998年,Valve的经典游戏作品半条命发售,由于其极高的游戏性和吸引人的游戏剧情而大受欢迎。半条命使用的GoldSrc引擎是基于QuakeWorld引擎的深度改造版,在对MOD的支持和理念上也继承了Quake的优良传统——官方提供了Half-Life SDK,其中包含了Hammer Editor作为官方的地图制作工具,同时采用了类似Quake II的DLL系统来实现游戏逻辑的自定义,给mod制作者带来了很大的自由度和便利。 正如辛勤劳作能带来丰收,好的引擎支持总能带来好的UGC内容——1999年,大家所熟知的反恐精英(Counter-Strike)首次以半条命Mod的形式进入大家的视线。 反恐精英MOD的制作者完全自定义了游戏的模式与武器,而爱好者社区则提供了更多重要的东西,地图、机器人、服务器插件等等。作者称之为Open Development,即社区驱动了整个MOD的开发,并给其不断地添加新的功能。这展现了社区的力量,并且从技术上来说,我认为这与游戏引擎对游戏MOD的优秀支持是分不开的。 由于反恐精英MOD的成功,Valve收购了其IP,并于2000年作为官方游戏发售,而反恐精英成为了游戏爱好者通过创作游戏内容来实现自己创意并最终成功的最好例子。 The power of the community Valve Software, the first major studio to regularly hire the best mod developers and the most talented level designers from the community to work on its official titles. Mods of mods Good Engine Support Brings Good UGCs
  11. 2003年,Valve推出了Steam;2011年,Steam Workshop上线,这个起初只是推送Valve官方游戏补丁和DLC的功能,逐步发展成为了一体化的游戏插件即用户创造内容分享社区。 Steam Workshop提供了方便的分享和订阅功能,并附带了搜索、分类、排名等服务,受到了独立游戏开发者、MOD作者和玩家的好评 对于玩家而言,他们不必要再去BBS中花大量时间寻找想玩的mod,然后再花更多的时间去安装MOD和解决兼容性问题;对制作者而言,则是获得了分享内容的平台和更多与爱好者交流的机会。 这让我们看到了,提供一个一站式的UGC分享平台的重要性。
  12. 2011年,Minecraft诞生了。与其他游戏不同,Minecraft是全新类型的基于随机体素世界的沙盒游戏,建造Minecraft的核心玩法的一部分,而对游戏逻辑的自定义也可以通过游戏内的红石及命令方块等扩展玩法来达到,从而可以认为Minecraft本身就是UGC内容的生产工具。也许是由于Minecraft玩法本身激发了玩家的创造力,尽管在一开始很长一段时间内,其开发公司Mojang都没有提供官方的mod支持,第三方mod社区仍然迅速地成长开来。玩家通过修改Minecraft的Java类来对游戏进行修改,在此基础上发展出了完善的第三方MOD API和工具。目前Minecraft拥有非常庞大且全面的UGC社区,涵盖了MOD制作发布、定制服务器、建造者团队、游戏录像直播电影等各方面。在中国,Minecraft凭借着游戏直播的流行,一直保持着非常高的热度
  13. Minecraft还催生了一批Minecraft-like games,它们可能具体形态各异,但是大多使用基于体素或者图素来构建游戏世界,并且能够让玩家随意地改造世界。大多数情况下,这类游戏还会使用过程生成的世界 这样的游戏体验充满乐趣,并且玩家不需要掌握太多技术方面的东西就可以创造出自己的作品并通过截图或者游戏录像的形式分享给他人。 值得一提的是Terraria也是2011年发售,但是由于其更加注重于RPG的体验,以及制作mod不方便等原因,所以UGC的流行程度远不及Minecraft
  14. 而另外一些游戏,则采用了更加激进的方案——游戏本身不包含或者只包含少量的第一方内容,而是提供了完整的游戏制作工具、游戏内容库和分享平台。这样的游戏被称为游戏创作平台,或者创作平台游戏。 Roblox、Super Mario Maker和Garry’s Mod就属于这一类的游戏。这类游戏与真正的游戏引擎工具相比,通常具有更低的上手难度,具有一定的制作趣味性,同时可能会提供非PC平台的制作工具。
  15. 至此,我们已经对游戏中用户创造内容的历史有了个基本的了解,是时候来做个小结了。 可以看到,随着游戏引擎技术的发展和游戏玩法的创新,游戏中用户创造内容大致经历了从观感的定制,到游戏玩法数据的定制,到游戏逻辑的定制这三个阶段,这三个阶段基本是由游戏MOD来涵盖的;而伴随着游戏MOD的发展历程,游戏体验的分享作为独特的一类用户创造内容,由于其创作门槛低且容易引起共鸣,也逐步流行起来。
  16. 我们将上面提到的UGC内容所依赖的游戏引擎功能支持,按照上手门槛和可扩展性两个维度来划分,可以得到这么一张图 可以看到 1.随着分享游戏体验到修改游戏观感、修改游戏数据、修改游戏逻辑,用户可以做到的事情越来越多,但是上手难度就越来越高 2.要想提供MOD支持,游戏或引擎提供底层资源包或者插件包支持是必要的
  17. 接下来我们就进入本次演讲的第二个主题——如何在移动端提供好的UGC支持? 首先,我们来看一下当前移动端游戏的现状。 对于MOD而言,绝大多数移动端游戏出于各种原因,都没有提供官方的MOD支持;安卓APK包可以比较容易地被修改,但ios上就比较困难 对于更广泛的UGC内容而言,部分游戏玩法本身就希望玩家制作自己的地图,例如CoC;基于体素或图素的沙盒游戏在移动平台上并没有太多障碍;而类似Roblox这类游戏创造平台的移动端版本,则多是只提供游玩模式,不提供制作移动端的制作工具。 由于移动端操作的特性,想要提供一个对用户友好的游戏逻辑编辑工具是比较困难的,相反,基本所有游戏都能简单地实现游戏内容的分享。
  18. 接下来我就着重介绍一下,在我们开发的游戏——乐高®️无限中,我们如何在纯移动端上实现较为完整且对用户友好的游戏创作平台,并且涵盖感观定制、玩法数据定制、逻辑定制和游戏体验分享四个部分的 乐高®️无限,是一款基于乐高授权IP的体素沙盒手游 Appearance -> library editor + voxel based building Gameplay data -> library editor Logic -> library editor + Trigger System Game experience sharing -> demo/video recording + share-to-sns
  19. 我们做的第一件事情,就是在底层实现了一套MOD包系统,形式上类似Doom的WAD包系统,主要是为了这么几点: 1.实现官方内容与MOD内容的分离 2.正确地处理MOD内容与官方内容之间引用、继承和覆盖关系(这个接下来会讲到) 3.作为MOD发布的单元 可以看到,乐高®️无限中,可定制的游戏内容包括乐高砖块、道具、怪物、效果等多种,以及这里没有列出来的可定制的游戏逻辑。官方的内容是只读的,作为基础库而存在;用户定制的内容,则独立成为一个个的MOD包存放
  20. 在通常场景下,我们认为MOD包等同于玩家创建的地图,各类可定制的内容是跟随地图一起存放的
  21. 就像这个截图中展示的这样,用户可以任意创建不同类型的地图,这些地图同时作为MOD包而存在
  22. MOD包的元素之间以及MOD包与基础库的元素之间存在引用关系,就像序列化包的多个引用对象一样,规则是: 1.同一个包内的元素可以相互引用 2.基础库中的元素之间也可以相互引用 3.MOD包的元素可以引用基础库的元素 4.一个MOD包的元素不能引用另一个MOD包的元素
  23. 实现方法其实也与一般的序列化包类似,我们给基础库中的每个元素分配一个GUID作为唯一标识 引用关系的保存就是记录了引用对象的GUID
  24. 引用关系的保存就是记录了引用对象的GUID
  25. 如果MOD包中的元素与基础库中的元素是覆盖关系,那么它们将使用同一个GUID,在这种情况下,引用关系将指向MOD包中的元素,从而基础库的元素会被隐藏
  26. 如果MOD包中的元素与基础库中的元素不是覆盖关系而是实例关系,那么它将拥有新的GUID,基础库中的元素将不会被隐藏
  27. 这张截图里面展示了游戏里面一个MOD包的可定制元素
  28. 乐高®️无限内置了UGC分享平台。通过连接到云端服务器,玩家将可以随时上传自己的作品,或是下载别的玩家制作的游戏内容。 地图,或是MOD包将作为一个整体被上传分享,如此一来,我们可以将整个包目录压缩成一个唯一的文件来节省流量,同时还可以保留包内的引用关系。 每个被上传到服务器的MOD包也会被分配一个GUID作为标识,在此基础上,我们能够在服务器上记录包的版本信息、作者信息以及玩家评论等
  29. 有了基础的MOD包系统,我们接下来做的,就是提供一套面向玩家或MOD制作者的数据编辑方案。 从开发者的角度而言,我们希望有一套通用方案,能够支持多种层次结构化数据的编辑,同时要对移动端操作友好,支持多种动态样式,支持对象之间的引用和实例 最后,当然要支持自动序列化与反序列化,因为游戏中的数据千奇百怪,我们无法承受对每一类数据都去编写读写逻辑
  30. 这两幅截图展示了在这个编辑框架下,向导和页签两种不同风格编辑界面的效果
  31. 这两幅截图展示的,是编辑层次化数据的能力
  32. 虽然要处理很多的细节,但是实现这些特性的原理其实很简单,就是利用C#的反射信息,通过Attribute来为需要编辑的字段添加额外的描述属性。 例如这里所示的代码,BrickData描述了乐高砖块的可配置属性,这整个类将会被我们定制的通用序列化功能所保存,通过Attribute我们规定了它的编辑页面样式
  33. 以及多个成员变量的编辑控件样式,而我们只需要准备好每一种类型的控件模板,整个UI界面将会由程序自动生成,不需要进行更多的UI工作了 当一个成员变量被描述成其他可定制元素的引用或实例时,将采用按钮的样式来跳转到更加深层的编辑页面
  34. 我们已经解决了游戏数据定制的问题,接下来该看看怎么让玩家定制游戏的感观表现了。 如前面所说,乐高®️无限是一款基于体素的沙盒游戏,这意味着建造(或者说地图制作)本身就是核心玩法的一部分。 我们也采用了过程生成算法来生成游戏中的世界,玩家可以定制世界的地貌、形状、装饰物、外观颜色等多个方面,我们希望通过更加丰富的随机算法定制能够降低玩家修改世界的工作量
  35. 基于体素的世界给玩家带来了很高的自由度,但是也伴随着性能上的挑战。 大多数体素沙盒游戏,例如Minecraft,都采用专用服务器方案,服务器程序可以运行在手机上或是云端。这也就意味着,作为服务器的机器需要同时载入并维护多个玩家所需要的数据和逻辑——在体素沙盒游戏中,这包括了玩家视野内的地形,执行地形生成算法,怪物的AI和寻路,以及相应的存储IO等等。这并不是一项轻松的工作,体素数据在生成和存储上,对CPU和内存都有比较大的压力,特别是当服务器程序运行在手机上时,往往只能支撑少数几个玩家一同游戏。如果服务器程序运行在云端,那么要不就是官方服务器面临着同时承载大量玩家的压力,要不就是用户需要支付私人服务器的租赁费用。 乐高®️无限希望能够在让所有玩家(不论使用的是什么设备)都能够轻松地进行20个以上玩家的联机游戏 那么,我们该如何做到这一点呢?
  36. 我们选择的做法是将服务器的负载平均地分配到各个客户端上。 首先,服务器从一个负责所有更新和维护的角色,转变为负责部分更新和调度工作的角色。 服务器管理着每个玩家的视野,以视野为依据,将世界中各种逻辑更新交由特定的玩家来执行;而每一个玩家,则只需要关心自己视野内发生的事情,尽可能少地关注视野外发生的事件,以降低开销; 由客户端负责的执行结果经由服务器验证后,再依据视野广播给其他玩家。服务器执行世界生成算法,而是在每一个客户端上根据各自的视野来执行。服务器会缓存一局游戏内所有改变过的体素数据,以支持玩家中途加入游戏 对于一些关键的运算,例如战斗、道具等等,这些运算由服务器来负责以防止作弊;而客户端之间,当视野交叠的时候,也会进行交叉校验以防止作弊行为。 Clients can do cross-checks to avoid cheating
  37. 为了进一步加强玩家定制游戏世界的体验,我们在创造模式的基础上,开发了多个地形区域编辑工具,这些工具都针对移动端的操作习惯进行了专门的设计优化
  38. 为了强化MOD支持,我们已经实现了玩家对游戏感观与数据的定制,接下来要做的,就是实现玩家对游戏逻辑的定制。 在这个方面,我们面临两个挑战: 1.我们能否在不依赖PC端编辑工具的情况下,制作出有趣的地图? 2.逻辑编辑工具能否做到控制游戏尽可能多的方面? 很显然,有两个常用方案是可以被提前排除掉的: 1.使用预编译的DLL,这个很明显不被绝大多数的移动端系统所支持,同时也无法摆脱对PC端工具的依赖 2.编写脚本代码,这个在移动端上实在是过于困难
  39. 由于我们团队有过开发可视化脚本组件的经验,我们在探索的过程中,曾经试过在游戏中引入一套可视化脚本系统 可视化脚本非常实用,但是在移动端上,受限于显示空间及触屏操作,其体验并不是那么友好;另外,可视化脚本终归是脚本语言,对玩家来说有一定的门槛
  40. 我们也曾经尝试过一套基于输入输出和与或非门的,类似时序电路的逻辑系统(类似的东西相信大家在Minecraft、Terraria或者Starbound之类的游戏都见过) 事实证明这玩意能够给游戏体验带来很多乐趣,但是并不具备控制游戏各方面规则的可扩展性
  41. 最终,我们采用的方案是触发器系统。 所谓触发器方案,就是将逻辑描述为事件、条件和动作,去规定在当发生了什么事情的时候,如果处于什么条件之下,则去执行什么动作。 例如,如图所示,我们定义了一个处理玩家死亡的触发器,它的逻辑是这样的:当任意玩家死亡了,如果该玩家处于队伍1中,则将玩家复活到默认的出生点 这整套逻辑非常易于理解
  42. 为了让触发器系统能够控制游戏中尽可能多的逻辑,我们规划并实现了事件、条件、动作库,尽可能地覆盖到游戏中的各个方面,包括游戏规则、玩家、队伍、怪物、道具、环境改变,以及UI定制和变量支持 这些事件、条件和动作都被安排到多个分类中,方便玩家进行查找和使用
  43. 事件、条件和动作中,可以包含多个可定制的参数,这些参数可以是不同的数据类型,例如数值、位置、区域、怪物等 参数可以引用函数,游戏支持函数与函数的嵌套,并且在界面上利用了垂直方向折叠展开的特性来充分利用屏幕空间以及略去不必要的细节 参数也可以引用变量或是世界中玩家放置好的位置、区域和怪物等
  44. 由于乐高®️无限在多人联机游戏中采用了分布式的方案,触发器逻辑的执行自然也是分布式的。 玩家在游戏中,基本只知道自己视野内发生的事件,因而当一个触发器事件发生时,服务器会选定在现场的唯一一名玩家的客户端来作为裁判以检查所有的条件是否满足 例如:…… 一旦条件满足,被选中的玩家所在的客户端就会通过服务器广播条件判断的结论(通过与否),其他玩家收到结果后,会各自基于同样的输入来执行所有的触发器动作 这里所说的同样的输入也包括了随机数种子,因而所有客户端执行的结果应当是一致的
  45. 最后,关于游戏体验的分享,这个在移动端上的做法实在太多了,这里就只简要地说明一下 现有的很多插件,例如Asset Store上可以获取到的,都能轻松地支持将游戏截图或者录像,并且分享到社交平台上。 腾讯公司内部提供的插件让我们能够实现在QQ或者微信平台上邀请朋友加入游戏 如果玩家对在游戏中实现叙事感兴趣,并且想要制作游戏电影,那么触发器系统就能帮助他定制游戏中的剧情,并使用录制插件录像并进行分享。