thảo luận Lập trình game online

Mấy anh dev thì tư duy mãi cũng là dev, làm kinh tế mà tư duy thế này thì toanh
EmxwT8f.png

Player nó quan tâm gì gói tin anh xử lý thế nào, người ta quan tâm là đồ họa, gameplay, tính tương tác. Còn bài toán engineering chỉ là để giải quyết những thứ đó, không phải là bài toán chính
Thiếu gì game mới ra giật lag đủ kiểu nhưng gameplay tốt người ta vẫn bu vào, có tiền rồi thì thuê thêm dev fix mấy bài toán engineering mấy hồi
2y9npcU.png
 
Sau quãng thời gian mất cmn niềm tin, mất luôn phương hướng. Giờ quay trở lại cày cuốc những cái dang dở.
Target của mình là làm game online, multi player. Mục tiêu ban đầu sẽ xây dựng cái core server để xử lý trởn tru realtime. Hướng tới các dòng game mỗi room tầm 4-8 người đánh đối kháng nhau, turn base. Nhưng mình nghĩ làm đc realtime thì turnbase coi như xong.
Mình mạn phép lập topic này ra để anh em cũng nhau thảo luận các vấn đề tối ưu xung quanh. Mình nghĩ sẽ có các vấn đề cần quan tâm của 1 hệ thống game như sau. Đây là các keywork mình đang ngâm cứu: authoritarive server, p2p, webrtc, client sever prediction, sever reconciliation ...
Song song với việc thảo luận cùng anh em thì mình cũng sẽ start 1 pet project để hiện thực hoá những lí thuyết mình ngâm cứu đc. Source code sẽ public và có binary cho mọi người cùng theo dõi, chạy thử.
P/s: mình tạo topic này ra như kiểu nhật kí phát triển vậy, cũng là 1 động lực để code đều đặn hơn.

update 1: tạo simple car

Trước mình cũng làm một con multiplayer, nhưng không có điều kiện đào sâu vào networking, chỉ làm mỗi phần rollback & compensation thêm vào Photon PUN, mà thằng này thực hiện authoritative server nhọc quá. Thím đi từ nền tảng như này chính ra lại hay, có gì cứ quăng lên mọi người trao đổi nhé.
 
Mấy anh dev thì tư duy mãi cũng là dev, làm kinh tế mà tư duy thế này thì toanh
EmxwT8f.png

Player nó quan tâm gì gói tin anh xử lý thế nào, người ta quan tâm là đồ họa, gameplay, tính tương tác. Còn bài toán engineering chỉ là để giải quyết những thứ đó, không phải là bài toán chính
Thiếu gì game mới ra giật lag đủ kiểu nhưng gameplay tốt người ta vẫn bu vào, có tiền rồi thì thuê thêm dev fix mấy bài toán engineering mấy hồi
2y9npcU.png
Mình không hiểu những comment như thế này có tác dụng gì - dạy khôn người khác à? Những bài toán chủ topic đặt ra đều là những bài toán lâu đời, việc giải quyết những bài toán ấy có lợi cho chủ topic và những người khác có cùng mối quan tâm. Cảm thấy không cùng chí hướng thì tắt tab đọc bài khác, vào đây nói dăm ba câu vô bổ để thể hiện cái gì thế bạn?
 
Mình không hiểu những comment như thế này có tác dụng gì - dạy khôn người khác à? Những bài toán chủ topic đặt ra đều là những bài toán lâu đời, việc giải quyết những bài toán ấy có lợi cho chủ topic và những người khác có cùng mối quan tâm. Cảm thấy không cùng chí hướng thì tắt tab đọc bài khác, vào đây nói dăm ba câu vô bổ để thể hiện cái gì thế bạn?
Thì đã là thảo luận thì sẽ có ý kiến trái chiều, OT để có cái nhìn đa chiều là bình thường. Tôi đang nói ở khía cạnh kinh tế là việc làm của thread là phí thời gian mà không hiệu quả nếu chỉ để làm game để bán. Ông thread cũng có nói rõ ông viết backend server để làm gì đâu: Nhu cầu cụ thể của game hiện tại, viết lib bán, build cv kiếm job, dư thời gian muốn tìm hiểu thêm ...
WawmAwM.png

Trong topic này cũng thiếu gì anh khuyên thread quay đầu lại như tôi, tôi đưa ra ý kiến trái chiều vậy là ko có lợi cho chủ thread à, hay phải phí mấy tháng, thậm chí là mấy năm lao vào làm rồi không thu được gì thì mới là tốt
soilzx9.png
 
Trên Github có 1 cái KBEngine do mấy anh từng làm game MMORPG Tàu thời thể loại game này thịnh hành vứt lên, viết bằng C++ và phần server logic dùng Python. DB dùng MySQL. Nhưng không có doc.
Bên Tàu nhiều thằng dùng nó dựng lên những game dạng như Liên Quân và các thể loại di động online đấy
 
Mấy anh dev thì tư duy mãi cũng là dev
Cái này mình đồng ý, làm dev mà không tư duy của dev thì tư duy cái gì nữa. Việc giải quyết các vấn đề kĩ thuật, thách thức này nọ vừa là công việc và vừa là đam mê của dev. Bạn lấy chuyện kinh doanh, các thứ cao siêu vũ trụ ra nói thì đúng là dev không tư duy được như vậy.
có tiền rồi thì thuê thêm dev fix mấy bài toán engineering mấy hồi
Vậy cái này là công việc của ai? Là dev chứ. Có tiền rồi thuê dev, có khi người được thuê lại là bạn chủ thread, lúc đó việc có những thread như này liệu có còn là vô lí?
Thì đã là thảo luận thì sẽ có ý kiến trái chiều
Cái này mình thấy không phải là "ý kiến trái chiều" mà là "ý kiến không liên quan". Bạn chủ thread đã nói là muốn trao đổi về các vấn đề kĩ thuật, học thuật, vậy không thấy có lí do gì phải "quay đầu" hay "bàn lùi".

Đọc comment thấy vài cái không liên quan, không biết các bạn đã từng làm game hay chưa, hay đã từng làm game online hay chưa. Xây dựng hệ thống game online hay hệ thống gì đó nói chung cần rất nhiều yếu tố, không phải là mỗi cái "server còm" là xong. Đồng ý là giờ các công nghệ hỗ trợ nhiều và mạnh, nhưng bạn dùng dịch vụ của người ta, bạn phụ thuộc người ta. Cái gì mình chủ động được không phải tốt hơn hay sao? Ở đây bạn chủ thread cũng không nói là sẽ làm lại cái bánh xe bò, vì viết được lại những cái ở tầm giao thức chắc là cũng không lên đây nói chuyện rồi.

Thay vì đưa ra mấy cái ý "vô thưởng, vô phat", mấy bạn có vấn đề về kĩ thuật chia sẻ cho mọi người cùng mở mang thêm có phải hơn không?
 
Trên Github có 1 cái KBEngine do mấy anh từng làm game MMORPG Tàu thời thể loại game này thịnh hành vứt lên, viết bằng C++ và phần server logic dùng Python. DB dùng MySQL. Nhưng không có doc.
Bên Tàu nhiều thằng dùng nó dựng lên những game dạng như Liên Quân và các thể loại di động online đấy
Mấy bạn tàu chia sẻ rất nhiều topic hay trên github, công nhận là tinh thần chia sẻ của họ mạnh.
Trên github mình có follow 2 cái fw của họ:

- NoahGameFrame
Cái này viết bằng C++, tư tưởng hướng module (tháo ra lắp vào, cần cái gì thì add cái đó vào). Doc cũng đang được viết dần dần bằng tiếng Anh. Đã viết sẵn các module cần thiết để làm các game dạng MOBA hoặc MMOG.

