옛날 텍스트 머드 를 윈도에서 '구현'해보려고 하는데요.

coolhex의 이미지

프로그래밍은 예전 도스에서 TC몇번 해본것밖엔 없구요.

대충 구상해보고 있는데 MFC로 구현이 가능한지 좀 알려주시면 고맙겠습니다.

일단 프로그램은 서버,클라이언트 두개로 돼있구요.

클라이언트쪽에서 방 이름이라던가 설명같은것들을 방의 고유번호를 이용해서 서버쪽에 요청하면 서버쪽에서 보내주고 클라이언트는 그것을 간단하게 그냥 뿌려주고, 나머지 전투라던지 그런것은 클라이언트쪽에서 작동하구요. 지금보고있는 책에서 네트워크프로그래밍은 소켓을 이용한 방법이 있어서 그것으로 네트워크관련은 구상해보고 있는데요.

지금 잘 구현이 될지 의문시 되는것은

1. 방 설명같은 데이터를 전송할때 서버쪽의 파일에서 읽어서 소켓방식으로 클라이언트에 전송하는데 큰 문제없이 잘 될런지와 더 나은 방법이 있는가.

2. 여러명이 같은 데이터를 요청할경우 서버쪽에서 파일제어가 잘 될런지 하는것.

이상입니다. 텍스트머드 해보셨던 분들은 잘 아시겠네요. 그럼 간단한 답변이라도 부탁드립니다.

* 아! Console 프로그래밍이 아니고 윈도우상에서 이뤄지는 머드프로그래밍입니다. (내부적으로는 큰 차이가 없겠지만서도요.)

착이의 이미지

파일을 사용하셔도 문제없이 가능하지만 데이터베이스를 이용해서 구현하는 것이 편하지 않을까요? >.<

is null?

dyaus의 이미지

기억이 오래됐지만..
mordor 는 Windows 버전이 있었던 것으로 기억합니다..

데이터 관리 방법은 여러가지가 있겠지만..
isam 같은 내장 db를 사용하는 것도 있고..
특정한 형식을 가진 text 파일을 이용하는 경우도 있고..
데이터파일을 전체 실행파일 build에서 binary로 변환하는 경우도 있습니다.

뭐..한가지씩 생각해보시는게 좋을실 듯 합니다.

kihongss의 이미지

아무래도 서버 프로그램 자체에서 사용자가 요청한 데이터를 내보내기 위해 파일 I/O가 빈번해 진다면, 사용자가 증가할수록 무리가 따르겠지요. 메모리가 허락한다면, 필요한 데이터들을 서버가 시작할때 미리 메모리에 읽어놓고 사용자가 요청할때 내보내는 식으로 처리하거나, 데이터들을 다른 DB서버로 분리해서 따로 관리하는것도 좋을듯 싶네요.

coolhex의 이미지

저도 데이터베이스를 생각해보긴했는데, 그 데이터베이스라는게 내부적으로 어떻게 돌아가는건가요?
'특별한 형식의 "파일"'아닌지..? 아니면 메모리? 아니면 두가지를 같이쓰나요?
그리고,
그 정보들을 모두 메모리에 읽어들일수 있을까요? 메모리의 '용량'에 대한 감이 없어서요. 텍스트파일로 몇메가정도 될텐데요.

* 아 그리고 mordor윈도우버전은 저도 해보긴했는데 돌아가긴하더군요. 근데 그것보단 본격적인 '윈도우'용 머드를 구현해보고싶어서요.

필요한건 만들어 쓰자.

죠커의 이미지

파일 방식이 잘 짜면 db를 사용한 것 보다는 더 빠릅니다. (어차피 db도 파일을 쓰고 있으니깐요.) 문제는 잘 짜면이라는 전제가 붙고 귀찮다는 것이지요. 대규모일 경우에는 잘 짜기가 더 힘든 일이 될 것입니다. 하지만 mud를 만드는데 심각하게 고려할 부분은 없을거라고 봅니다. 오히려 mud의 데이터가 관계형 db에 적합한지가 의문입니다. 대부분의 웹 사이트의 구현이 대부분 관계형 db와는 무관하듯 말입니다.

예전에 보았을 때 일반적으로 사용되고 있던 무한대전 류는 몇 메가 안되는 데이터를 가지고 있더군요. 1기가 시대로 가고 있는 요즘에는 그냥 메모리에 통채로 올려두고 중간중간 백업만 해주셔도 될것 같기도 합니다.

coolhex의 이미지

답변감사드립니다. 그렇게 복잡한 구조가 아닌이상 그냥 파일로 해도 될것같네요.

용량문제도 그냥 모두 메모리에 읽어들여도 큰 문제 없을것같구요.

근데 이제 네트워크관련 문제인데. 소켓이외에 다른 방법은 없는건가요?
(사실 '소켓'이란것도 정확히 이해하지 못하고 있습니다.)

필요한건 만들어 쓰자.

zelon의 이미지

으음... 가만히 생각해보니 '소켓' 이란거에 대한 정의를 저도 잘 모르고 있었네요 ^^;;; 늘 tcp/ip, udp/ip 만 생각하다보니 간만에 다시 찾아보니,

Quote:

소켓은 네트웍 상에서 클라이언트 프로그램과 서버 프로그램 사이의 통신 방법이다. 소켓은 "접속의 끝 부분"으로 정의된다. 소켓은 때로 소켓 API라고 불리는, 일련의 프로그래밍 요청이나 function call로 만들어지고 사용된다. 가장 보편적인 소켓 API는 버클리 유닉스 C 언어 인터페이스이다. 소켓들은 또한, 같은 컴퓨터 내에서 프로세스들 간의 통신에도 사용된다.

라고 terms.co.kr 에 나와 있군요. 하지만 일반적인 정의군요. 구체적으로 간다면 tcp 나 udp 를 쓰게 되실 거구요. 좀 어렵게 가려면 윈도우 환경에서는 DCOM 이라는 것도 있지만 제약사항도 좀 있고... 아마 일반적인 방법을 따라 tcp/ip 를 이용하심이 좋을 것 같습니다. ^^ 그리고 윈도우 프로그래밍이라면 http://www.devpia.com 에 좋은 자료가 아주 많을 듯...

-----------------------------------------------------------------------
GPL 오픈소스 윈도우용 이미지 뷰어 ZViewer - http://zviewer.wimy.com
블로그 : http://blog.wimy.com

coolhex의 이미지

답변감사드립니다.
많은 도움이 되었네요.

필요한건 만들어 쓰자.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.