옛날 텍스트 머드 를 윈도에서 '구현'해보려고 하는데요.
글쓴이: coolhex / 작성시간: 목, 2005/02/10 - 3:18오후
프로그래밍은 예전 도스에서 TC몇번 해본것밖엔 없구요.
대충 구상해보고 있는데 MFC로 구현이 가능한지 좀 알려주시면 고맙겠습니다.
일단 프로그램은 서버,클라이언트 두개로 돼있구요.
클라이언트쪽에서 방 이름이라던가 설명같은것들을 방의 고유번호를 이용해서 서버쪽에 요청하면 서버쪽에서 보내주고 클라이언트는 그것을 간단하게 그냥 뿌려주고, 나머지 전투라던지 그런것은 클라이언트쪽에서 작동하구요. 지금보고있는 책에서 네트워크프로그래밍은 소켓을 이용한 방법이 있어서 그것으로 네트워크관련은 구상해보고 있는데요.
지금 잘 구현이 될지 의문시 되는것은
1. 방 설명같은 데이터를 전송할때 서버쪽의 파일에서 읽어서 소켓방식으로 클라이언트에 전송하는데 큰 문제없이 잘 될런지와 더 나은 방법이 있는가.
2. 여러명이 같은 데이터를 요청할경우 서버쪽에서 파일제어가 잘 될런지 하는것.
이상입니다. 텍스트머드 해보셨던 분들은 잘 아시겠네요. 그럼 간단한 답변이라도 부탁드립니다.
* 아! Console 프로그래밍이 아니고 윈도우상에서 이뤄지는 머드프로그래밍입니다. (내부적으로는 큰 차이가 없겠지만서도요.)
Forums:
파일을 사용하셔도 문제없이 가능하지만 데이터베이스를 이용해서 구현하는 것
파일을 사용하셔도 문제없이 가능하지만 데이터베이스를 이용해서 구현하는 것이 편하지 않을까요? >.<
is null?
기억이 오래됐지만..mordor 는 Windows 버전이 있었던 것으
기억이 오래됐지만..
mordor 는 Windows 버전이 있었던 것으로 기억합니다..
데이터 관리 방법은 여러가지가 있겠지만..
isam 같은 내장 db를 사용하는 것도 있고..
특정한 형식을 가진 text 파일을 이용하는 경우도 있고..
데이터파일을 전체 실행파일 build에서 binary로 변환하는 경우도 있습니다.
뭐..한가지씩 생각해보시는게 좋을실 듯 합니다.
아무래도 서버 프로그램 자체에서 사용자가 요청한 데이터를 내보내기 위해
아무래도 서버 프로그램 자체에서 사용자가 요청한 데이터를 내보내기 위해 파일 I/O가 빈번해 진다면, 사용자가 증가할수록 무리가 따르겠지요. 메모리가 허락한다면, 필요한 데이터들을 서버가 시작할때 미리 메모리에 읽어놓고 사용자가 요청할때 내보내는 식으로 처리하거나, 데이터들을 다른 DB서버로 분리해서 따로 관리하는것도 좋을듯 싶네요.
이어서 궁금한점입니다.
저도 데이터베이스를 생각해보긴했는데, 그 데이터베이스라는게 내부적으로 어떻게 돌아가는건가요?
'특별한 형식의 "파일"'아닌지..? 아니면 메모리? 아니면 두가지를 같이쓰나요?
그리고,
그 정보들을 모두 메모리에 읽어들일수 있을까요? 메모리의 '용량'에 대한 감이 없어서요. 텍스트파일로 몇메가정도 될텐데요.
* 아 그리고 mordor윈도우버전은 저도 해보긴했는데 돌아가긴하더군요. 근데 그것보단 본격적인 '윈도우'용 머드를 구현해보고싶어서요.
필요한건 만들어 쓰자.
파일 방식이 잘 짜면 db를 사용한 것 보다는 더 빠릅니다. (어차피
파일 방식이 잘 짜면 db를 사용한 것 보다는 더 빠릅니다. (어차피 db도 파일을 쓰고 있으니깐요.) 문제는 잘 짜면이라는 전제가 붙고 귀찮다는 것이지요. 대규모일 경우에는 잘 짜기가 더 힘든 일이 될 것입니다. 하지만 mud를 만드는데 심각하게 고려할 부분은 없을거라고 봅니다. 오히려 mud의 데이터가 관계형 db에 적합한지가 의문입니다. 대부분의 웹 사이트의 구현이 대부분 관계형 db와는 무관하듯 말입니다.
예전에 보았을 때 일반적으로 사용되고 있던 무한대전 류는 몇 메가 안되는 데이터를 가지고 있더군요. 1기가 시대로 가고 있는 요즘에는 그냥 메모리에 통채로 올려두고 중간중간 백업만 해주셔도 될것 같기도 합니다.
- 죠커's blog / HanIRC:#CN
그렇군요.
답변감사드립니다. 그렇게 복잡한 구조가 아닌이상 그냥 파일로 해도 될것같네요.
용량문제도 그냥 모두 메모리에 읽어들여도 큰 문제 없을것같구요.
근데 이제 네트워크관련 문제인데. 소켓이외에 다른 방법은 없는건가요?
(사실 '소켓'이란것도 정확히 이해하지 못하고 있습니다.)
필요한건 만들어 쓰자.
으음... 가만히 생각해보니 '소켓' 이란거에 대한 정의를 저도 잘 모르
으음... 가만히 생각해보니 '소켓' 이란거에 대한 정의를 저도 잘 모르고 있었네요 ^^;;; 늘 tcp/ip, udp/ip 만 생각하다보니 간만에 다시 찾아보니,
라고 terms.co.kr 에 나와 있군요. 하지만 일반적인 정의군요. 구체적으로 간다면 tcp 나 udp 를 쓰게 되실 거구요. 좀 어렵게 가려면 윈도우 환경에서는 DCOM 이라는 것도 있지만 제약사항도 좀 있고... 아마 일반적인 방법을 따라 tcp/ip 를 이용하심이 좋을 것 같습니다. ^^ 그리고 윈도우 프로그래밍이라면 http://www.devpia.com 에 좋은 자료가 아주 많을 듯...
-----------------------------------------------------------------------
GPL 오픈소스 윈도우용 이미지 뷰어 ZViewer - http://zviewer.wimy.com
블로그 : http://blog.wimy.com
답변감사드립니다.많은 도움이 되었네요.
답변감사드립니다.
많은 도움이 되었네요.
필요한건 만들어 쓰자.
댓글 달기