[기타]대력 총체적인 문제점....
member photo Jero 12 2,091 0 2004-05-24 14:29:13
0
12Comments
member photo
Jero 2004.05.24(월) 오후 02:35:54
아..참고로 제가 흉내내본 기능은..
-방
-방 이동
-소지품 보기,버리기,줍기(이 기능은 직 불안정 ^^)
-레벨업
-레벨당 능력 변화(레벨업시 랜덤하게 능력치 증가)
-몹잡기(간단하게 해 봤습니다.몹 경험치에 의해 레벨업과 소지품,아이템 증가도 구현)
-간단한 주문(무한대전뿐이 안해봐서 대략 따라해봤습니다. 귀환(40mp소모)도력반주문(마나 채워주는주문),완치 주문(600hp회복-현제 체력만큼-,50mp소모)
-처음 로긴화면(시작할때 기존플레이와 새로운 플레이를 고를수 있는데,저장하는 부분이 아직 안되서, 기존 플레이 할때는 처음 만든 캐릭뿐이 못쓰고,새로 시작해도 저장은 안됩니다 ^^;)


대력 이 정도 인데 많은 도움 부탁합니다..
지금은 눈앞이 캄캄하거든요 ^^

member photo
성천사 2004.05.25(화) 오후 11:55:05
현재 내가 어디있는지를 체크한다면... 다른방에 있는 물건을 가지는 문제가 해결되지 않을가요.
member photo
GrayRese 2004.05.28(금) 오전 02:32:06
현재 자신이 있는 방번호하고 만들어져있는 방번호하고 일치하면 싸바싸바 한다..
하면 안될까요-_-..
member photo
시유 2004.05.29(토) 오후 08:32:20
프로그래밍 10일 배우셔서 그렇게까지 만드셨다니 굉장하신거 같네요. 좋은 국산머드엔진을 기대하 보겠습니다
member photo
Raven 2004.05.30(일) 오전 02:11:23
드디어 함께 할 수 있는 사람이 나타난거 같군요. ^^
저도 Python으로 머드를 만드는 중입니다.
예전엔 Mordor 계열 머드를 가지고 C로 만들었는데, 지금도 많이 참고를 하고 있습니다.
그걸 참고해보면, 각 방은 출구(exit)를 가지고 그 출구 자체가 자신이 어디로 이어져 있는지를 가지고 있습니다. 좌표로 찍는 방식이 아니구요.
따라서 전체적인 구성을 보기에는 어렵지만, 현재 사용자나 몹이 있는 위치를 기준으로 판단하기는 쉽죠.

아, 그리고 유저 접속 받아서 처리하는건 어떤걸 쓰셨나요?
Select-Poll인가요, 아니면 Thread인가요?
전 Asyncore와 Asynchat을 사용하고있습니다. ^^
member photo
Raven 2004.05.30(일) 오전 02:17:27
제가 구성한 방법으로는 대략...
World -> Area(Zone) -> Room -> Creature(사용자, 몹), Exit, Object(아이템)
이런 구조로 되어있습니다.
MudDaemon이 떠있다가 사용자가 접속하면 해당 사용자를 UserChannel로 받고 그 UserChannel을 머드 상의 캐릭터인 User와 연결해준 다음, World와 연결시켜주어 플레이가 진행되는 방식이죠. ^^;
member photo
Raven 2004.05.30(일) 오후 05:25:37
좌표 방식을 쓴다면 처음부터 Zone의 크기나 구성을 정해놓고 시작하기 때문에 나중에 추가, 삭제가 어렵게 됩니다.
각 방마다 출구가 있어 그 출구가 어디로 이어지는지를 가지고 있으면 방이 새로 추가되어도 연결되는 방의 출구만 바꿔주면 되니 확장성이 높아지죠.
좌표 방식은 머드에서 안쓰는 걸로 알고 있습니다.
단지 방의 구분을 위해 방에 번호를 붙여놓긴 하죠.
member photo
Jero 2004.05.31(월) 오후 08:39:19
으름... 동지를 만나 반갑긴 한데 ^^;
넘 어려운 말씀만 하시지 말고 좀 풀어서 해주셔요 ^^;
시작한지 얼마 안되나서 ^^;
위에 말한거는요 혼자서만 할 수 있는 버전입니당 ^^;
너무들 큰 기대를 하시는건 아닌지 ㅎㅎ...
이제 일단 흉내내기는 스톱중이고, 유저를 받아서 처리하는 부분을 고민중이랍니다
그런데 당체 머드에 대해 겜만 할줄 알았지 아는게 없어서 어떻게 손을 대야 할까 고민중이에요 ^^;
자료 찾아보기도 힘들공 ㅎ
member photo
Jero 2004.05.31(월) 오후 08:42:11
일단은 Thread 를 사용하고 있는데요
Thread를 이용해서 여러가지 시험버전을 만들어 보고 있죵;;
텔넷모듈도 써보고 소켓모듈도 써보고;;
(텔넷과 소켓을 하나로 합치면 훨 간편할거 같긴 한데 ^^;)
생각했던 대로 잘 안되네요
그래서 답답하기만 하답니다
일단은 에코 서버를 만들어 놓고 머드 클라이언트로 접속하는방식부터 연구중이거든요
이과정이 그럭저럭 괜찮아지면 머드 서버쪽으로 옮겨볼라고요
아직 초보라 서버에서 이것저것 하는게 감이 아예 안잡히네요 ^^;
member photo
Jero 2004.05.31(월) 오후 08:46:01
서버와 클라이언트간의 의사소통이 가장 간단하면서 가장 큰 문제가 아닐까 생각되는데...
의사소통만 제대로 되면 그 외에 함수나 모듈을 이용한 아이템,몹,사냥등은 진전이 좀 있을것 같은데 앞차가 못가니 뒷차는 길을 알아도 못갈수 밖에요 ^^
opticlab 님께서 길잡이역을 좀 해주심 안될가요 ^^;
제가 'c'라도 좀 알면 소스 분석이라도 해보겠는뎅 ^^;
암튼 열분들이 관심가져 주시니 감사할 따름이네요
옵티클랩님하고는 계속적인 정보공유를 할 수 있었으면 합니당 ^^
그럼 ~
member photo
Jero 2004.05.31(월) 오후 09:35:00
위에 글쓴 사람인데요 ^^;
돌아다니다가 정말 조은걸 발견했답니다 0_0
몇년전에 16K 머드대회가 있었는데요
입상한 작품의 상당수가 Python 언어로 만들어진거였답니다
그래서 냅다 소스 몇개 받아뒀죠~
필요하시면 말씀하세요 ^^;
member photo
Raven 2004.06.01(화) 오후 07:32:28
일단 Thread를 쓰셨다면 반은 성공하신거 같네요. ^^;

telnetlib 모듈은 신경쓰실 필요가 없습니다. 그건 클라이언트만 구현해 놓은거거든요.

사실 Telnet은 별다른 모듈이 필요 없이 바로 Socket 열어서 전송하면 그게 telnet입니다. 내용이 다 보이죠.

Thread로 다중 접속 echo 서버를 만드시고, 그걸 약간 개조해서 받은 입력에 대해 명령어 처리하는 부분을 추가해보세요.

저 같은 경우는 사용자가 입력한 내용을 문자열로 받아서 split 메소드로 나눠서 명령어 해석을 합니다.
------------------------------------------------------------------------
string = '바보 옆구리 공격'
words = string.split()
command = words[-1] # 맨 끝에 붙어있는 명령어, 즉 '공격'을 받아오는거죠.
args = words[0:-1] #처음부터 맨 끝 바로 전 단어까지. ['바보', '옆구리'] 리스트가 넘어오겠죠.
------------------------------------------------------------------------
대충 이런 정도입니다.

원하신다면 좀 지저분한 소스(TㅡT)라도 넘겨드릴게요.
지금 처음부터 다시 정리하면서 만드는 중이라, 작동하는건 예전것밖에 없네요. ^^;
코멘트를 삭제할 비밀번호를 입력하세요.
비밀번호:
정회원 이상만 코멘트 쓰기가 가능합니다.
총 게시물 954개 / 검색된 게시물: 954개
쪽지를 전송하고 있습니다. 잠시 기다려주세요.
쪽지보내기
받는이(ID/닉네임)
내용
쪽지가 도착하였습니다.
쪽지 내용을 읽어오고 있습니다. 잠시 기다려주세요.
--