슈퍼마리오 멀티플레이어 개발 후기

coolspeed

왓 스튜디오 팀 합류 과제로 게임제작 미션을 받았다.

나는 과제로 “슈퍼마리오 멀티플레이어 게임”을 만들었다:

EnemyCD.gif

과제 결과물을 왓 스튜디오의 허락을 받고 소스코드를 Github 에 공개하였다:

https://github.com/coolspeed/MarioMultiplayer

관심 있으신 분들은 별표 하나씩 찍어 즐찾해주시길 부탁립니다.

게임 룰: 위의 GIF 움짤  그대로. 먼저 상대방을 밟는 쪽이 이긴다.

 

과제가 1차, 2차로 나뉘는데 1차에서는 싱글 플레이어 슈퍼마리오를 만들었고 2차에서는 그것을 멀티플레이어 게임으로 발전시켰다.

최종 클라 Java (Processing) 1500 줄, 서버 C# 22줄로 짜여졌다.

클라

Processing 으로 만들었다. 왜?

  1. Processing 이 좋아서. (유쾌한 시각적 프로그래밍)
  2. Unity 쓸줄 몰라서.
  3. 다른 엔진도 쓸줄 몰라서.
  4. 엔진부분이 더 재밌어서.
  5. 웹에다 배포하고 싶어서. (P5.js 를 통하여. 하지만 망했다. 그냥 일반 Processing 애플리케이션처럼 exe 파일로 빌드했다.)

서버

단순한 릴레이 서버.

big_mirror.png

넷코드

ZeroMQ 를 네트워크 라이브러리로 사용했다.

Continue reading

블록체인 관련 TED 강연 3선

블록체인이 무엇일까요? 아직 알지 못한다면 아는 것이 좋을 것이고, 안다고 해도 실제 운영 방식에 대한 자세한 설명이 도움이 될 것입니다. 돈 탭스콧이 인터넷의 두 번째 세대를 표방하며 돈과 경제, 정부와 사회를 변화시킬 잠재력을 가진 신뢰 구축 기술의 비밀을 밝힙니다.


모든 걸 바꾸게 될 분산적인 경제 제도인 블록 체인과 인사하세요. 이 복잡하고 혼란스러운 과학 기술을을 명료하게 설명하는 베티나 워버그는 인간의 역사만큼 오래된 상업과 재정 활동을 보다 흥미로운 것으로 변하게 할 블록체인(교환 가치를 위한 분산적이고 투명성이 보장되고 자동화된 제도)이 거래를 용이하게 하는 은행과 정부 같은 중앙집권적 기관에 대한 우리의 필요를 어떻게 사라지게 하는 지에 관해 설명합니다.


우리가 물건을 매매하는 방식이 바뀌고, 은행과 환전소가 없어도 되는 세상이 온다면 어떨까요? 비트코인이나 이더리움과 같은 암호화 전자 화폐가 보편화되면 미래에 이런 급격한 변화가 일어날 수 있습니다. 아직 그런 세상이 도래하진 않았지만, 이 재기 넘치는 강연을 통해 디지털 화폐 연구자 네하 나룰라는 화폐의 집단 허구에 관해 설명하면서, 지금과는 사뭇 다른 미래를 제시합니다.

어찌됐든 그대여 가장 소중한 것을 이 세상에 선사하소사

전에 중국 인터넷 언론 Jiemian 이 Smartisan 사의 OpenSSL 기부를 보도한 글을 번역한 적 있다:

<보이지 않는 전우>

오늘에야 당시 이 글이 중국 테크 업계에 일으켰던 광범위한 논란과 치열했던 논쟁들을 다수 읽게 되었다. 그리고 OpenSSL 하트블리드 사태 당시 해외 커뮤니티와 언론사들에서 일었던 광범위한 논쟁들을 읽게 되었다.

