본문 바로가기

GameMaker강좌[GMS2]/네트워크강좌16

[게임메이커 강좌-네트워킹][GMS2] 멀티플레이어 게임 만들기-8-네트워크 연결 지연에 따른 설정(Ping) GAME MAKER 강좌 KAYAN      ◈ 네트워크 연결 지연에 따른 설정(Ping)  서버가 종료되거나, 클라이언트의 네트워크가 갑자기 예기치 않게 끊기거나, 오류가 발생해 통신이안 되는 경우, 또는 네트워크 회선이 좋지 않은 경우 등과 같이 정상적인 종료가 아닌 특수한 상황일 때는[네트워크 비동기 이벤트]가 발동이 되지 않습니다.이와 같은 경우 이벤트를 별도로 설정해주어야 합니다. 서버와 클라이언트 간의 네트워크 연결 지연(Ping)에 따른 설정을 구성해봅시다.먼저 클라이언트에서는 [Alarm 0 이벤트]에서 처리하도록 합시다.  ★ obj_client_system 오브젝트 - Create 이벤트 ★  alarm[0] = 1; //ping 체크ping = 0;   클라이언트 [Alarm 0 이벤.. 2024. 12. 25. (♡ )
[게임메이커 강좌-네트워크][GMS2] 멀티플레이어 게임 만들기-7-접속자 목록 GAME MAKER 강좌 KAYAN      ◈ 접속자 목록 강좌가 거의 끝나갑니다.이번에는 접속자를 표시해봅시다. (▲ 접속 참여자) 먼저, 서버에서 우측 상단 화면에 클라이언트의 이름을 표시하도록 합니다. ★ obj_server_system 오브젝트 - Draw GUI 이벤트 ★  var vw, vh; vw = display_get_gui_width( ); vh = display_get_gui_height( );  draw_set_font( font0 ); draw_set_halign( fa_left ); draw_set_valign( fa_top );  var _x, _y, _list, i, _user_id, n, c, t; _x = vw-180; _y = 16;  var w, h; w = 180;.. 2024. 12. 25. (♡ )
[게임메이커 강좌-네트워크][GMS2] 멀티플레이어 게임 만들기-6-플레이어의 공격 업데이트 GAME MAKER 강좌 KAYAN      ◈ 플레이어의 공격 업데이트 다음은 플레이어 공격에 관한 업데이트입니다. 플레이어 오브젝트의 공격 이벤트를 찾아 총알 생성 위치를 공유하도록 합니다. ★ obj_player_1 오브젝트 - Step 이벤트 ★  var inst; if reload == 0{ if keyboard_check_pressed( ord( "Z" ) ){  inst = instance_create_depth( x, y, depth, obj_bullet ); inst.direction = direction; inst.user_id = user_id;  reload = 1; alarm[1] = 10;  //---------- ▼ 생성 위치 공유 buffer_seek( global.net_b.. 2024. 12. 25. (♡ )
[게임메이커 강좌-네트워크][GMS2] 멀티플레이어 게임 만들기-5-서버와의 동기화 GAME MAKER 강좌 KAYAN       ◈ 서버와의 동기화  게임 실행 오브젝트(obj_game_stage)의 [Room Start 이벤트]를 추가하고, 클라이언트가 서버의 동기화 요청을 합니다. ★ obj_game_stage 오브젝트- Room Start 이벤트 ★  //클라이언트가 룸에 입장했을 때 서버와의 동기화 요청if global.select_server == 0{ //---------- 룸 오브젝트 갱신buffer_seek( global.net_buffer, buffer_seek_start, 0 ); buffer_write( global.net_buffer , buffer_u16, 2 ); //패킷 이벤트 번호 network_send_packet( global.client_socket,.. 2024. 12. 25. (♡ )
[게임메이커 강좌-네트워크][GMS2] 멀티플레이어 게임 만들기-4-클라이언트 GAME MAKER 강좌 KAYAN      ◈ 클라이언트 이번에는 클라이언트의 게임 설정을 해봅시다. 클라이언트 오브젝트에 [Create 이벤트]를 추가하고, 필요한 기능을 추가합니다.  서버와 마찬가지로 서버와의 통신을 위한 버퍼와, 다른 클라이언트의 정보를 저장할 맵 데이터 구조체를 생성하도록 합니다.그리고 서버에 연결을 시도합니다. ★ obj_client_system 오브젝트- Create 이벤트 ★  if !( variable_global_exists( "global.main_server_IP" ) ){ global.connect_IP = "127.0.0.1"; }if ( global.connect_IP == "" ){ global.connect_IP = "127.0.0.1"; } global... 2024. 12. 25. (♡ )