phần 1
o79 o89o79
[Ai có ý nghĩ”Game maker chỉ làm được game offline chứ không làm được online” thì bỏ ngay cái đó khỏi trong đầu đi nhé.Bời vì sau khi đọc tut hướng dẫn này bạn sẽ có thể tự tạo cho mình một Game Online hoàn chỉnh.]
----------Những điều cần lưu ý để cho bạn đỡ nản khi làm game online.----------
Giải thích một số thuật ngữ sẽ sử dụng sau này
Giải thích một số thuật ngữ sẽ sử dụng sau này
Client và sever đều là 2 tập tin gmk.
-Client tương tự như cái file exe mà bạn hay vào game của các nhà phân phối để chơi ý.
-Sever (máy chủ) là file exe của bên họ,để họ quản lý kết nối, nghĩa là chỉ một máy được chọn làm máy chủ sẽ phải mở tập tin sever này, khi máy chủ đóng tập tin thì tất cả các người chơi sẽ không vào game được
-Client tương tự như cái file exe mà bạn hay vào game của các nhà phân phối để chơi ý.
-Sever (máy chủ) là file exe của bên họ,để họ quản lý kết nối, nghĩa là chỉ một máy được chọn làm máy chủ sẽ phải mở tập tin sever này, khi máy chủ đóng tập tin thì tất cả các người chơi sẽ không vào game được
SEVER
o55Làm game online rất rễ,nhưng cần hiểu kỹ nguyên lý(CSC:tý nói rõ sau)o20Bạn đang lo về sever, thường thường thì sever làm bằng Game Maker,nên phần cài đặt sever cũng đã quyen thuộc rồi.Sever thường phải chạy qua các phần mềm hỗ trợ như HAMICHI,TUNGLE, đừng lo,NamKute đã có giải pháp,mở sever như những công ty game online chuyên nghiệp và không bắt người chơi phải cài đặt những phần mềm rắc rối và bất tiện kia.
Đường truyền:FTP,VNPT,… thì BÌNH THƯỜNG.Còn Cáp Quang thì QUÁ TỐT.Mạng LAN thì vứt đi.(chỉ đối với SEVER thôi nhé chứ client và sever để test game thì vẫn được)
Lag:Nếu bạn biết cách truyền Dữ liệu tiết kiệm mức độ Lag sẽ là Kém,còn truyền lung tung,nhận lung tung thì sẽ Lag ngay lập tức.Ngoài ra cần kết hợp với Host DNS(host để người chơi không cần download phần mềm hỗ trợ) pro để giảm lag,DNS free vẫn có nhưng hơi lag một tý tẹo tèo teo.Nói cái này đừng buồn nha,sever game maker chứa đựng được 65536 client cùng một lúc trong một sever nhưng host DNS thì 32 client thôi à.Nên nếu muốn sever tốt thì nên liên hệ để đăng ký một DNS Proriêng,hoặc có thể tạo nhiều sever free cho người chơi chọn sever.
CLIENT
Làm bằng Game Maker.
Độ chậm ,nhanh của client là do client của bạn nặng hay nhẹ,còn tốc độ đường truyền là do mạng vàsever,không liên quan gì đến client cả.
Yêu cầu
1 máy online 24/24 cho 1 sever. Là mạng chính ,không được dùng máy là Mạng Lan.1 file .gmk mà sau đây tôi sẽ hướng dẫn các bạn tạo.
Lưu ý
Nếu có ăn cắp tài nguyên của game online khác làm game online của mình thì nên chỉnh sửa một chút và cũng đừng có lấy 100% tài nguyên của nó.Để nó không lôi mình ra tòa được.Bạn có thể mở sever và client trong cùng một máy để test game.
Trước khi làm được thì mình nghĩ các bạn nên hiểu mấy cái này trước và mình sẽ post tiếp tut phần 2 vào ngày tiếp theo,nhanh nhất có thể
Phần 2
Nguyên lý CSC (Client-Sever-Client)
CSC là "Client-Sever-Client" thể hiện các thao tác mà thông tin sẽ được truyền, hay nói cách khác là con đường mà thông tin di chuyển giữa các máy tính
Tuy gọi là Client-Sever-Client, nhưng đây là hai Clients khác nhau, của hai máy tính khác nau, hai người chơi khác nhau
Nguyên lý là như sau:
1.Client của người dùng gửi thông tin cho Sever
2.Sever nhận và truyền lại thông tin cho Client(có thể là client của mình hoặc cho client khác)
3.Client khác sẽ nhận thông tin từ sever và thực hiện những thông tin được truyền đó
Ví dụ : Người chơi A đăng nhập vào game.Sever nhận thông tin và truyền cho người chơi khác,
Client của người chơi nhận được thông tin từ sever(chỉ những client được nhận thôi) sẽ có nhiệm vụ tạo một obj_fake(object giả). obj_fake vừa tạo sẽ có đặc tính và vị trí ban đầu của người chơi A.Thế là ta đã thiết lập được 1 phần online nhỏ.Khi người Adi chuyển,tọa độ chuyển tới sever,sever chuyển tới người B tọa độ x,y đó và ở client người B ,obj_fake mang id của người Asẽ có tọa độ x,y mà người Avừa gửi.
Hình minh họa:
This image has been resized. Click this bar to view the full image. The original image is sized 920x400. |
Giải thích :
>Nhiều bạn tưởng rằng khi chơi game online thì mình có thể gặp bạn bè mình qua cái màn hình trực tuyến nhưng thật ra bạn đang lăng nhăng với cả đống obj_fake(nhân vật giả mạo) ở client bạn.Những obj_fake này có thông tin(tọa độ,tên,level,map đang ở...chẳng hạn) giống với những người ở bên kia đang gửi sang.Bạn đã bị những nhà làm game online lừa rồi.< Bây giờ đến lượt mình lừa những Player ngây thơ của mình.
o56o56o56
Giờ thì bạn đã hiểu nguyên lý này rồi chứ
Phần 3
Các loại gói dữ liệu chuyển và nhận
Vậy có những thể loại thông tin nào để truyền?
Xin thưa là có 3x2=6 loại.
1.Byte : cho phép truyền giá trị từ 0 đến 255 (thông tin truyên không vượt quá mức này thì nên dùng cái này cho nó giảm lag) [dữ liệu truyền là 1] ít
2.Short : giống cái trên nhưng từ -32768 đến 32768 [dữ liệu truyền là 2] bình thường
3.uShort : 0 đến 32768x2(tự tính nha) [dữ liệu truyền là 2] bình thường
4.int :-2147483648 đến 2147483648[dữ liệu truyền là 4] nhiều
5.uint :0 đến 2147483648x2[dữ liệu truyền là 4] nhiều
6.string:truyền tất cả các ký tự. [dữ liệu truyền là 1 cho mỗi ký tự nhé] quá quá nhiều.
[Với gói string các bạn nên thay bằng byte cho nó nhẹ.
Ví dụ :bạn muốn gửi ‘Tôi yêu NamKuteA nhiều lắm ‘ thì thay vào đó,bạn gửi byte là 22 chẳng hạn.rồi đặt một biến tương ứng.
If biến=22 thì string=‘Tôi yêu NamKuteA nhiều lắm ‘]
Các bạn hãy suy nghĩ và tính toán kỹ các gói để truyền cho game đỡ lag,vì mình nghĩ các bạn toàn dùng sever free nên phải tiết kiệm cái này.
o100Lưu ý :Không được đặt code truyền dữ liệu vào Step event,game bạn sẽ giật đó và chậm đóo123(vừa nãy mình nói là client không thể làm mạng lag được,nhưng mạng có thể làm client giật đấy,hãy lưu ý).Vàchỉ send dữ liệu khi cần thiết.
Không lăng nhằng nữa,hãy cài đặt thôi.ở phần 4 mình sẽ hướng dẫn và có example cụ thể.Mục đích post example sau cùng là để các bạn hiểu được cách làm thì làm sẽ dễ và không cần suy nghĩ và hỏi nhiều.
Phần 4
o110o110o110
Tạo Sever
Đã quá lâu kể từ khi phần 3 ra đời rồi đúng không và bây giờ là ngày phần 4 ra đời.Xin lỗi vì đã để các bạn phải đợi lâu.Bài ngày hôm nay sẽ hướng dẫn các bạn những bước đầu tiên khi tạo một sever.o110o110o110
Tạo Sever
Trước hết hãy down Engine được gắn ở file đính kèm.(Mỗi bài mới là bạn phải down 1 bản nhé,xóa bản củ đi cũng được,việc này mất mấy giây thôi)
Giải nén và bắt đầu mở file sever.gmk ra .
Bước 1:Mình muốn các bạn biết về cách khởi động những thứ cơ bản khi tạo một game online.o79
Bạn vào Scripts->scr_sever_init:
//Bắt đầu sever và tạo một cổng nhận thông tin chung gian
//Khởi động các biến Global(biến dùng cho toàn game)
globalglobaltemp;//cái này không cần quan tâm
//Biến để xác nhận địa chỉ tạo sever.
global.server_port = 50000;//Port giống như một cái phòng cho mọi người vào gặp nhau online.*
global.server_listening_socket = -1;//Đây có thể được coi là gói truyền thông tin cho mỗi client.*
global.server_accounts = 0;//Số người đã đăng ký
global.server_path = '';//*
//Thông tin truyền dữ liệu,Giúp bạn xem tần số truyền(/1 giây) và tổng dung lượng đã truyền.*
global.feedback_upload_per_second = 0;
global.feedback_download_per_second = 0;
global.feedback_upload_total = 0;
global.feedback_download_total = 0;
global.feedback_packet_total_sent = 0;
global.feedback_packet_total_received = 0;
//Bắt đầu 39dll và MyINI.dll.
//39dll là dll giúp bạn truyền thông tin giữa các client.Vẫn nhớ C-S-C chứ,thực ra là C-Dll-C
//MyINI.dll là một dll giúp bạn quản lý ini.
dllinit(0,true,true);
iniStart();
//Tạo một gói truyền thông tin cho mỗi client*
global.server_listening_socket = tcplisten(global.server_port,10,true);
//Phần dưới này chỉ để load thông tin từ ini để xem có bao nhiêu người đã đăng ký game của mình*
global.server_accounts = 0;//So nguoi da dang ky
global.server_path = working_directory + '/Server Configuration.ini';
if (file_exists(global.server_path) == false)
{
iniWriteReal(global.server_path,'Server Configuration','Accounts',0);
iniClearFile(global.server_path);
}
global.server_accounts = iniReadReal(global.server_path,'Server Configuration','Accounts',-1);
//Hết,mình sẽ viết tiếp bước 2.
Chú ý nhe:* là những thứ bạn không cần quan tâm hoặc muốn quan tâm thì sẽ được học ở phần sau vì nó không ảnh hưởng tới game mấy.Cứ để như thế và chạy game.
Vì mới chỉ Bước 1 nên các bạn thử chạy 1 sever và 2 client để thử chức năng online xem.Nếu bị đồi Ip thi nên nhớ 127.0.0.1 hoặc để trống là ip để test trên cùng 1 máy.
0 nhận xét:
Post a Comment