- KBEngine (KBE)
Cái này họ cũng viết bằng C++ nhưng đã được tối ưu và dùng như backend, sau đó sử dụng python như 1 dạng interface, cung cấp API để gọi các lệnh đã viết bằng C++ ở trên. Làm như này thì sẽ có thể giải quyết bài toán hotfix mà không cần build lại hệ thống (Như các bác biết thì C++ là ngôn ngữ biên dịch, còn Python là ngôn ngữ thông dịch). Cơ mà như thế thì backend bằng C++ phải chạy thật sự ổn và được config phức tạp.
Cái KBE này ngày xưa nó vẫn còn cho phép vào trang chủ, có nhiều tài liệu nhưng toàn tiếng Trung, sau đó có 1 vài cái có tiếng Anh. Sau này, nó không cho phép truy cập nữa, mà thay vào đó là vào cái trang gì gì ấy. Theo tài tài liệu, mấy dev này có vẻ họ cũng muốn xây dựng 1 seamless world (như kiểu mấy game PUBG, FreeFire, ... bây giờ).
Screen Shot 2020-10-26 at 01.44.28.png
 
Last edited:
Thì đã là thảo luận thì sẽ có ý kiến trái chiều, OT để có cái nhìn đa chiều là bình thường. Tôi đang nói ở khía cạnh kinh tế là việc làm của thread là phí thời gian mà không hiệu quả nếu chỉ để làm game để bán. Ông thread cũng có nói rõ ông viết backend server để làm gì đâu: Nhu cầu cụ thể của game hiện tại, viết lib bán, build cv kiếm job, dư thời gian muốn tìm hiểu thêm ...
WawmAwM.png

Trong topic này cũng thiếu gì anh khuyên thread quay đầu lại như tôi, tôi đưa ra ý kiến trái chiều vậy là ko có lợi cho chủ thread à, hay phải phí mấy tháng, thậm chí là mấy năm lao vào làm rồi không thu được gì thì mới là tốt
soilzx9.png
Thì đây là box lập trình hay box kinh tế mà bạn góp ý người ta về kinh tế với chả bán hàng? Bạn tự cho chủ thớt là làm game để bán, trong khi đâu phải ai cũng như thế. Trái lại, có rất nhiều người thuộc một phần của team lớn hơn và họ trau dồi chuyên môn để phục vụ team cũng là chuyện bình thường. Nhiều studio tuyển vị trí gameplay programmer chuyên về networking, kiến thức chủ thớt thu được khi làm những thứ này sẽ mang lại nhiều cơ hội trong tương lai.
 
- KBEngine (KBE)
Cái này họ cũng viết bằng C++ nhưng đã được tối ưu và dùng như backend, sau đó sử dụng python như 1 dạng interface, cung cấp API để gọi các lệnh đã viết bằng C++ ở trên. Làm như này thì sẽ có thể giải quyết bài toán hotfix mà không cần build lại hệ thống (Như các bác biết thì C++ là ngôn ngữ biên dịch, còn Python là ngôn ngữ thông dịch).
Thì server MMORPG PC của 20 năm trước như MU Online, VLTK,... đều thế mà, phần game logic toàn viết bằng lua hay python để fix lỗi nhanh
 
