Git Product home page Git Product logo

ff2_fork's Introduction

FF2_Fork

This was created for my personal TF2 server.

Unfortunately, I don't have time and knowledge enough, To write something in English.

PR or issues are always welcome. Thank you.


POTRY 서버에서 사용 중인 Freak Fortress 2의 포크 버전입니다.


Codespace 사용

  1. SourceMod 익스텐션을 설치해주세요.
    ㄴ 모든 설정은 본 저장소의 .vscode 폴더 안에 있습니다. 개인적인 설정은 저기서 수정하실 수 있답니다.

  2. VSCode의 터미널을 켜고 배치 스크립트 실행 권한을 바꿔주세요.

    $ sudo chmod +x /workspaces/FF2_Fork/batch/*.sh

  3. 소스모드, 기타 include를 설치해주세요.

    $ /workspaces/FF2_Fork/batch/update-all.sh

  4. FF2도 설치해주세요.
    ㄴ 이후에 저장소 (/addons/sourcemod/scripting) 내의 /ff2_module, /include 폴더 안에서 변경사항이 있었을 경우, 빌드 전에 미리 업데이트 해야 합니다.

    $ /workspaces/FF2_Fork/batch/update-ff2.sh

  5. 원하는 코드를 선택하고 SourceMod 익스텐션의 컴파일 기능으로 빌드해보세요. (우측 상단에 버튼이 있답니다.)
    ㄴ 정상적으로 빌드되었다면 저장소 내의 /bin 폴더에 플러그인 파일이 생성됩니다.

ff2_fork's People

Contributors

nopied avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

ff2_fork's Issues

포인트 텔레포트의 좌표 보정 (point_teleport.sp)

목표: 텔레포트 도착 지점에서 가능한 플레이어가 끼지 않을 자리를 확인합니다.
이것저것 확인해보았으나 트레이스를 남발하거나 맵 데이터를 꺼내서 연산하는 것은 부하가 큰 것으로 확인되어 처음에 생각했던 방법처럼 트레이스를 활용하되 횟수를 최소한으로 낮추는 것이 목표입니다.

그리고 이번에 좌표 선정은 텔레포트를 사용하는 플레이어의 판단에 맡기는 형태로 구상하였습니다.

BB: Bounding Box

  • 좌표 연산 할 때, 충돌에 쓰이는 엡실론 값인 0.0135를 합해야 할 수도 있습니다.

n + 2차 (작성 중)

전제: 최초 트레이스의 충돌 확인 작업에서 벽 안에 들어간 트레이스를 밖으로 빼낸 다음에도 충돌이 확인된 경우
이는 아랫면에 조준한 것 중에 옆면이 BB에 충돌하지 않는 것에 한해 충돌 없음이 보장됩니다.

  • 기본적으로 이 트레이스 길이를 BB의 넓이 만큼 전진시킬 것.
  1. 최초 트레이스의 바닥면 normal 값을 기준으로 해당 축의 정면과 양옆면 BB 길이를 각각 합한 좌표를 트레이스하여 결과 좌표에서 벽에서 삐져나온 좌표만큼 뒤로 뺍니다.
    이때 선 중 하나라도 AllSolid, StartSolid로 판정되었다면 보정 실패로 간주, 마지막으로 넘어갑니다.
  • 연산 순서: (정면 -> 정면 + 양옆면 -> 양옆면), 한 면을 위한 연산에 5번의 선형 트레이스 사용
  • normal 값은 오직 정면의 각도를 알아내는 것에 사용합니다. (x, y 중 절댓값이 가장 큰 것, 보통은 차이가 명확하게 갈리지만 울퉁불퉁한 벽이라면 사정이 좀 다를 수 있습니다..)
  1. 이후 z축(높이)를 BB의 정면을 합한 상태에서
    시야 각도가 양수라면 아래에서 위, 위에서 아래로
    반대로 음수라면, 첫번째는 보정했다고 간주하고 아래에서 위만 확인합니다.
  • StartSolid로 판정되었다면 보정하지 않고 무시합니다.
  • 경우에 따라 벽 안쪽부터 트레이스 될 수 있지만 벽 안쪽에서 시작된 트레이스는 그 벽 안에서는 충돌 판정 되지 않고 다음 벽에서 충돌 판정이 이뤄집니다.
  • 만약 처음 트레이스에서 보정이 이뤄진 상태에서 그 다음 트레이스에서 충돌되었다면 해당 벽 안에서 플레이어가 설 수 있는 높이가 없으므로 보정이 실패했다는 걸로 간주하여 마지막으로 넘어갑니다.
  • 시야 범위는 예외로 적용되는 지형이 있어서 확인이 필요합니다.
  1. BB의 윗면을 1번처럼 확인합니다.
    이때 선 중 하나라도 AllSolid, StartSolid로 판정되었다면 보정 실패로 간주, 마지막으로 넘어갑니다.

마지막. 보정 실패 여부를 파악하기 위해 Hull로 최종 좌표를 확인하고 그래도 충돌되었다면 해당 좌표에서 시야 각도에 따라 일정 거리만큼 뒤로 이동한 후에 다시 1로 돌아갑니다. (부하 최소화를 위해 이 작업은 3번까지만 합니다.)

문제 될 요소:

  • 벽이 복잡하게 되어있는 경우: 울퉁불퉁 또는 뾰족한 벽의 경우에 대비해서 마지막 단계에 뒤로 이동한다는 것을 추가했지만 플레이에 자연스럽지 않을 수 있다 생각하고 있습니다.

일단 이번까지만 지금까지의 보정을 따라서 적어볼 생각인데 이번에도 플레이에 문제가 많을 것 같다고 생각되면 아예 좌표 지정 방식이나 컨셉을 타협해 볼 생각입니다.

2.2 고칠 것

  • 타이머가 01:60와 같이 표시됨.
  • 체인지로그 날짜 표시가 제대로 되는지 확인되지 않음.
  • 보스 모델 변경 플러그인 새로 짜기
  • 공이 터져도 없어지지 않음. 아군도 감지함

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.