Tâm tư từ Blizzard - Diablo 2 Resurrected

Hẳn là bạn đang chơi offline bản lậu Diablo 2: Resurrected (D2R) vì Battle.net đang khiến cộng đồng Diablo nói chung và D2R nói riêng bồn chồn vkl vì Online mà thế này, thì bỏ tiền ra có đáng?

Cùng xem nhà phát hành tựa game huyền thoại Diablo 2 làm tươi mới sản phẩm của mình đã làm những gì suốt thời gian qua, kể từ khi tái khởi động.


Có thể thấy, ngoài hoạt động đầu tư Bitcoin ra, thì việc lên kế hoạch đầu tư vào D2R luôn làm giấc mơ làm giầu nhờ mua/bán là rất có tiềm năng. 

Nhưng liệu môi trường kinh doanh thế này có phát triển được? Start-up của các game thủ còn những khó khăn nào? Cùng xem những lời tâm huyết tận đáy con tim rỉ máu từ Blizzard sau những ngày D2R đi vào hoạt động

Bài viết được lấy của bác Lê Hữu Thành, từ cộng đồng Group D2R . Hoan hỉ click đường dẫn sau để xem bản gốc Anh ngữ D2R - Bọn em nỗ lực nhiều rồi của tập thể Blizzard

Thân gửi các nông dân!

Kể từ khi ra mắt trò chơi cày cuốc "Chúa Quỷ Hồi Xuân", chúng tôi gặp quá nhiều sự cố máy chủ (tất nhiên là không riêng chúng tôi ăn hành mà các bạn cũng ăn hành).

Vì biết sức chịu đựng của các bạn cũng có giới hạn (tất nhiên rồi hihi) nên trong tình thế này buộc chúng tôi phải giải trình một cách minh bạch tình trạng tồi tệ này.

Thực ra thì các bạn đừng nghe các lời đồn vô căn cứ như là việc nhân viên kỹ thuật hút cần trong giờ làm việc quá nhiều hay gì gì đó, các bạn cứ bình tĩnh.

Về lỗi từ hệ thống máy chủ

Trước khi đi sâu vô vấn đề, chúng tôi cũng muốn nói qua về một số ngữ cảnh chuyên môn (nói nôm na là giải ngố cho các bạn). Dữ liệu (data) của trò chơi được phân chia theo từng khu vực bao gồm Châu Âu, Châu Mỹ và Châu Á.

Cơ chế lưu trữ thông tin nhân vật được tích hợp dựa trên hệ thống của từng vùng mà các bạn kết nối. Để có thể vận hành cả một cơ sở dữ liệu khổng lồ trên toàn cầu là một công việc khó vl chứ éo dễ đâu nhé các bạn ơi, đó là lý do chúng tôi đã chia tách các khu vực để giảm tải trong việc vận hành và để phòng hờ lỗi xảy ra vẫn có khả năng hồi phục.

Sau vài dòng trên các bạn đã bớt ngố chưa? nếu bớt thì chúng tôi xin phép vô vấn đề chính.
Sự cố bắt đầu từ một buổi bình minh, bầu trời trong xanh, ánh nắng chiếu xuyên qua màn cửa báo hiệu một ngày thứ bảy ăn hành sấp mặt L mà chúng tôi éo ngờ tới. Máy chủ của D2R gián đoạn trên toàn cầu do lượng truy cập tăng đột biến.

Đây là một ngưỡng CCU (Concurrent Users - số người chơi cùng một thời điểm) quá bất ngờ và quá sức chịu đựng của hệ thống máy chủ nhìn tưởng bá đạo nhưng lại như lìn (tiên sư mấy thằng bên phòng marketing không dự đoán được lượng người mua game chuẩn xác).

Chưa kể việc chúng tôi vừa tung bản cập nhật mới ngay hôm trước khi xảy ra sự cố, mà bản cập nhật đó lại bổ sung vài yếu tố cố tình làm nặng game thêm. Thế là như nước vỡ bờ, ối giời ôi cả 2 yếu tố gộp lại làm cả hệ thống máy chủ tê liệt con mẹ nó luôn.

Ngay lúc dầu sôi lửa bỏng, chúng tôi quyết định sử dụng thuật xuyên không để quay lại xử lý bản cập nhật trước đó nhằm sửa chữa sai lầm, nhưng người tính không bằng trời tính, mọi việc càng rắc rối hơn.

Thực sự chúng tôi cũng đéo hiểu nổi khách hàng đâu ra mà đông thế? (dis cụ bọn team sale nhé), chúng tôi không được chuẩn bị để đón tiếp số lượng người chơi tăng lên hàng giờ như thế này. Kế hoạch là chỉ vét sữa bò chút đỉnh thôi, ai ngờ con bò lại béo quá các bạn à.

