Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
MMORPG Server
Search
Buzzvil
December 01, 2021
Programming
500
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
MMORPG Server
By Alan
Buzzvil
December 01, 2021
More Decks by Buzzvil
See All by Buzzvil
220903_GFS
buzzvil
0
660
Git 해부하기 2 + 3
buzzvil
0
74
Metastable Failure
buzzvil
0
370
Git 해부하기
buzzvil
0
92
Introduction to Plate Solving
buzzvil
0
83
Airbnb Minerva
buzzvil
0
540
Shape up 방법론
buzzvil
0
1.1k
Buzzvil Billing Data Pipeline
buzzvil
0
730
Journey of Dash's release-cycle
buzzvil
0
290
Other Decks in Programming
See All in Programming
Android CLI
fornewid
0
180
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.7k
Claude Team Plan導入・ガイド
tk3fftk
0
240
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.3k
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
920
コーディングルールの鮮度を保ちたい for SRE NEXT 2026 / keep-fresh-go-internal-conventions-sre-next-2026
handlename
0
150
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
200
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
370
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
180
Haskell/Servantを通してWebミドルウェアを捉え直す
pizzacat83
1
610
PHP初心者セッション2026 〜生成AIでは見えない裏側を知る:今だからLAMPを通して仕組みを学ぶ〜
kashioka
0
680
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
150
Featured
See All Featured
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
270
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
The Pragmatic Product Professional
lauravandoore
37
7.4k
A Soul's Torment
seathinner
6
3.1k
Prompt Engineering for Job Search
mfonobong
0
380
Into the Great Unknown - MozCon
thekraken
41
2.6k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
200
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.3k
Agile that works and the tools we love
rasmusluckow
331
22k
Context Engineering - Making Every Token Count
addyosmani
9
1k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
160
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
Transcript
MMORPG Server Massively Multi-player Online Role-Playing Games
Game Server 의 종류 - Simple servier Account / Rank
/ Store / Reward
Game Server 의 종류 - Simple servier exports.createAccount = function(req,
res) { User.createAccount(req.body.deviceId, req.body.id, req.body.pw, function(err, session) { return common.sendJson(res, {'sessionKey': session.key}); }); }; exports.login = function(req, res) ...생략… exports.submitScore = function(req, res) ...생략… exports.getRankings = function(req, res) ...생략… exports.getProducts = function(req, res) ...생략…
Game Server 의 종류 - Realtime network (P2P/Central)
Game Server 의 종류 - Realtime network (P2P/Central) Command Packet의
예시 출처
Game Server 의 종류 - Realtime network (P2P/Central) Command를 Frame
번호와 함께 서버로 전송 출처 Server
Game Server 의 종류 - Realtime network (P2P/Central) 출처: Authority
Distribution in a Proxy-Based Massively Multiplayer Game Architecture Justin F. Christofoli
Game Server 의 종류 - Realtime network (P2P/Central)
Game Server 의 종류 - Realtime network (P2P/Central) 출처 Host
* Lobby server 는 central server
Game Server 의 종류 - Realtime network (P2P/Central) // TCP
소켓 사용 / Packet 단위 처리 // GameSession.java // 10 ticks / second public void read(Buffer rbuff) { Packet inpkt; while ((inpkt = receivePacket(rbuff)) != null) { processProtocols(inpkt); } } public void processProtocols(Packet packet) throws Throwable { int opCode=packet.buffer().getShort(); switch (opCode) { case OP_COMMAND: processCommand(packet); Break; … 생략 … } } private void processCommand(Packet packet) { gameFrame=match.getFrame(); if (packet.hasRemaining()) { match.putCommand(this, packet); } }
Game Server 의 종류 - MMORPG
Game Server 의 종류 - MMORPG 출처
Game Server 의 종류 - MMORPG 월드맵 <Segment matrix> ..
Linked list
Game Server 의 종류 - MMORPG 월드맵 // Creature.m -
attack:(int)weapon victim:(Creature*)victim damage:(int)damage { void effect(Creature* obj) { [obj notifyFight:weapon attacker: self victim: victim at: [victim point] sound: sound damage: damage]; } [[victim world] doCreatures: (Function) effect visible: [victim view]]; } // World.m + initialize { // local world pool } - doUsers: (Function) function ...
Game Server 의 종류 - MMORPG (Optimize) 출처 참고: 1,
2