에펨코리아 모바일 -  유머, 축구, 게임, 풋볼매니저 종합 커뮤니티

로그인 가입 메뉴
신청하기
2020.10.13 20:38

매치엔진

조회 수 20634 추천 수 180 댓글 127

일단 나는 카피어야. 스스로 개발자라고 부르기엔 능력도 안되고 경력도 안돼. 그리고 게임 개발 쪽에 있던 것도 아니고 머신제어나 광학검사 쪽에서 일했던 사람이야. 


경력은 6~7년정도 밖에 되지 않았고, 지금은 코로나와 잦은 해외출장으로 피곤해서 잠시 일을 쉬고 있는 상태이지. 


에펨이란 게임은 학창시절 때 해본 fm2005 가 다였고 일을 그만둔 와중에 취미를 찾다가 부트캠프에서 스팀 fm2020 을 하다가 부트캠프 지우고 


최근엔 맥에서 에픽 2020을 즐기고 있었어. 


에펨 하기전에 지금은 없어진 스x넷에서 서양 야겜 번역해서 올렸었고 ddrnet이라는 아이디로 활동했어. 렌파이 자체가 오픈소스여서 다른 번역가들이 많았고


언리얼이나 유니티게임, 그리고 기타 다른 엔진 게임들은 상대적으로 업로더가 없어서 디컴파일 해서 자동 번역툴 코딩해서 게임들 올렸었지. 


일단 내가 리버싱 할 때 사용하는 툴은 기드라 및 헥스 에디터, 치트엔진 등이야. 뭐 리버싱 취미로 하는 다른 사람들도 마찬가지 이겠지만. 


 무료이고 사용방법도 비교적 간단하고, 성능도 훌륭하지. 


그동안 인디게임 및 비교적 간단한 구조의 게임들을 리버싱 해왔기 때문에 fm을 너무 쉽게 생각하고 접근한건 있어. 하지만 열어본 결과 부분 암호화 처리도 되어 있


는 것 같고, 매치 알고리즘에 접근하기가 쉽지 않았어. 내가 프로그램 분석하는 능력이 부족하기 때문에 내 기준에서 어렵다고 할 수도있어. 다른 능력자가 있으면


한번 도전해봐. 


이렇게 까지 서두에 긴 글을 적어둔 이유는 프로그램에 대해서 하나도 모르는 것은 아니라는 걸 말하고 싶었어. 


그래서 내가 말해주는 걸 좀 믿어줬으면 해. 왜냐면 혹시 매치엔진 수정하고 있는 유저들이 있다면 잘못된 변수로 시간을 낭비 하지 않길 바라기 때문이야. 


1. 첫째, physics.json 파일은 그냥 매개 변수 파일이야.  쉽게 파라메터 파일. 매치 알고리즘의 속성이라고 말하면 이해하기 편할까? 


가령 쉽게 얘기를 해보자면 다들 엑셀이나 워드는 쓰잖아. 글자 크기를 조정하는 속성을 font.size 이렇게 되겠지. 


font.size 가 원래는 10 이었는데 우리는 이걸 20으로 변경하면 글자는 커지겠지. 


그런데 font.max.size 라던지 font.min.size 이렇게 한다고 해서 바뀌는 건 없을 거야. 


그래서 에펨 파라메터 파일로 돌아와서 파라메터 파일은 그냥 테이블이야. 그냥 배열일 뿐이야. json 구조라고 구글링을 하면 쉽게 이해할 거야


파일을 열어보면 

{

 version_array:[

      {

       }, // 첫번째 속성(오브젝트)

      {

       }, // 두번째 속성(오브젝트)

      {

      }, // 세번째 속성(오브젝트)

      ],

}

배열 이름이 version_array 인 거고 그 버전어레이에 하부 객체(속성)들이 있는거야. 그리고 불러올 때는 제일 첫번째 속성 값들을 불러오고, 왜 속성 값들


이라고 복수형이라고 지칭했냐면, 말그대로 그 안에 변수들이 여러개니까. 


일단 리버싱을 통해서 사용하는 version_array의 하부속성에는 순정에서 사용하는 변수들밖에 없어. 그 외의것은 적용이 안돼.


신이 사람이라는 실체에 머리, 몸통, 팔, 다리만 사이즈만 변경할 수 있게 주문을 허락하게 해줬다고 해보자. 그리고 그 주문을 대가리_크기, 몸땡이_크기, 팔_크기, 


다리_크기 이렇게만 


근데 니가 아무리 머리_크기, 자지_크기, 얼굴_원빈 이렇게 주문을 외워봤자 씨알도 안먹힐거야. 왜냐면 신이 허락해주지 않았거든. 


신이 주문을 선언해두지 않은 이상 니가 외부에서 뭐라 주문을 외우든 쓸데없는 짓이 되버리는 것이지. 