Ngay cả khi hệ thống máy chủ tê liệt, vậy mà khách hàng vẫn ào ào đăng nhập, phòng marketing liên tục báo tin mừng công việc cứ 40$ tin tin về tài khoản (bọn nó được sếp thưởng nữa mới cay chứ). Trọng khi phòng kỹ thuật thì như vỡ trận, cả thời gian đi đái cũng không có...

Các phương án đã được vạch ra và chúng tôi đã cố gắng khắc phục bao gồm cả việc cải tiến cấu hình trò chơi (tuy biết việc này là vô nghĩa) nhưng máy chủ vẫn lăn ra chết, nghĩ mà nó chán nhưng chúng tôi không bao giờ đầu hàng (tiền đang bào ngon mà, có cái đb mà đầu hàng).

Nói tới đây thì chắc ai là dân kỹ thuật cũng biết việc xử lý dữ liệu trước khi xảy ra sự cố một ngày là con dao 2 lưỡi (roll back <== là một ví dụ điển hình). Nhưng biết sao được, phải kiếm việc để làm thôi vì tới giờ này chúng tôi vẫn chưa tìm ra giải pháp vẹn toàn. Chúng tôi thầm ước ao số lượng truy cập giảm bớt, người chơi nghỉ bớt để giảm tải... nhưng người ước không phải khách hàng ước. Máy chủ càng lỗi thì người chơi lại càng đông, cả trăm nghìn kết nối mỗi khi máy chủ sống lại đã khiến mọi nỗ lực của bọn tôi công cốc.

Thực sự chúng tôi không thể lý giải được tại sao Blizzard có nhiều fan cuồng tới vậy, cứ lao đầu vô game như con thiêu thân bất chấp máy chủ như cái cc. Điều này làm chúng tôi cảm thấy rất áy náy, cảm giác thật tệ...

Trong bóng tối, một tia sáng le lói khi liên tiếp các giải pháp mới đã được vạch ra như việc cải tiến cấu hình (thực sư là không mới hihi), lập trình lại cơ sở dữ liệu toàn cầu dựa trên các bản dự phòng. Tưởng ổn nhưng hỡi ôi, càng sửa thì lại phát sinh thêm nhiều lỗi mới các bạn à.

Nhưng chúng tôi quyết không lùi bước, hàng loạt các chuỗi hành động mang tính đột phá được áp dụng dựa trên nguyên lý giảm tải cho hệ thống. Đáng mừng thay, kết quả đã khả quan hơn nhiều. Thay vì máy chủ tê liệt 5 tiếng, thì thời gian tê liệt được rút xuống còn 3 tiếng, 2 tiếng... và ngày một cải thiện (tuy nhiên đúng 8 giờ tối Việt Nam thì máy chủ vẫn chết vì đây là thời gian có lượng người chơi đông nhất).

Thống kê cho thấy ở mỗi khu vực có vài trăm nghìn người truy cập tại một thời điểm (3 khu vực gộp lại cỡ 1 triệu CCU). Với việc bọn fan cuồng Blizzard (chúng tôi không có ý vơ đũa cả nắm) cứ bất chấp kiểu này thì việc khắc phục lỗi quá tải máy chủ gặp khó khăn là không thể tránh khỏi.

Tại sao D2R lại dính lỗi bựa như vậy?

Để hoàn thiện trò chơi, chúng tôi đã giữ lại khá nhiều các đoạn mã cũ từ phiên bản cách đây hơn 20 năm. Mà bọn lập trình của team đó giờ đéo biết nó ở phương nào, trong khi các đoạn mã lỗi thời được phân tán khắp mọi ngóc ngách trong hệ thống game. Vì lỗi thời nên các đoạn mã cũ còn hơn người yêu cũ xảy ra xung đột và không bắt kịp sự phát triển của thời đại mới.

Việc nâng cấp bản gốc lên bản mới tưởng đơn giản nhưng không hề đơn giản như các bạn tưởng tượng (à nhầm, như chúng tôi tưởng tượng). Chúng tôi đã tối ưu hóa sao cho cái cũ và cái mới dung hòa trên cùng một hệ thống (nhưng éo hiểu sao bọn tester của chúng tôi không phát hiện ra điều bất thường nào trước đó). Ngay cả trong giai đoạn thử nghiệm mọi thứ vẫn rất êm đềm.