중국내 논란이나 전세계적인 논란이나, 상상 가능한 모든 범위를 커버했던 것 같다. 보도자료의 디테일의 진실성부터 언론의 정신이며 OpenSSL 재단의 재무 상황이며 모금의 어려움이 확대보도됐는지 여부며 유사 프로젝트들과 비교했을 때 OpenSSL 의 영향력이 과대평과됐는지 여부며 OpenSSL 의 문제는 돈인가 관리인가 논쟁이며 OpenSSL 의 코드가 쓰레기인지 여부며 OpenSSL 이 어떻게 영향력 다른 말로 점유율을 얻은것인지며 대형 사이트들 다른말로 큰회사들이 암호학 라이브러리를 선정하는 프로세스가 어떻게 되어있는가며 OpenSSL 이 취약점을 발표한 프로세스며 오픈소스 생태계 대토론이며 소프트웨어경제학과 보안의 관계며 심지어 다양한 버전의 음모론들까지…

결론적으로 리써치한 내용이 훨씬 늘어났고, 견식도 많이 늘었음에도 나는 이 글을 번역했던 것이 (다른 말로 이런 내용의 전파에 크진 않지만 힘을 보탰던 것이) 후회스럽지 않다.

끝내며,

사건 당사자, Smartisan 창업주이자 CEO 인 나영호씨가 대응글에서 인용한, 테레사 수녀가 콜카타 고아원에 써준 시를 재인용한다.

그대가 친절하면
사람들은 그대가 이기적이고 속셈이 음흉하다고 말할 수 있다
어찌됐든
그대여 친절하소사

그대가 성실하고 솔직하다면
사람들은 그대에게 사기치고 등골 빼먹을 수도 있다
어찌됐든
그대여 성실하고 솔직하소사

그대가 다년간 심혈을 쏟아 건설한 물건이
사람들에게 하루밤사이에 파멸당할지도 모른다
어찌됐든
그대여 건설하소사

그대가 오늘 한 선행이
내일이면 사람들에게 잊혀질지도 모른다
어찌됐든
그대여 선행을 하소사

그대가 가장 소중한 것을 이 세상에 바쳤을지언정
그것이 그대로 하여금 감사의 마음을 받게 하기에는 역부족일지도 모른다
어찌됐든
그대여 가장 소중한 것을 이 세상에 선사하소사

사람들은 왕왕 도리를 따지지 않고 비논리적이고 자기중심적이니라
어찌됐든
그대여 그들을 용서하소사

(끝)

프로그래밍의 특급 비밀

coolspeed

This book has a lot of knowledge in it, but it is mainly about expertise. It is going to try to teach you the things about Unix development that Unix experts know, but aren’t aware that they know.
– Eric S. Raymond, “The Art Of UNIX Programming”

벤처캐피탈 업계에는 이런 역학이 존재합니다: 최고로 잘한 투자는 수익이 나머지 모든 투자 수익의 합보다 많다. 나머지중 최고로 잘한 투자는 나머지 모든 투자 수익의 합보다 많다.

프로그래밍에도 비슷한 역학이 존재합니다.
프로그램은 90%의 실행시간을 10%의 코드 실행에 소모합니다.[1]

이것을 통해 우리는 놀라운 추론을 해낼 수 있습니다.
시스템을 성능이 낮지만 생산성이 좋은 언어로 짜고, 그중 10% 의 핫스팟만 찾아내 C++ 로 짜면 끝.

실제로 (일부) 천재 프로그래머들은 시스템을 어떻게 설계했을까요?

1. YouTube

검색창은 Go 프로그램. 웹 애플리케이션 서버는 느린 Python 으로 짰습니다.

2. GitHub

“GitHub” 의 “Hub” 은 느린 Ruby on Rails 이고, “Git” 은 C.

3. Instagram

사진 저장은 Amazon S3 (네이티브 코드 예상). 웹 프런트는 C코드 (NginX). 데이터베이스는 C (PostgreSQL).
웹 애플리케이션 서버는 Django (Python).

4. Uber

DB: C++(MySQL)
Index: C (Redis)
애플리케이션: Javascript

Continue reading

오픈소스 네트워크 라이브러리 일람

1. Century

coolspeed 가 만든 Go 언어 네트워크 라이브러리 입니다:
https://github.com/coolspeed/century

이것이 1등입니다. 그냥 말이 필요 없습니다 ( __ __)

2. Skynet

https://github.com/cloudwu/skynet/graphs/contributors