그리고 값의 형식이 중요해. 속성에는 value(값) 속성값을 적용해줘야 하는 데 속성값의 형태는 "long" 이야 그냥 정수라고 생각하면 돼. 


그런데 이 속성 값에 머리_크기 = 소두 이렇게 적어봤자 적용이 안되겠지. 머리_크기 = 1000 이렇게 정수값을 넣어야돼. 그런데 해당 변수들 마다 속성값의 형태와


맞지 않는 형태를 넣거나 range(범위)를 초과하거나 미만이면 default 값(신이 미리 지정한 값)이 적용돼. 


하지만 긍정적인 소식은 


머리_크기 = 100 이렇게 했다고 머리크기만 변하는게 아니야. 팔크기가 변할수도 있고, 자지크기가 변할수도 있어. 함수 연계가 너무 복잡하고, 제대로 디컴파일 되지


않은 부분도 많아서 확실히 어떤 어떤 변수가 함께 바뀌는지는 설명할 수 없어. 다만 서로 다른 값의 콜라보로 엄청나게 다양한 결과가 나올수 있다는 이야기지. 


이렇게 글을 남기는 이윤는 매치엔진 수정할 때(결국 파라메터파일도 매치알고리즘에 큰 영향을 주니까 매치엔진 수정이라고 볼 수 있음) 없는 변수 추가해서 고생하지 


않기 위해서 남기는 거야. 변수명은 그냥 이름일 뿐이야. 크게 의미를 두지마 자체적으로 명령어가 되지 않아. 함수에서 활용을 할 때 그제서야 의미를 가지는 거야. 


김춘수의 꽃이랑 같아. 이름을 부르기 전까지는 그냥 쓸모없는 값이야. 


가장 쉬운 테스트는 니가 새롭게 추가한 변수 추가한 경기와 삭제하고 플레이한 경기 비교해봐. 아니 이전 경기 하이라이트 봐봐. 바뀌는게 있는지. 


그리고 개인적인 생각이지만 얘네 개발자들도 너네가 만약 이런 이런 상황에서 컷백 패스 애니메이션 모션 나오게 해주세요 요청해줘도. 그렇게 수정 못할거야. 


기존 매치알고리즘 프레임을 잡았던 메인 개발자가 아직도 남아있는 지는 모르겠지만, 왜 자꾸 이전 매치 알고리즘에 새로운 조건을 계속 덧붙여서 업데이트 해왔다는