Last edited:
Em đọc các ý kiến các của các bác rồi, các bác cứ bảo là focus vào đồ hoạ ra game lag chút rồi sau này cải tiến dần. Như em đã nói là em làm game 2-3 năm rồi. Kể cả có dùng service có sẵn như photon, smartfoxserver, agones, ... thì cái cốt lõi vẫn phải là tối ưu được cách trao đổi gói tin, mô hình hoá bài toán của mình. Theo em hiểu cái này là cái cần phải học hỏi lẫn nhau chứ ko phải đem ra đọ xem ai có lib ngon, ai có thư viện hịn...
Còn bạn kia phải mang tư duy dev ;( thì đúng cmnl là dev mang tư duy dev là đúng còn gì. Cho 1000 ông kinh tế mang tư duy kinh tế vào dev hộ cái. Em ko build lại cái bánh xe, mà đang muốn cùng anh em trao đổi xem làm sao để sử dụng cái bánh xe được chuẩn nhất, có thể là ra cái code base clear cho anh em indev biến các con game off của mình thành online.
 
Mấy anh dev thì tư duy mãi cũng là dev, làm kinh tế mà tư duy thế này thì toanh
EmxwT8f.png

Player nó quan tâm gì gói tin anh xử lý thế nào, người ta quan tâm là đồ họa, gameplay, tính tương tác. Còn bài toán engineering chỉ là để giải quyết những thứ đó, không phải là bài toán chính
Thiếu gì game mới ra giật lag đủ kiểu nhưng gameplay tốt người ta vẫn bu vào, có tiền rồi thì thuê thêm dev fix mấy bài toán engineering mấy hồi
2y9npcU.png
Về mặt kinh tế thì t đồng ý với thím, còn về mặt kỹ thuật thì anh dev kia đúng rồi còn gì, họ vào thớt kỹ thuật để hỏi về vấn đề kỹ thuật, thảo luận về nó chứ có phải vô thớt kinh tế hỏi về dự án game như vậy có doanh thu, đầu tư có hiệu quả và được nhiều người chơi hay không đâu ?
 
Thì server MMORPG PC của 20 năm trước như MU Online, VLTK,... đều thế mà, phần game logic toàn viết bằng lua hay python để fix lỗi nhanh
Mình nghĩ script language như Python/Lua nên dùng để prototype hoặc 1 số game logic yêu cầu cấu hình linh động như event, skin,... core game logic trên production server nên viết bằng native language mới đáp ứng performance.
 
Thím nghĩ đơn giản là em làm game 2-3 năm rồi, toàn game off thôi, giờ em muốn biến các con game offline của em thành online. Nghĩ đơn giản thế thôi thím ạ. Em nghĩ ko có thằng dev nào chập chững làm game mà nhảy vào ngâm cứu mấy cái keywork em list ra ở trên đâu.
Thím có thể gởi cho mình demo cái game off mà thím đã làm được ko?
 
Dân tình lạc đề nhiều kinh hoàng, quay về chủ đề chính vậy.

@tulanhvip thím đang support loại game nào đầu tiên? Đọc thì thấy nói tới realtime và authoritative server, không biết có phải kiểu server chạy world simulation như CS GO hay Unreal Tournament không?

https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
Thank thím có những comment chất lượng. Game em ko focus sâu như cs go, trước em cũng có đọc cái link của thím nhưng quả thực build như vậy tốn máu quá. Còn về con game em target làm thím có thể search snake rival nhé. Em target vào kiểu game io.

via theNEXTvoz for iPhone
 
Last edited:
Thank thím có những comment chất lượng. Game em ko focus sâu như cs go, trước em cũng có đọc cái link của thím nhưng quả thực build như vậy tốn máu quá. Còn về con game em target làm thím có thể search snake rival nhé. Em target vào kiểu game io.

via theNEXTvoz for iPhone
Game kiểu này chắc nguyên tắc vẫn giữ nguyên là headless server chạy world simulation rồi. Thím làm godot họ có hỗ trợ authoritative server & headless build không?
 
Game kiểu này chắc nguyên tắc vẫn giữ nguyên là headless server chạy world simulation rồi. Thím làm godot họ có hỗ trợ authoritative server & headless build không?
Rất may là con godot này support headless build đấy thím. Em đang phân vân giả sử game có nhiều room thì logic tạo room tương tác với database lại phải code riêng à? Mỗi bàn lại tạo khởi chạy 1 cái process à?
Thím làm rồi thì xử lý như nào?


via theNEXTvoz for iPhone
 
Back
Top