C 언어와 lua 로 된 네트워크 라이브러리.
중국 게임 업계 제일 유명한 스타 개발자인 cloudwu 가 개발한 네트워크 라이브러리 입니다.
아직도 활발하게 개발 중이네요. Pull Request 도 활발하나 봅니다.

천하의 netty 가 github 에서 별표 7000개인데, Skynet 이 무려 4000개.

3. Netty

Java 네트워크 라이브러리.
한국인이 개발하고 (게임 업계 포함하여) 전 세계 개발자들이 추앙하는 네트워크 라이브러리인데  정작 한국에서는 많이 안쓰이는?

https://github.com/netty/netty

4. SuperSocket

C# 네트워크 라이브러리.
중국인이 만들었는데 한국 게임 업계에 많이 쓰이는..

https://supersocket.codeplex.com

5. Boost.ASIO

C++ 슈퍼천재(괴짜)들이 만든거라 워낙 웰메이드. 사용도 쉽고.
언뜻만 보기에도 탑 솔루션인데, C++ 17 표준에 포함된다는게 거의 확정이라 (개인적으로 80%확률일거라 봄) 가장 핫하다고 볼 수 있지 않을까요.

Continue reading

600억 값어치 해킹으로 이더리움(Ethereum) 가격 폭락

비트코인 유사한 인터넷 가상 화페 이더리움(Ethereum)의 가격이 해킹 사건으로 폭락했다.

이더리움 단위당 가격은 최고기록 $21.5 달러로부터 불과 몇시간 내에 $15 달러까지 곤두박질 쳤다. 바로 $5천만 달러 값어치의 해킹 절도 사건 때문이었다. [1]

gettyimages-149818149.jpg

이더리움 개발자들은 이 해커가 절도한 가상화페의 사용을 방지하는 핫픽스(fork)를 제안하고 있는 중이다.

이더리움은 비트코인과 유사한 탈중앙화 화페이다. 비트코인과 다른 점이라면 그것의 블락체인 위에서 화페 외에도 탈중앙화 조직이란 기능과 Smart Contracts 기능을 제공할 수 있다는 점이다.

이상은 최대한 간단한 소개성 기사이고, 기술적으로 보다 정확이 말하자면 Ethereum 블락체인 (네트워크) 자체는 그 어떤 취약점도 발견되지 않았다.

취약점이 발견되어 이용당한 것은 이더리움 플랫폼 위의 애플리케이션(DApp, aka, Decentralized App) The DAO 이다. 본 블로그에서는 일전에 <크라우드펀딩의 새로운 역사> 란 제목으로 해당 프로젝트를 소개한 적이 있다.

hour_cryptocompare_index_eth_usd_168_11466160967350

The top graph shows the value of ether in US dollars, while the second shows the volume of transactions on the network over time. — CryptoCompare

Continue reading

요즘 쿨한 프로그램은 다 Go 로 짠다며? Ethereum & IPFS 소개

첫번째로 소개할 놈은 Ethereum 이다.

자 Bitcoin 얘기는 다 빼고..

Ethereum 프로젝트는 이더리움을 (발음은 사실 무음 자음 (청자음) 으로 /이시리움/ 에 가깝지만)

The World Computer 이라고 소개한다.

프로그래머 커뮤니티에 대한 소개글에 알맞는 소개는 아래와 같은 형태가 되겠다:

자 역시 HLLVM (High-Level Language Virtual Language) 얘기 역지 집어치우고 최대한 간단하게 소개하자면:

얘는 전 세계적으로 싱크되는 가상 머신이다. 바이트코드는 인스트럭션 수에 따라 돈을 내야 한다.

장점은 뭐냐? 말 그대로 월드 컴퓨터라는 점. (SUN 의 옛날 드립을 생각해보자: The Internet is a computer.)

단점은 뭐냐? 비싸다.

그럼 누가 이런 컴퓨터를 쓸 것인가? 아직 자세히는 아무도 모른다. 커뮤니티는 이 “월드 컴퓨터”의 장점이 전세계적 싱크인 ‘권위성’ 인 만큼, 소유권 등록 (이를테면 지적 소유권 등록) 등 지리적, 정치적 경계를 넘는 범세계적인 정보 등록에 사용될 포텐을 크게 보고 있다.

Continue reading