https://google.github.io/flatbuffers/ FlatBuffers Documentation flatbuffers는 효율적인 크로스 플랫폼 직렬화 라이브러리이다.C++, C#, C, Go, Java, JavaScript, PHP, Python을 지원한다. 이건 원래 구글이 게임 개발과 또다른 성능이 치명적인 프로그램을 위해 만들어졌다. 이것은 아파치 라이센스 v2 기반의 github 오픈소스로써 사용 가능하다. 왜 Flatbuffers를 쓰는가?parsing이나, unpacking 전에도, 직렬화 데이터에 접근 가능하다.메모리가 효율이 좋고, 빠르다.유연하다.경량 코드강한 타입 처리편리한 사용종속성 없는 크로스 플랫폼 코드 https://google.github.io/flatbuff..
동기화 기본목적모든 피어가 같은 결과를 얻게 하기 위함. 난제랜덤값 (시드 동기화)부동 소수점 실수 오차. 환경 변수어떠한 변수들을 동기화할것인가를 잘 결정지어야 한다.애니메이션 시스템에 영향을 주는 요소가, 커맨드 패턴으로 받는 변수 이외의 변수에 영향을 받는다면, 애니메이션 동기화는 불가능하다.또한 오브젝트간 충돌등의 물리처리가 중요하다면 이 것도 마찬가지로 관리해주어야 한다. 커맨드 패턴 사용서버가 난수까지 결정해서 주면 좋음.그럴러면 로직이 서버에 있는게 좋다.클라이언트는 결정지어진 결과값만 수신받아 표현한다라는 개념으로 가야 한다.티어간에 커맨드로 동기화를 하기 때문에, 동기화에 영향을 줄 임의 동작이 존재하면 안된다.동기화 적용 시점선동작 후보정액션성을 강조하기에 좋다.레이턴시가 클 수록 동작..
실시간 게임이라 하더라도, 내부적으로는 모든 게임의 구성은 턴으로 구성하는 것이 좋다. (실제 초당 n프레임 같은 개념에서 각 프레임은 턴과 같은 개념이기 때문이다.) 이 턴의 동작 주기를 입력, 렌더, 로직 등을 잘 구분지어 처리하는 것이 좋다. 예를 들면, 입력은 1초에 5번, 렌더는 1초에 30번, 로직은 1초에 5번 등의 턴 기준을 명확히 정해 쪼개 놓는 것이 좋다. 그래야 네트워크 동기화, AI 구현 등의 처리 규정을 명확히 세울 수 있다. 로직을 1초에 5번으로 규정을 짓는다면, 한턴은 200ms이고, 200ms동안 이루어진 로직의 변화는 묶어서 다른 클라이언트로 전송하고, 내 변화도 묶어두었다가, 다른 유저의 정보를 수신한 다음턴이 돌아올 때 처리하는 식으로 구성하면 된다. LOL의 경우에도..
▶ TCP/IP 프로토콜에서 사용하는 Port1) 가장 많이 사용되는 포트 : 0 ~ 10232) 예약된 포트 : 1024 ~ 491513) 동적, 사설 포트 : 49152 ~ 65535 ▶ 가장 많이 사용되는 포트 요약 (0~1023)키워드포트번호포트용도icmp8/tcp, 8/udp0/tcp, 0/udpUnassignedftp-data20/tcp, 20/udpFile Transfer [Default Data]ftp21/tcp, 21/udpFile Transfer [Control]ssh22/tcp, 22/udpSSH Remote Login Protocoltelnet23/tcp, 23/udpTelnetsmtp25/tcp, 25/udpSimple Mail Transferdomain53/tcp, 53/udpD..
ncftp http://www.ncftp.com/ 1] 리모트서버에서 파일 받아오기 ncftpget -u [아이디] -p [패스워드] [리모트서버주소] . [파일경로] 2] 리모트서버로 파일 올리기 ncftpput -u [아이디] -p [패스워드] [리모트서버주소] [저장디렉토리 경로] [로컬파일명] 3] 서브디렉토포함 전송/받기 ncftpget -R -u [아이디] -p [패스워드] [리모트서버주소] . [디렉토리경로] ncftpput -R -u [아이디] -p [패스워드] [리모트서버주소] [저장디렉토리경로] [로컬디렉토리명] [참고사항] - 테스트 결과 ncftpget에서 파일경로는 상대경로로 설정한다. ncftpput에서 저장디렉토리 경로는 상대경로로 설정한다. ncftpput에서 -R을 사용할경..
FTP Passive mode FTP 서버의 Passive 모드는 명령어 연결(Control connection)과 데이터 연결(Data Connection)을 분리해서 접속하는 방식이다. Active 모드 Active 모드는 클라이언트가 보내중 정보를 기준으로 서버에서 클라이언트의 Data 포트에 접속을 시도한 후 클라이언트의 요청에 따라 데이터를 전송하는 방식이다. 하지만 Ip 공유기등 사설 IP에서 접속을 시도할 경우 클라이언트의 Data 포트가 막힐 가능성이 있기 때문에 500 Illegal PORT command 와 같은 오류를 출력할 수 있다. 즉 명령은 전달이 되었지만 실제적으로 전송을 담당하는 데이터 포트가 막혀서 데이터를 전송 못할 가능성이 있다. 연결 과정 1. FTP 서버 IP xxx..
1. FTP 서버에 접속하기 ○ 방법 1 : ftp (도메인 네임) 혹은 (IP)를 입력한다. Ex) ftp ftp1.netscape.com ○ 방법 2 : ftp 후에 프롬프트가 “ftp>”로 뜨면 “open (도메인 네임) 혹은 (IP주소)” 를 입력한다. Ex) open ftp1.netscape.com ○ 프롬프트가 “ftp>”인 상태에서 여러 가지 명령을 입력할 수 있다. 2. 디렉토리(Directory) 보기와 바꾸기 ○ FTP 서버에서 자료는 디렉토리 구조에 따라서 정리되어 있다. 따라서 사용자의 컴퓨터에서처럼 디렉토리의 내용을 보거나 원하는 디렉토리로 바꾸는 등의 작업이 필요하다. 이 작업들은 “ftp>” 프롬프트 상태에서 “ls”명령어로 확인하고, ”cd” 명령 어를 사용하여 바꿀 수 있다..
홀 펀칭 (Hole Punching) - 정확한 명칭은 STUN (Simple Traversal of User Datagram Protocol Through Network Address Translators) 공유기라는 녀석이 라우터의 특성도 함께 가지고 있어 Routing Table 을 작성하기 위해 P2P 통신을 목적으로, 사전에 상대방과 패킷을 주고받고 하여 각자의 공유기에 Routing Table 을 작성하는 것을 [홀 펀칭]이라고 한다. Full Cone NAT 내부에 있는 호스트들의 모든 요청은, 모두 같은 외부 ip, port 로 맵핑된다. 더군다나 어떤 외부 호스트든 공인 IP가 맵핑된 패킷 보내기에 의해 내부 호스트로 패킷을 보낸다. Restricted Cone 목적지의 주소에 따라 NA..
- Total
- Today
- Yesterday
- SQLite Spy
- MS-SQL
- Rails
- TDD
- 임백준
- 게임데브포에버
- Ruby on Rails
- CppSQLite
- NDC2013
- c언어
- EzShortcut
- perfmon
- SDL
- TraceRoute
- 리버스 엔지니어링
- 멀티스레드
- 게임개발포에버
- 바로가기 프로그램
- svn
- 디버깅
- EasyExec
- 디자인 패턴
- ruby
- 엘키
- RoR
- 조엘 온 소프트웨어
- ftp
- 루비
- 좋은 프로그래머
- 루비 온 레일즈
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |