[기타]정말 궁금해요....
간만에 또 염치불구하고 사정없는 질문의 글을 올립니다 ^^;
일단 제가 작업중인 파이썬 머드는 한달여의 기간이 지났음에도 아직 걸음마 수준에 머물러 있구요 ㅠㅜ...역시나 프로그래밍이란놈을 첨 접하는만큼(머드제작도 처음이니..) 그 궁금증과 막힘의 고통이 얼마나 큰지 ㅋ...
일단은 아이템,몹,사냥등의 게임 이랄 수 있는 모든 기능은 시작도 안했습니다.....
현제로서는 채팅서버정도랄수 있을정도의 기능만 작업중이거든요..
어제밤늦게(?)까지 테스트와 수정을 거쳐 어느정도의 안전성(??)을 확보한 기능은...
-잡담,
- 말,
- 이야기,
- 누구(접속중인유저목록),
- 유저정보(누구+접속자의 IP주소-나중에 운영이상급이 쓸 수 있는 명령어),
- 저장,
- 케릭 종료시 저장,
- 렙업(일단 사냥이 아직 구현 안된관계로 '렙업'이런 명령어로 대체.캐릭의 레벨업.)
- 비정상종료시(예를들면 머드상에서'끝'을 입력하지 않고 클라이언트 종료)발생하는 케릭터의 잔상현상(비정상 종료하면 머드 서버에 포함되어 있던 케릭터의 정보가 지워지지 않고 남아있어서 잔상비스무리한 현상이 생기더군요.. 볼수도 있고 말을 걸수도 있고... ㅡㅡ;) 해결,
-간단한 로그파일(서버 실행,종료시,케릭의 접속,해제시,머드상에 접속해 있는 케릭으로 접속시도시 가드 역할과 로그파일에 이름,주소기록..),
-접속자(비정상종료시 잔상현상이 있는지를 알아보는 운영전용 명령어),
-점수(기본적인 케릭의 상태),
-정보(자세한 케릭의 상태),
-안시(잡담,이야기,일반적인 대화등에서 안시에 해당하는 코드(예:{빨,{노)사용으로 색사용가능),
등으로... (이게 다인가... 더 있는것도 같은데 ^^;)
기본적으로 머드에서 사용되는 채팅의역할을 하는 기능들은 어느정도 구현했다고 생각이 됩니다.(메세지보내기나 편지쓰기등은 아직... ^^;)
이제 도전해 볼 단계가 '틱'인것 같은데요...
파이썬에는 'time.sleep(t)'이란 명령어가 't'만큼 시간을 재우는 역할(t=10 이면 10초마다 신호) 을 하긴 하는데, 그걸 쓰면 시스템 전체가 '틱'의 영향을 받더군요..
그래서 다른 머드에서는 이 '틱' 기능을 어떤식으로 구현하는지 대략적인 정보좀 부탁합니다 ^^;(이 틱이, 사냥할때,자동저장할때,기타 등등으로 많이 쓰이더군요..)
일단 머릿속에서 이것저것 막 떠올르긴 하는데...(무한 루트 상에서 끊임없이 현제 시간을 확인하여 초단위로 변화할때 스위치를 껐다 켰다 하는등의.... 그런데 이것도 실험해보니 1초에서 2초로 변할때 아직 2초인 동안 스위치가 계속 켜지더군요...3초가 될때까지 ㅡ.ㅡ;)
그리고 무한루트상이라고 해도 끊임없이 시간을 체크하려면 메모리도 꽤 잡아먹을것 같구요...
두번째는 '월드'의 구성입니다.
다른 머드소스는 'C'언어인 관계로 제가 백치상태라 여기저기를 둘러봐도 감이 잡히질 않는군요..
기본적으로 '심플 월드 제네레이터'가 있긴 한데...(16K머드의 기본소스중 하나.)이걸로는 택도 없을것 같구요..
다른 머드에선 어떤식으로 구성하는지... 그리고 다른 파일에 지도 정보(일단의 '존'개념 정도..)를 기록하고 그걸 머드 실행시 읽어드려서 구성하는지 아니면 방마다 기록을 하나하나 해놓고 그걸 읽어드려서 조합하는지(잘 모르지만 방마다 기록하는방식을 쓰는것 같긴 하던데..) 감이 잘 안잡히네요.
'월드'구성에 따라 현제 소스의 전면적인 개정도 강행 할 생각입니다.(현제 '월드'에 맞춰서 이동명령('Move_leave','Move_enter')이 구성 되어 있거든요..일단 지금 상태의 월드 구성에대해 감이 잘 잡히지 않을뿐더러 그래서 '방향을 보는'(동 봐,광장 봐 등..)명령도 좀 구현하기 힘든실정이라서요 ^^;
아마도 월드구성부분에 막대한 시간과 노력을 투자해야 할 것 같은데...
여러분들이 조금 도와주세요 ^^:
파이썬 언어가 아니라도 상관 없습니다.
제가 도움을 부탁드리는게 소스가 아니라 구현 방식이거든요 ^^
위에 제가 구현해 본 기능들도 이건 이런식이면 좀 더 낫더라...등등의 생각들 있으시면 알려주시면 감사하겠구요 ^^;
이 클럽에 들러서 언제나 필요한 질문만 하고 가는 제가 얄미우시겠지만...
어느정도 현제 작업이 기반이 잡히면 저도 강좌를 한번 해 볼까 하고 생각중입니다.
물론 '파이썬'언어이지만.. 다른 머드 강좌하고는 조금 색다르게 '무'의 상태에서 머드를 구성하는 방법을 한번 논해 볼까 하구요..
파이썬에 대해 아무것도 몰라도 머드를 처음부터 따라 만들어보는 강좌..
-제가 이런 강좌 비스무리한 것도 없어서 한달동안 무지하게 고생했다는거 아닙니까 ㅋ
-'C'언어 로 제작된 머드라도 기초부터 알려주는 강좌는 찾아보기 힘든것 같구요..
-단순히 소스를 고치는걸로도 머드를 만들어 볼 수 있지만 이왕에 따라해 보는거라면 기초부터 따라 만들어 보는게 나중에 소스 개정할때도 더 도움이 될것 같구요, '프로그래밍'이란것에 조금 더 친숙해 지지 않을까요 ^^;
암튼 이상하게 여기에 글을 올릴때마다 길이 엄청 길어지는데... 읽어주시는분들 고생하시겠네요 ㅋ..
많은 분들의 도움을 간절히 바랍니다 ^^;
'소스'가 아니라 기본적인 작동방식...이 제가 필요로 하는 부분이랍니다.
그럼 염치불구하고 또 엄청(?) 긴 글을 올리고 저는 이만 물러가 보겠습니다...
모두 즐머~ & 즐작~!!
일단 제가 작업중인 파이썬 머드는 한달여의 기간이 지났음에도 아직 걸음마 수준에 머물러 있구요 ㅠㅜ...역시나 프로그래밍이란놈을 첨 접하는만큼(머드제작도 처음이니..) 그 궁금증과 막힘의 고통이 얼마나 큰지 ㅋ...
일단은 아이템,몹,사냥등의 게임 이랄 수 있는 모든 기능은 시작도 안했습니다.....
현제로서는 채팅서버정도랄수 있을정도의 기능만 작업중이거든요..
어제밤늦게(?)까지 테스트와 수정을 거쳐 어느정도의 안전성(??)을 확보한 기능은...
-잡담,
- 말,
- 이야기,
- 누구(접속중인유저목록),
- 유저정보(누구+접속자의 IP주소-나중에 운영이상급이 쓸 수 있는 명령어),
- 저장,
- 케릭 종료시 저장,
- 렙업(일단 사냥이 아직 구현 안된관계로 '렙업'이런 명령어로 대체.캐릭의 레벨업.)
- 비정상종료시(예를들면 머드상에서'끝'을 입력하지 않고 클라이언트 종료)발생하는 케릭터의 잔상현상(비정상 종료하면 머드 서버에 포함되어 있던 케릭터의 정보가 지워지지 않고 남아있어서 잔상비스무리한 현상이 생기더군요.. 볼수도 있고 말을 걸수도 있고... ㅡㅡ;) 해결,
-간단한 로그파일(서버 실행,종료시,케릭의 접속,해제시,머드상에 접속해 있는 케릭으로 접속시도시 가드 역할과 로그파일에 이름,주소기록..),
-접속자(비정상종료시 잔상현상이 있는지를 알아보는 운영전용 명령어),
-점수(기본적인 케릭의 상태),
-정보(자세한 케릭의 상태),
-안시(잡담,이야기,일반적인 대화등에서 안시에 해당하는 코드(예:{빨,{노)사용으로 색사용가능),
등으로... (이게 다인가... 더 있는것도 같은데 ^^;)
기본적으로 머드에서 사용되는 채팅의역할을 하는 기능들은 어느정도 구현했다고 생각이 됩니다.(메세지보내기나 편지쓰기등은 아직... ^^;)
이제 도전해 볼 단계가 '틱'인것 같은데요...
파이썬에는 'time.sleep(t)'이란 명령어가 't'만큼 시간을 재우는 역할(t=10 이면 10초마다 신호) 을 하긴 하는데, 그걸 쓰면 시스템 전체가 '틱'의 영향을 받더군요..
그래서 다른 머드에서는 이 '틱' 기능을 어떤식으로 구현하는지 대략적인 정보좀 부탁합니다 ^^;(이 틱이, 사냥할때,자동저장할때,기타 등등으로 많이 쓰이더군요..)
일단 머릿속에서 이것저것 막 떠올르긴 하는데...(무한 루트 상에서 끊임없이 현제 시간을 확인하여 초단위로 변화할때 스위치를 껐다 켰다 하는등의.... 그런데 이것도 실험해보니 1초에서 2초로 변할때 아직 2초인 동안 스위치가 계속 켜지더군요...3초가 될때까지 ㅡ.ㅡ;)
그리고 무한루트상이라고 해도 끊임없이 시간을 체크하려면 메모리도 꽤 잡아먹을것 같구요...
두번째는 '월드'의 구성입니다.
다른 머드소스는 'C'언어인 관계로 제가 백치상태라 여기저기를 둘러봐도 감이 잡히질 않는군요..
기본적으로 '심플 월드 제네레이터'가 있긴 한데...(16K머드의 기본소스중 하나.)이걸로는 택도 없을것 같구요..
다른 머드에선 어떤식으로 구성하는지... 그리고 다른 파일에 지도 정보(일단의 '존'개념 정도..)를 기록하고 그걸 머드 실행시 읽어드려서 구성하는지 아니면 방마다 기록을 하나하나 해놓고 그걸 읽어드려서 조합하는지(잘 모르지만 방마다 기록하는방식을 쓰는것 같긴 하던데..) 감이 잘 안잡히네요.
'월드'구성에 따라 현제 소스의 전면적인 개정도 강행 할 생각입니다.(현제 '월드'에 맞춰서 이동명령('Move_leave','Move_enter')이 구성 되어 있거든요..일단 지금 상태의 월드 구성에대해 감이 잘 잡히지 않을뿐더러 그래서 '방향을 보는'(동 봐,광장 봐 등..)명령도 좀 구현하기 힘든실정이라서요 ^^;
아마도 월드구성부분에 막대한 시간과 노력을 투자해야 할 것 같은데...
여러분들이 조금 도와주세요 ^^:
파이썬 언어가 아니라도 상관 없습니다.
제가 도움을 부탁드리는게 소스가 아니라 구현 방식이거든요 ^^
위에 제가 구현해 본 기능들도 이건 이런식이면 좀 더 낫더라...등등의 생각들 있으시면 알려주시면 감사하겠구요 ^^;
이 클럽에 들러서 언제나 필요한 질문만 하고 가는 제가 얄미우시겠지만...
어느정도 현제 작업이 기반이 잡히면 저도 강좌를 한번 해 볼까 하고 생각중입니다.
물론 '파이썬'언어이지만.. 다른 머드 강좌하고는 조금 색다르게 '무'의 상태에서 머드를 구성하는 방법을 한번 논해 볼까 하구요..
파이썬에 대해 아무것도 몰라도 머드를 처음부터 따라 만들어보는 강좌..
-제가 이런 강좌 비스무리한 것도 없어서 한달동안 무지하게 고생했다는거 아닙니까 ㅋ
-'C'언어 로 제작된 머드라도 기초부터 알려주는 강좌는 찾아보기 힘든것 같구요..
-단순히 소스를 고치는걸로도 머드를 만들어 볼 수 있지만 이왕에 따라해 보는거라면 기초부터 따라 만들어 보는게 나중에 소스 개정할때도 더 도움이 될것 같구요, '프로그래밍'이란것에 조금 더 친숙해 지지 않을까요 ^^;
암튼 이상하게 여기에 글을 올릴때마다 길이 엄청 길어지는데... 읽어주시는분들 고생하시겠네요 ㅋ..
많은 분들의 도움을 간절히 바랍니다 ^^;
'소스'가 아니라 기본적인 작동방식...이 제가 필요로 하는 부분이랍니다.
그럼 염치불구하고 또 엄청(?) 긴 글을 올리고 저는 이만 물러가 보겠습니다...
모두 즐머~ & 즐작~!!
4Comments
혼
2004.06.20(일) 오후 02:23:15
질문이 너무 길어서 틱부분 읽다가 -_- 그냥 틱부분만 답변 하고 갑니당
저도 잘은 모르지만 제가 봐온 머드에서는
틱 구현을 머드를 띄워줄때 데몬으로 띄워줘서
일정시간마다 함수를 불러주도록 무한 루프를 만들어주는걸로 압니당.
머드 띄울때 그 함수 한번 불러주고 그 함수 마지막 부분에 몇초 뒤에 또 이 함수를 실행해라
이런 명령어로 하면 무한루프가 되겠죠
저도 잘은 모르지만 제가 봐온 머드에서는
틱 구현을 머드를 띄워줄때 데몬으로 띄워줘서
일정시간마다 함수를 불러주도록 무한 루프를 만들어주는걸로 압니당.
머드 띄울때 그 함수 한번 불러주고 그 함수 마지막 부분에 몇초 뒤에 또 이 함수를 실행해라
이런 명령어로 하면 무한루프가 되겠죠
Raven
2004.06.20(일) 오후 05:43:31
월드 구성은... Circle이나 Smaug에서는 로딩은 '존' 단위로 하되, 실제 각 '방'의 연결은 그 각각의 방이 연결정보를 가지고 있는 것으로 합니다. Mordor에는 '존'이라는 개념 없이 오로지 '방'만... ^^;
'존' 자체가 모든 방의 연결 상태를 알고 있는 것은 아닙니다.
'존'이 가지는 정보는... 리젠 시간, 날씨 변화 정도의 아주 적은 양입니다.
틱 같은 경우는 별도로 Thread 하나를 띄워서 백그라운드에서 시간만 처리하게 만들거나, 머드의 메인 루프 부분에서 매번 시간을 체크하는 부분을 따로 만들어줘야 합니다.
어차피 머드 자체도 '루프'로 돌아가기 때문에 어쩔 수가 없겠더군요. ^^;
그리고 대부분의 머드 엔진이 그런 방식을 씁니다.
맨 처음 머드가 가동 될 때, 현재 시스템 시간을 변수에 저장해놓은 다음...
다음번에 시간을 체크할 때 현재 시스템 시간과 처음에 저장해둔 시간의 차이가 일정 시간 이상이라면,
특정 함수나 메소드를 호출하면 되겠죠.
저 같은 경우는 예전의 소스에서 편법으로 한번 구현해 본적은 있었는데 아무래도 영... ^^;
지금은 처음부터 다시 만들고 있어서 틱 부분을 어떻게 할지 따로 구상해봐야겠습니다.
'존' 자체가 모든 방의 연결 상태를 알고 있는 것은 아닙니다.
'존'이 가지는 정보는... 리젠 시간, 날씨 변화 정도의 아주 적은 양입니다.
틱 같은 경우는 별도로 Thread 하나를 띄워서 백그라운드에서 시간만 처리하게 만들거나, 머드의 메인 루프 부분에서 매번 시간을 체크하는 부분을 따로 만들어줘야 합니다.
어차피 머드 자체도 '루프'로 돌아가기 때문에 어쩔 수가 없겠더군요. ^^;
그리고 대부분의 머드 엔진이 그런 방식을 씁니다.
맨 처음 머드가 가동 될 때, 현재 시스템 시간을 변수에 저장해놓은 다음...
다음번에 시간을 체크할 때 현재 시스템 시간과 처음에 저장해둔 시간의 차이가 일정 시간 이상이라면,
특정 함수나 메소드를 호출하면 되겠죠.
저 같은 경우는 예전의 소스에서 편법으로 한번 구현해 본적은 있었는데 아무래도 영... ^^;
지금은 처음부터 다시 만들고 있어서 틱 부분을 어떻게 할지 따로 구상해봐야겠습니다.
혼
2004.06.20(일) 오후 06:09:57
HanLP 는 시간체크로 안하고..
그냥 함수 내용에 콜아웃으로 그 함수를 일정시간뒤에 다시 불러주게 해서...
그 함수가 계속 돌아가는데 @_@
아래의 메인함수를 머드가 시작될때 한번 실행해줌
int main(){
....틱에 관한 소스들....
....x초뒤에 main 함수 호출 내용....
소스의 끝
}
HanLP 가 아니라 ㅡㅡ;; HanLP계열 머드에서 틱 쓴 머드를 본거임..
그냥 함수 내용에 콜아웃으로 그 함수를 일정시간뒤에 다시 불러주게 해서...
그 함수가 계속 돌아가는데 @_@
아래의 메인함수를 머드가 시작될때 한번 실행해줌
int main(){
....틱에 관한 소스들....
....x초뒤에 main 함수 호출 내용....
소스의 끝
}
HanLP 가 아니라 ㅡㅡ;; HanLP계열 머드에서 틱 쓴 머드를 본거임..
Raven
2004.06.20(일) 오후 06:57:55
LPC는 일단 '기본언어'가 아니니까요... call_out도 내부적으로는 시간 체크로 갈거라고 생각됩니다. ^^;
코멘트를 삭제할 비밀번호를 입력하세요.
정회원 이상만 코멘트 쓰기가 가능합니다.
총 게시물 955개 / 검색된 게시물: 955개
글번호 | 제목 | 작성자 | 조회수 | 좋아요 | 싫어요 | 작성일 | |
---|---|---|---|---|---|---|---|
[기타]질문 답변 외 글은 자유 게시판에 올려 주세요... | 머드클럽 | 4392 | 0 | 0 | 2004-01-01 | ||
395 | [mordor] 솔라리스에서의 머드구동 관련 [1] | 이유상 | 1797 | 0 | 0 | 2004-06-27 | |
394 | [기타] 로봇 돌리는법, ㅠㅠ, [2] | 웁스우웁스 | 2160 | 0 | 0 | 2004-06-26 | |
393 | [기타] 다운로드 클릭이 안되여~ [1] | 김도현 | 2024 | 0 | 0 | 2004-06-24 | |
392 | [기타] 자꾸 메일이 왔다고하는데. [1] | 주사진 | 1725 | 0 | 0 | 2004-06-22 | |
391 | [기타] 서버 리붓관련인데요. [1] | 주사진 | 1949 | 0 | 0 | 2004-06-22 | |
390 | [기타] '틱'에 관해 질문!! [7] | Jero | 2606 | 0 | 0 | 2004-06-21 | |
389 | [기타] muhan13.tgz 에서 startm컴파일 관련요. [1] | 주사진 | 2139 | 0 | 0 | 2004-06-20 | |
388 | [기타] 정말 궁금해요.... [4] | Jero | 2130 | 0 | 0 | 2004-06-20 | |
387 | [기타] 혹시 pclink에서 상용화돼었던 시간여행자에 대해서;; 소식을 아시는분 있나요 [1] | 양은철 | 2147 | 0 | 0 | 2004-06-18 | |
386 | [hanlp] 마군님의 에디터에서 [4] | 혼 | 1761 | 0 | 0 | 2004-06-16 | |
385 | [기타] 요새도 제3의눈 계정 주네요 =.= | 데모닉 | 2011 | 0 | 0 | 2004-06-14 | |
384 | [기타] 처음부터 만들어 볼수있게 도와주세요~ [6] | 이동호 | 1779 | 0 | 0 | 2004-06-12 | |
383 | [hanlp] 작년에 섭닫아버린 {환상의지대} 게속하고 싶은데... [1] | 전신 | 2004 | 0 | 0 | 2004-06-12 | |
382 | [기타] 쥬라기공원하드코어 텔넷 주소좀 가르쳐주세요 [1] | 김용희 | 2061 | 0 | 0 | 2004-06-05 | |
381 | [기타] 운영자님!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! [2] | 데모닉 | 2020 | 0 | 0 | 2004-06-05 | |
380 | [기타] 파이썬 머드에 관한 질문입니다. [2] | Jero | 2861 | 0 | 0 | 2004-06-05 | |
379 | [기타] ytin과 배경안시 [2] | 탈퇴 | 2190 | 0 | 0 | 2004-06-03 | |
378 | [기타] 궁금해서요 [7] | 탈퇴 | 1926 | 0 | 0 | 2004-05-31 | |
377 | [circle] 시간의문에 대한 질문입니다. [2] | 시문 | 2208 | 0 | 0 | 2004-05-31 | |
376 | [기타] 안녕하세요 초보인데요 [1] | 이창희 | 1904 | 0 | 0 | 2004-05-31 |