느낌이 들까. 메이저 개발사 답게 정리가 잘되어있는 코딩이지만, 정리가 잘되어있지 않은 느낌을 많이 받았어. 내가 실력이 부족해서 그런걸 수도 있고 어쨋든 이만. 




  • BEST [레벨:1]ddied 2020.10.13 22:42
    요약
    1. 기존 순정 매치엔진 파일들 변수들은 수정가능하다. 그리고 변수 하나 값만 변경해도 서로에게 영향을 준다.
    2. 유저가 새롭게 추가한 변수들은 적용 불가. 쓸데 없는 값이 들어가며, 매치엔진에 아무 영향을 주지 않는다.
  • BEST [레벨:33]C.풀리식 2020.10.13 22:26
    메모장 파일만 고치는건 해골물일거다 라는건가요ㅋㅋ
  • BEST [레벨:21]닉네임다중복 2020.10.13 21:15
    솔직히 자세히 안 읽었는데 전문가 향기가 나서 추천
  • BEST [레벨:21]레모나 2020.10.13 22:25
    형 미안 font size 까지만 읽고 내려왔어
  • [레벨:4]람머스 2020.10.13 22:51
    VARVAR 말 이쁘게 하네
  • [레벨:22]뽀르자밀란 2020.10.13 22:43
    글도 잘쓰고 유머도 있고 가독성도 좋넹 ㅊㅊ
  • [레벨:25]야야일찍일어나 2020.10.13 22:43
    지금까지 새로 변수 추가해서 만들건거임? 원래있던 값만 조정한거 아니었음??
  • [레벨:30]사류하 2020.10.13 22:46
    야야일찍일어나 둘 다임

    어떤 건 새로 추가했다는 것도 있고 그냥 있던 것에서 수치만 바꾼 것도 있고
  • [레벨:21]굴다리아몰랑 2020.10.13 22:45
    json 값 바꾼다고 매치엔진 수정됬다라고 보기 힘듬... 그정도로 옵셋값 조정한다고해서 게임이 완전 달라진다고 보긴 어렵다는거지.. 그냥 난이도 정도가 바뀔수는 있겠지만... 즉 골대에 골기퍼가 자살골 넣는 빈도 가 높은건 그만큼 골이 쉽게 들어가는 경우라고 해두면.. 그걸 줄이게 되면 반대로 골 넣기가 어려워지는.. 즉 슛 난사하는데 골이 안들어가는 결과로 이어질수도 있다 뭐 그런이야기...
  • [레벨:1]ddied 2020.10.13 22:46
    굴다리아몰랑 매치 파라메터 파일 수정하시는 분들 노력을 폄하하는건 아닙니다. 분명 파라메터 파일은 매치 결과 및 과정에 큰영향을 주는 중요 변수입니다. 그걸 유저가 쉽게 변경할 수 있게 빼놓은 si잘못이죠. 다만 변수를 명령어 및 함수로 생각해서 새롭게 추가해서 시간낭비 및 애꿎은 고생하시지 말라는 취지에서 적었습니다.
  • [레벨:21]굴다리아몰랑 2020.10.13 22:50
    ddied 물론 그값들 수정해서 유의미 하게 게임내에 영향을 준다는건 사실인데.. 원래 ㅂㅅ같이 만들어진 엔진 자체는 바꿀수 없다는거죠..
    개발사도 분명 저값들을 쉽게 바꿀수 있게 json 형태로 나뒀다는건 뭔가 내부 시뮬레이터나 뭔가 이용해서 수치값 조정해서 균형 맞추는 뭔가 있지 않았을까 예상해봅니다..
  • [레벨:7]전회 2020.10.13 22:49
    깔끔한 글 잘 읽었습니다..
    <그리고 개인적인 생각이지만 얘네 개발자들도 너네가 만약 이런 이런 상황에서 컷백 패스 애니메이션 모션 나오게 해주세요 요청해줘도. 그렇게 수정 못할거야. > 요기가 제일 재밌네요 진짜 못할지도...
  • [레벨:10]타살 2020.10.13 22:50
    시작이 잘못된거지 애초에
    fm json파일이 int32적용인지 64적용인지
    data파일 열어본 사람도 없고
    흔히 json을 적용하려면 인젝션을사용해서
    data값을 바꿔줘야 되는대
    그런것도 안하고 작업했다고 올리고
    분명 저번글에도 이런글 썼는대 흠
  • [레벨:29]이스마엘 2020.10.13 22:51
    일련의 글들을 읽어보고 생각해보니 메인프로그래머는 일찌감치 퇴사해서 SI 애들도 json만 고치는게 아닐까? 라는 의심이 드는구만
  • [레벨:23]하하하 웃어보자  2020.10.13 22:51
    프로퍼티를 창조해서 json에 넣은 유저가 있다는 게 놀라운데
  • [레벨:20]듬성듬성 2020.10.13 22:56
    야겜 번역 했다는거에 관심있는 사람은 없냐?
  • [레벨:35]언포도 2020.10.13 23:00
    듬성듬성 진성 펨창들밖에 없어서 매치엔진에 더 관심이 있음 ㅋㅋㅋㅋㅋㅋ
  • [레벨:4]3:16 2020.10.13 23:11
    결론적으로 json 파일안에 있는 변수들의 값을 수정하면 매치엔진에 영향을 주나, 매치엔진 수정자가 임의로 변수를 추가해서 삽입된 값들은 영향을 주지않는다.

    맞죠?
  • [레벨:1]ddied 2020.10.13 23:12
    3:16 네 맞습니다. 그리고 추가적으로 변수 하나 수정한다고 그 변수값만 수정되는게 아니라 다른 변수값에도 영향을 줍니다.
  • [레벨:19]닉네임은닉 2020.10.13 23:12
    ?? 당연한얘기를 엄청 길게 풀어썼다는 느낌밖에 안드는데...
    수치조절만으로도 의미가 있으니까 json파일에 매달리는건데, 그 이상이 된다고 생각하는 사람은 없을듯. 그럼 새로 게임을 만들지.
  • [레벨:1]ddied 2020.10.13 23:13
    닉네임은닉 네 누군가한테 당연한 이야기인데 아닌분들도 계셔서 남깁니다.
  • [레벨:24]90아재 2020.10.13 23:13
    아 이런건 모르겟고 얼른 렌피 번역이나 더 해달라구요 ㅡㅡ
    농담입니다. 그간 노고에 감사드립니다
  • [레벨:1]ddied 2020.10.13 23:14
    90아재 이제 안하려고요, 며칠동안 쫄린거 생각하면, 3d 인권 지켜주리라 마음먹었습니다.
  • [레벨:24]우리흥발롱도르 2020.10.13 23:22
    이참에 펨창들 전부 재능 기부해서 새로운 축구게임 하나 만들자~~ ㅋㅋ
  • [레벨:34]콩테의축구 2020.10.13 23:32
    야겜 추천 부탁드립니다.
  • [레벨:1]ddied 2020.10.13 23:38
    콩테의축구 being a dik, lucky mark, milf city, timestamp, a house in the rift, acting lesson, melody, daiting my daughter, parental love, v.i.r.t.u.e.s 등 등 그런데 지금 한글판 찾기 힘들 수도, 기존에 번역하신 분들 다 자료 날려서, 온xx크 가시면 구하실 수도.
  • [레벨:23]야채샐러드 2020.10.13 23:39
    메인에서 변수를 선언해줘야 다른데서도 그 변수를 쓸수 있잖아? 매치엔진 수정하시는 분들이 수치값만 변경한게 아니라 새로운 변수를 선언하려고 했다고? 레알?
  • [레벨:14]에펨하는씹덕 2020.10.14 01:09
    설마 진짜 새로운 변수를 선언한 사람이 있을거라고는 상상도 못해서
    순간 이해 못했따
  • [레벨:3]Cherry 2020.10.14 02:47
    에펨하는씹덕 근데 그걸 했슙니닷. 그리고 새로운 변수를 찾기 위해 바닷가에 낚싯줄을 던지고 있더랬죠. 뭐 쓸데없는 짓이라고 생각은 안하겠습니다
  • [레벨:21]송연지 2020.10.14 01:38
    ㄹㅇㅋㅋ만 쳐라
  • [레벨:13]Beom9 2020.10.14 05:06
    오...

  1. 한국남녀 특징. jpg [173] 첨부파일

    유머 2020.11.22 역사를남길자 조회80461 추천555
    한국남녀 특징. jpg
  2. 체력검정을 대하는 경찰준비생 마인드.jpg [117] 첨부파일

    유머 2020.11.22 엽서화쑹위치 조회50060 추천434
    체력검정을 대하는 경찰준비생 마인드.jpg
  3. 내년 잘하면 GOTY 라인업 역대급.JPG [204] 첨부파일

    PC/콘솔 2020.11.22 블러드본2기원 조회52522 추천89
    내년 잘하면 GOTY 라인업 역대급.JPG
  4. 축구보면서 먹으려고 가라아게 튀겨봄 [117] 첨부파일

    음식/여행 2020.11.22 SM6 조회46960 추천160
    축구보면서 먹으려고 가라아게 튀겨봄
  5. 개콘 8회 부활의 신호탄.jpg [94] 첨부파일

    유머 2020.11.22 오호오허오호 조회62448 추천491
    개콘 8회 부활의 신호탄.jpg
  6. [Goal-니자르 킨셀라] 우리가 알던 '은골로 캉테'의 귀환. [73] 첨부파일

    축구소식 2020.11.22 Chelsea. 조회19566 추천140
    [Goal-니자르 킨셀라] 우리가 알던 '은골로 캉테'의 귀환.
  7. 참지못하고 여자를 패는 남자...gif [241] 동영상첨부파일

    유머 2020.11.22 억장무너진카바니 조회72207 추천464
    참지못하고 여자를 패는 남자...gif
  8. 복면쓰고 전자담배 피기.gif [84] 동영상첨부파일

    유머 2020.11.22 레알8번크로스 조회60928 추천436
    복면쓰고 전자담배 피기.gif
  9. 이런거 깨진 것도 포텐 보내주나요? [56] 첨부파일

    기타스포츠 2020.11.22 내일월요일 조회17683 추천74
    이런거 깨진 것도 포텐 보내주나요?
  10. 박현주 요즘 하체 제대로 조지는듯 ㄷㄷㄷ [33] 동영상첨부파일

    기타스포츠 2020.11.22 민초단조송화 조회54663 추천172
    박현주 요즘 하체 제대로 조지는듯 ㄷㄷㄷ
  11. [골닷컴] 이든 해저드, 오늘 경기 스텟 [171]

    해외축구 2020.11.22 옥아들 조회27383 추천181
    [골닷컴] 이든 해저드, 오늘 경기 스텟
  12. 속보) 김도훈 당황함 [19]

    국내축구 2020.11.22 키어런트리피어 조회29753 추천177
    속보) 김도훈 당황함
  13. 불투이스 팀대화 움짤보고 생각난 이영표 리더쉽 20 시절 [54] 동영상첨부파일

    국내축구 2020.11.22 수원젠지톹넘레벨 조회20120 추천263
    불투이스 팀대화 움짤보고 생각난 이영표 리더쉽 20 시절
  14. 신라면이 이름이 신라면인 이유 jpg [232] 첨부파일

    유머 2020.11.22 역사를남길자 조회106570 추천912
    신라면이 이름이 신라면인 이유 jpg
  15. 성관계 음성녹취 금지법 여초 좌표찍힘 ㅋㅋ [326] 첨부파일

    유머 2020.11.22 빠따로패기 조회58566 추천531
    성관계 음성녹취 금지법 여초 좌표찍힘 ㅋㅋ
이전 맨앞 다음
- +
6307 6308 6309 6310 6311