조정 및 설정-런타임 변수 수정 및 지속성


19

대부분의 회사에는 게임에서 물건을 조정하기위한 편집기 또는 가변 제어 시스템이 있지만이 문제에 대한 미들웨어 솔루션이 있습니까? 나는 과거에 두 가지 시스템을 직접 작성했으며 5 가지, 6 가지 다른 시스템으로 작업했지만 그중 어느 것도 선반에 있지 않았습니다.

이러한 자체 개발 솔루션에는 값을 계속 찾아야하는 것부터 변수의 현재 상태를 저장할 수없는 것까지 다양한 문제가있었습니다.

성숙한 구성 / 런타임 변수 제어 라이브러리 / 앱이 있습니까?

나는 일반적으로 C ++로 코딩하지만, 닌텐도 (Nintendo) 물건과는 별도로 현재 개발중인 모든 하드웨어가 서버와 통신하는 메커니즘을 제공하기 때문에 성숙한 설정 / 변수 편집기는 아마도 소켓 기반 (따라서 어느 정도 언어에 관계없이) 일 것이라고 생각합니다. 코드 구현도 매우 간단해야합니다 (Oskar가 공유 한 hot_var / TweakableConstants 기사를 좋아하지만 패키지는 아닙니다)

답변:


8

나는 노엘 이 그의 블로그에서 제안한 것을 좋아한다 . 텔넷 변수 쟁이 기반 . 텔넷을 사용하여 텔넷 클라이언트를 사용하여 변수를 편집 할 수있었습니다. 나중에 그들은 프로토콜 주위에 GUI를 만들었습니다. 미들웨어 라이브러리의 가치는 없지만 그의 코드를 보는 것이 유용 할 수있을 정도로 간단합니다.

그러나 그의 반 루아 감정에 동의하지 않습니다. 원격 Lua 콘솔은 정말 대단해 보입니다.


그들은 MotoGP의 tweak 변수에도 telnet을 사용했습니다 : blogs.msdn.com/b/shawnhar/archive/2009/05/01/…
Kylotan September

3
왜 텔넷인가? HTTP / HTML, 친구! HTTP는 매우 간단한 프로토콜이며 게임에 쉽게 임베드 될 수 있습니다. 이전에 해봤지만 수천 줄의 코드 아래에있었습니다.
ZorbaTHut

3
나는 Telnet이 일을 꽤 잘하고 훨씬 덜 복잡하다고 말합니다. 1000 개가 아닌 100 줄의 코드로 처리 할 수 ​​있습니다. 또한 업데이트를 폴링하고 풀기보다는 업데이트를 푸시 할 수 있습니다. 그러나 게임에서 다른 목적으로 HTTP가 필요한 경우 여기에서도 HTTP를 사용할 가치가 있음에 동의합니다.
Kylotan

5

Tweakable Constants 의 아이디어가 귀하의 요구에 맞을 수도 있습니다. 실제로 런타임 변수를 효과적으로 제어하려면 복잡한 솔루션이 필요 하다고 생각할 수 있지만 실제로는 구현이 너무 간단합니다. 원래 토론 이 기술은 또한 흥미로운 읽기입니다.

예:

glClearColor( H(1.0f), H(1.0f), H(1.0f), H(1.0f) );

H매크로 같은로 확장됩니다 HotValue(x, __FILE__, __LINE__, __COUNTER__). 이것은 일부 글로벌 레지스트리에 값을 등록합니다. 그런 다음 RefreshHotValues()일정한 간격으로 호출하는 것과 같은 기능 이 있습니다. 이 기능은 레지스트리에서 각 항목을 찾고 특정 소스 파일을 구문 분석 한 후 핫 값을 다시로드합니다.

실제 소스 코드를 수정하면 바로 지속성이 있습니다.

분명히 이것은 H()모든 프레임이 평가되지 않는 곳에서는 작동 하지 않지만 여기 에서 논의 된 것처럼 이것을 해결할 수있는 방법이 있습니다 .

이 아이디어를 소켓 기반 솔루션으로 확장 할 수 있습니다. HotValue()모든 프레임 을 호출하는 데 상당한 성능 오버 헤드가 발생할 수 있지만 매크로를 상수로 대체하여 매크로를 쉽게 쉽게 컴파일 할 수 있으므로 이것은 문제가되지 않습니다.


2
@ 킬로 탄 : 당신은 요점이 없습니다. 런타임시 구문 분석되는 실제 소스 코드를 수정하고 있습니다. 지속성은 수정 된 소스를 통해 이루어집니다.
Oskar N.

그래, 어떻게 든 기사를 감추고 싶었어. 내 의견을 삭제하고 다시 읽을 것입니다!
Kylotan

3
나는 단지 나일지도 모르지만이 기술은 느낀다. 나는 마법의 숫자를 싫어하는 데 많은 시간을 소비했기 때문에 이것이 마법의 숫자에만 효과가 있다고 생각합니다. 오히려 맑은 색이 구성 또는 스크립트 파일의 일부가되는 것을보고 싶습니다. 마술은 자원을 핫로드하는 기능과 함께 제공됩니다.
deft_code