Nói tới đây các bạn đã hình dung ra một phần nguyên nhân chưa? để chúng tôi giải ngố tiếp nhé. Cơ bản mà nói, phiên bản từ năm 2001 từ xưa có cách chơi đơn giản hơn bởi hồi xưa chưa có internet phổ biến như bây giờ. Cho tới lúc phát hành ở tương lai năm 2021, nhờ internet mà nhà nhà người người đều biết việc khởi động lại trò chơi (reset) để đánh Baal run, Pindleskin, Ancient, Sewers, vân vân... trong cùng một thời điểm đã tạo ra một đại dương về dữ liệu cần phải xử lý đầu vào đầu ra (hãy tưởng tượng 500,000 người đồng loạt khởi động và đăng nhập lại cùng lúc... để farm). Mặc dù trong các buổi họp, chúng tôi đã thấy trước việc này nhưng người tính không bằng trời tính (lại nữa), lỗi xảy ra bất chấp trình độ của chúng tôi không phải bèo. Một lần nữa xin nhắc lại, chúng tôi đã đánh giá thấp lượng fan của Diablo 2 (ôi tổ sư bọn phòng chiến lược nhé).

Ngay bây giờ, đội ngũ lập trình viên ưu tú và suất sắc nhất của chúng tôi đang ngày đêm lập trình lại hệ thống để bắt nhịp được với thời đại mới, để hệ thống chịu được lượng tải khổng lồ (mặc dù bọn tôi cũng không biết là khi sửa xong thì còn ai chơi game nữa không).

Vấn đề bị mất dữ liệu (roll back <==)

Một số người chơi bị mất tiến độ (bị quay ngược thời gian mất level, đồ đạc) là do chúng tôi đã khóa nhân vật của các bạn tương ứng với từng khu vực nhất định. Ví dụ nếu bạn chọn máy chủ ở NA thì nhân vật của bạn sẽ tương ứng cơ sở dữ liệu ở Mỹ (tất nhiên rồi hihi). Trong quá trình khắc phục lỗi, chúng tôi đành phải bảo vệ hệ thống và hi sinh thành quả của vài khách hàng, nếu khách hàng đó lỡ bước vào vùng cấm thì đành phải chịu thiệt hại.

Chúng tôi hiểu được cảm giác đau đớn khi nhân vật bị mất thời gian tiến hóa, bị mất các món đồ giá trị nhưng mong các bạn hãy hiểu cho chúng tôi một cách sâu sắc. Trong tương lai, xin cam đoan với các bạn là sẽ không xảy ra tình trạng bị mất dữ liệu của nhân vật nữa (mà xảy ra thì xin lỗi tiếp thôi chứ éo có đền bù gì đâu nhé).

Vậy chúng tôi sẽ làm gì ngay bây giờ?

:: Giới hạn tỷ lệ
Chúng tôi sẽ giới hạn các tham số hoạt động của từng người chơi. Nói dễ hiểu hơn tức là sẽ giới hạn thời gian thoát game và quay trở lại của nhân vật. Ví dụ bạn đang farm con cùi bắp Pindleskin (cái con mà éo có drop mẹ gì mà đứa nào cũng khoái farm gây nên quá tải phần kết nối) thì thời gian đề quay lại sẽ trong 20 giây. Trong trường hợp này bạn sẽ bị giới hạn bởi thông báo lỗi (như một cách hạn chế việc quá nhiều kết nối nhiễu loạn tại một thời điểm). Xin lưu ý là giải pháp này chỉ là tạm thời thôi, sau này sẽ trở lại bình thường như cũ.

:: Xếp hàng để đăng nhập
Vâng bạn không hề nghe nhầm đâu, chúng tôi sẽ áp dụng kỹ thuật có từ 'World of Warcraft'. Các bạn sẽ phải xếp hàng đợi đăng nhập vào trò chơi lúc cao điểm (queue). Đây là giải pháp tối ưu nhất để tạm thời giải quyết việc quả tải bởi số lượng đăng nhập khổng lồ (dù gì tiền cũng đã thu trước rồi, chúng tôi sẽ giải quyết từ từ).

Cuối cùng có vài dòng tâm sự...

Trong đội ngũ vận hành D2R, đa phần là những người là fan trung thành của trò chơi từ năm 2001. Hơn ai hết, chúng tôi luôn làm việc với cái tâm sâu như trời biển (tất nhiên tiền lương và thưởng đợt này phải xứng đáng không là chúng tôi nghỉ đầu quân cho Valve).

Không những sửa được lỗi tải mà chúng tôi còn mang lại thêm nhiều nội dung giá trị xứng đáng với một huyền thoại hút máu đỉnh cao.

Xin cám ơn các fan.

Có thể thấy cộng đồng Diablo 2 chưa từng nguôi ngoại cảm xúc chặt chém mà game mang lại suốt từng ấy năm. Đứa con ghẻ luôn được yêu thương hết mực như thế, lại bị hắt hủi bởi chính gia đình của nó liệu có đáng? Xem thêm các livestream game trên twitch hoặc youtube nhé.

lời nhắn nhủ

Cảm ơn bạn đã để lại Trí Khôn nơi tăm tối này! Chúc một ngày với tốt lành đến với bạn và người thân!

Mới hơn Cũ hơn