@caspin : 일반 변수를 사용할 수 있으며 대신 H(int, myvar, 5)파일 변경이있을 때 myvar메모리 를 교체하십시오 . 참조 mollyrocket.com/forums/viewtopic.php?p=5395#5395
오스카 N.

1

AntTweakBar 는 실제로 원하는 작업에 유용하지만 대부분의 경우 일부 매크로 또는 유사한 릴리스에서 '컴파일'하는 메소드를 원할 것입니다.



0

설정 관리는 모든 게임에서 처음부터 다시 시작한 것 중 하나 인 것 같습니다. 아마도 비교적 간단한 방법과 필요한 설정 유형의 변동성이 높기 때문일 것입니다. 적절한 스토리지 백엔드 설정 (SQL / 무엇이든)이 있다고 가정하면 하루나 이틀 만에 설정 관리에 대한 강력한 솔루션을 코딩 할 수 있으므로 미들웨어 솔루션에 대한 비즈니스 요구는 그리 많지 않은 것 같습니다. 플레이어 정보 저장에 사용하는 것의 가장 위에있는 것은 대부분의 경우 가장 좋은 방법이라고 생각합니다.


1
이것은 설정 정보가 아니라 디버깅 또는 게임 플레이 목적으로 런타임 변수를 조정하는 것입니다.

디버깅 및 게임 플레이 목적을위한 많은 유형의 런타임 변수는 일종의 영구 백엔드에 저장하는 것이 좋습니다. 이를 통해 배포시 전체 시스템에서 변경이 가능합니다. SQL은 백엔드의 한 예일뿐입니다. 정보를 디스크의 파일 또는 여러 가지 다른 방법으로 패치 할 수 있습니다.
벤 Zeigler

1
문제는 실시간으로 변경되도록하는 것입니다. 아마도 DB에서 일종의 트리거를 설정하고 게임을 계속 실행하는 동안 해당 트리거를 처리하고 값을 비동기식으로 다시 읽을 수있는 게임의 무언가가 필요할 것입니다. 극복 할 수 없지만 간단하지는 않습니다.
Kylotan

DB 트리거를 관리하는 코드는 Richard가 찾고있는 코드 일뿐 아니라 재미 있고 재사용 가능한 부분입니다. 상수를 파일 시스템이나 다른 도구가 아닌 DB로 옮기는 것이 그 코드를 마술처럼 보이게하지 않으며 아마도 더 복잡하게 만듭니다.

-1

나는 실제로 최근에 그런 일을 생각하고 있으며, 원하는 언어로 된 작은 라이브러리와 쌍을 이루는 Android 앱 의 훌륭한 후보가 될 것이라고 생각합니다 . 응용 프로그램은 사용자 정의 가능한 버튼, 토글, 드롭 다운 등 (원하는 위젯)이며 WLAN (또는 복잡한 경우 USB)을 통해 작업을 라이브러리로 보냅니다. 라이브러리는 게임 플레이와 별도의 스레드를 생성했으며 Android 휴대 전화의 어떤 컨트롤이 게임의 변수 (시작 코드에서 설정)에 해당하고 Android 앱에 연결되어 있는지 알 수 있습니다.

그런 다음 휴대 전화에서 물건을 만지는 것만 큼 쉽게 게임을 망칠 수 있습니다. 휴대 전화에 게임의 실시간 변수 값을 표시하는 일부 텍스트 상자가 있거나 라이브러리를 앞으로 stdin또는 stderr전화의 스크롤 텍스트 영역으로 만들 수도 있습니다 . 옵션은 무한합니다!

유일한 관심사는 속도에 관한 것입니다. 속도와 반응 시간이 중요한 경우 USB를 통해 전화를 연결하면 adb (android debugger)가 USB를 통해 포트를 전화로 전달하는 기능을 지원합니다. 그러나 그렇지 않으면 WLAN에는 매우 작은 지연 시간 만 있으면됩니다.

위와 같은 내용은 작성되지 않았다고 생각하지만 글쓰기를 강력하게 고려하고 있습니다. (아직도 필요로하는 내 게임 개발에 대해서는 아직 충분히 이해하지 못했다)

물론, Apple 사용자 인 사용자는 iDevice와 동일한 작업을 수행 할 수 있습니다. 개인적으로 iOS 개발이 Android 개발보다 훨씬 더 어려운 것으로 나타났습니다. 물론 위의 앱은 쉽게 배포하기 위해 Android 마켓에 쉽게 게시 할 수 있지만 Apple은 개발자 도구를 앱 스토어에 허용하지 않을 것입니다. Android 플랫폼이이 도구에 더 적합하다고 생각합니다.


이것은 사무실 환경에서 좋을 것입니다. 예술가와 이야기를 나누고 이웃 디자이너의 달리기 게임에 연결하여 대화를 시작하면서 몇 가지 만남을 시작하려고합니다 ...
dash-tom-bang

1
실제로 개발중인 컴퓨터가 아닌 휴대 전화에서 얻는 이점을 이해하지 못합니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.