>백엔드 개발 >PHP 튜토리얼 >React 및 PHP를 통한 게임 개발 : 얼마나 호환됩니까?

React 및 PHP를 통한 게임 개발 : 얼마나 호환됩니까?

William Shakespeare
William Shakespeare원래의
2025-02-09 11:42:11750검색

Game Development with React and PHP: How Compatible Are They?

코어 포인트

React 및 PHP를 사용하여 게임을 공동으로 개발하는 것은 프론트 엔드 사용자 인터페이스를 담당하며 PHP는 백엔드 및 게임 로직을 관리합니다.

게임 개발의 설정 프로세스에는 비동기 PHP 서버 설정, 비 Laravel 프로젝트에서 Laravel Mix를 사용하여 Websockets를 사용하여 백엔드 및 프론트 엔드를 연결하는 것이 포함됩니다.
    aerys 라이브러리는 응용 프로그램의 HTTP 및 WebSocket 부분에서 사용하여 높은 동시성 및 WebSockets를 지원할 수 있습니다.
  • Laravel 믹스는 비 Laravel 프로젝트에서도 Reactjs 파일을 구축하는 데 사용될 수 있으며 빌드 체인을 쉽게 구성하고 확장 할 수있는 방법을 제공합니다.
  • WebSockets는 백엔드 및 프론트 엔드를 연결하는 데 사용하여 서버와 클라이언트 간의 실시간 통신을 허용 할 수 있습니다.
  • 나는 PHP와 React로 게임을 구축하기로 결정한 순간부터 이것에 대해 생각하기 시작했습니다. "저는 Stardew Valley와 비슷한 멀티 플레이어 경제 게임을 만들고 싶지만 데이트 컨텐츠 없이는 플레이어 중심의 경제 시스템을 가지고 있습니다." 시스템은 무지합니다.
  • 나는 그것을 사용하는 것을 정당화하기에 충분한 반응 지식을 알고 있는지 잘 모르겠습니다. 내 초기 인터페이스 - 서버와 게임의 경제에 매우 집중되어 있었는데, 반응에 적합합니다. 그러나 내가 사물의 농업/대화식 측면을 만들기 시작하면 무엇입니까? 나는 경제 시스템 주변의 아이소 메트릭 인터페이스를 구축한다는 아이디어를 좋아합니다.
  • 나는 PHP와 함께 중세 게임을 만드는 과정을 설명한 Dead_lugosi의 연설을 보았습니다. 마가렛은 저에게 영감을 주었고, 그 연설은 내가 JS 게임 개발에 관한 책을 쓴 이유 중 하나였습니다. 나는 내 경험을 기록하기로 결심했다. 어쩌면 다른 사람들도 내 실수로부터 배울 수 있습니다.
(이 부분의 코드는 github.com/assertchris-tutorials/sitepoint-making-games/tree/part-1에서 찾을 수 있습니다. PHP 7.1과 최신 버전의 Google에서 일치했습니다. Chrome 테스트되었습니다

백엔드 설정

나는 먼저 여러 개인 경제 시스템 구축에 대한 지침을 찾았습니다. 사람들이 고려해야 할 다양한 것들을 설명하는 훌륭한 스택 오버 플로우 게시물을 찾았습니다. 나는 잘못된 장소에서 시작했을지 모르기 전에 반쯤 갔다. "첫째 : PHP 서버가 필요합니다. React 클라이언트가 많이 있으므로 높은 동시성 (그리고 아마도 websockets)을 처리 할 수있는 것을 원합니다. 지속적이어야합니다. 플레이어가 있더라도 상황이 필요합니다. 온라인이 아닙니다 나는 높은 동시성을 처리하고 websockets를 지원하기 위해 비동기 PHP 서버를 설정하기 시작했습니다. 최근 PHP 사전 프로세서와의 작업을 추가하여 일을 더 명확하게 만들고 처음 몇 가지 엔드 포인트를 만들었습니다.

:

:
<code class="language-php">$host = new Aerys\Host();
$host->expose("*", 8080);

$host->use($router = Aerys\router());
$host->use($root = Aerys\root(.."/public"));

$web = process .."/routes/web.pre";
$web($router);

$api = process .."/routes/api.pre";
$api($router);</code>
나는 응용 프로그램의 HTTP 및 WebSocket 부분에 Aerys를 사용하기로 결정했습니다. 이 코드는 Aerys 문서와는 매우 다르게 보이지만 필요한 것을 잘 이해하기 때문입니다.

Aerys 응용 프로그램을 실행하는 일반적인 프로세스는 다음과 같은 명령을 사용하는 것입니다.

반복해야 할 코드가 많이 있으며 PHP를 사용하여 전처리를 원한다는 사실을 처리하지 않습니다. 로더 파일을 만들었습니다.

:

<code class="language-bash">vendor/bin/aerys -d -c config.php</code>
:

그런 다음 종속성을 설치했습니다. 이것은

: 에서 나온 것입니다 loader.php 를 사용하여 차단 코드를 비동기 서버에서 옮기고 싶지만 의 안정적인 태그로 설치할 수는 없습니다. 이것이 내가
<code class="language-php">return Pre\processAndRequire(__DIR__ . "/config.pre");</code>
브랜치를 사용하는 이유입니다.

나는 일종의 템플릿 엔진 및 서비스 로케이터를 포함시키는 것이 좋은 생각이라고 생각합니다. PHP 리그의 각 버전을 선택했습니다. 마지막으로, 의 사용자 정의 구문을 처리하는 데 사용되는 및 나중에 사용할 짧은 클로저에 사용됩니다 ... composer.json. 그런 다음 라우팅 파일을 만들기 시작했습니다.

: 에서
<code class="language-json">"require": {
  "amphp/aerys": "dev-amp_v2",
  "amphp/parallel": "dev-master",
  "league/container": "^2.2",
  "league/plates": "^3.3",
  "pre/short-closures": "^0.4.0"
},
"require-dev": {
  "phpunit/phpunit": "^6.0"
},</code>

amphp/parallel : amphp/aerys 간단한 경로이지만 코드를 에서 테스트하는 데 도움이됩니다. 나는이 라우팅 파일을 폐쇄로 돌아 오기로 결정하여 자신의 경로를 추가 할 수있는 입력 된 dev-amp_v2를 전달할 수있었습니다. 마지막으로 두 개의 (유사한) 작업을 만들었습니다.

: pre/short-closures : config.pre 최종 터치는 Aerys 서버의 개발 및 생산 버전을 시작하기 위해 바로 가기 스크립트를 추가하는 것입니다. : routes/web.pre : 이 모든 후에는 새 서버를 시작하고 다음 명령을 입력하여 http://127.0.0.1:8080에 액세스 할 수 있습니다.
<code class="language-php">use Aerys\Router;
use App\Action\HomeAction;

return (Router $router) => {
  $router->route(
    "GET", "/", new HomeAction
  );
};</code>
프론트 엔드 설정

"좋아요, 이제 PHP 측에서 비교적 안정적인 물건을 만들었으므로 Reactjs 파일을 어떻게 작성합니까? 아마도 Laravel Mix를 사용할 수 있을까요?" 나는 실제로 새로운 빌드 체인을 만들고 싶지 않으며, 믹스가 아닌 프로젝트에서 잘 작동하도록 믹스가 재건되었습니다. 구성과 확장은 비교적 쉽지만 기본적으로 더 vuejs 지향적입니다. routes/api.pre 가장 먼저해야 할 일은 NPM 종속성을 설치하는 것입니다.

: 에서
<code class="language-php">use Aerys\Router;
use App\Action\Api\HomeAction;

return (Router $router) => {
  $router->route(
    "GET", "/api", new HomeAction
  );
};</code>

믹스는 WebPack을 사용하여 Preprocess 및 Bundle JS 및 CSS 파일을 사용합니다. 또한 JSX 파일을 빌드하려면 React 및 관련 Babel 라이브러리를 설치해야합니다. 마지막으로 부트 스트랩 파일을 추가하여 기본 스타일을 얻었습니다.

믹스는 사용자 정의 구성 파일을 자동으로로드하여 다음을 추가했습니다. config.pre : 에서 $router JSX 파일을 처리하는 방법을 믹스에게 알려야하므로 일반적으로 에 배치 된 구성과 동일한 구성을 추가했습니다. 응용 프로그램의 다양한 부분에 단일 JS 및 CSS 진입 점을 얻을 계획입니다.

참고 : 향후 버전의 믹스는 Reactjs 자산을 구축하는 데 지원할 것입니다. 당시 코드를 삭제할 수 있습니다.

다시 한 번, 많은 타이핑 작업을 저장하기 위해 바로 가기 스크립트를 만들었습니다. : 에서 mix.webpackConfig 세 스크립트는 모두 WebPack 변수 명령을 사용하지만 그 이외의 작업이 다릅니다. JS 및 CSS 파일의 디버그 버전을 빌드하십시오. 스위치는 웹 팩 모니터를 시작합니다 (번들이 부분적으로 재건 될 수 있음).

스위치는 번들의 간소화 된 프로덕션 버전을 가능하게합니다.

번들 버전 컨트롤을 사용하기 때문에 해시 값을 모르고 package.json와 같은 파일을 참조하는 방법이 필요합니다. 나는 Mix가 Manifest 파일을 만드는 것을 좋아한다는 것을 알았으므로 쿼리를 위해 도우미 기능을 만들었습니다.

: 에서
<code class="language-php">$host = new Aerys\Host();
$host->expose("*", 8080);

$host->use($router = Aerys\router());
$host->use($root = Aerys\root(.."/public"));

$web = process .."/routes/web.pre";
$web($router);

$api = process .."/routes/api.pre";
$api($router);</code>
aerys는 약속이

형태로 나타날 때 약속을 처리하는 방법을 알고 있으므로 Amp의 약속 구현을 사용했습니다. 파일을 읽고 디코딩 한 후 일치하는 파일 경로를 찾을 수 있습니다. dev를 조정했습니다. -w : 에서 -p 나는 코드를 비동기식으로 유지하기 위해 약속을 반환하고이를 사용하는 기능을 계속 만들 수 있다는 것을 깨달았습니다. 이것은

:

의 JS 코드입니다 /js/app.60795d5b3951178abba1.js helpers.pre 결국, 믹스가 JSX 파일을 컴파일하는지 여부와 Async 함수를 사용하여 다시 찾을 수 있는지 확인하고 싶습니다. 그것은 일하는 것으로 밝혀졌습니다!

참고 : 특히 같은 파일을로드하는 경우 매번
<code class="language-bash">vendor/bin/aerys -d -c config.php</code>
기능을 사용하는 데 비용이 많이 듭니다. 대신 서버 부팅 단계에서 모든 템플릿을로드하고 필요한 경우 작업 내부에서 참조 할 수 있습니다. 우리가 시작하는 구성 파일은 약속을 반환 할 수 있으므로 (예 : 에 의해 우리에게 주어진 것과 같은) 서버가 시작되기 전에 모든 템플릿을 구문 분석 할 수 있습니다.

$val = yield $promise WebSockets를 사용하여 연결 HomeAction 거의 설정했습니다. 마지막으로해야 할 일은 Websockets를 통해 백엔드와 프론트 엔드를 연결하는 것입니다. 나는 새로운 수업을 사용하여 비교적 간단하다는 것을 알았습니다. app/Actions/HomeAction.pre : 에서

) :
<code class="language-php">return Pre\processAndRequire(__DIR__ . "/config.pre");</code>
이제 JS를 변경 하여이 WebSocket에 연결하고 연결된 모든 사람에게 메시지를 보낼 수 있습니다.

: 에서 assets/js/component.jsx 객체를 만들 때 WebSocket 서버에 연결하고 새 메시지에 대한 이벤트 리스너를 추가합니다. 디버깅 코드를 추가하여 올바르게 연결하고 새 메시지를 보내도록했습니다.

우리는 PHP와 WebSockets에 대해 나중에 더 자세히 설명 할 것입니다. 걱정하지 마십시오.
<code class="language-json">"require": {
  "amphp/aerys": "dev-amp_v2",
  "amphp/parallel": "dev-master",
  "league/container": "^2.2",
  "league/plates": "^3.3",
  "pre/short-closures": "^0.4.0"
},
"require-dev": {
  "phpunit/phpunit": "^6.0"
},</code>
요약

assets/js/app.jsx이 섹션에서는 간단한 비동기 PHP 웹 서버를 설정하는 방법, 비 라벨 프로젝트에서 Laravel Mix를 사용하는 방법 및 Websockets를 사용하여 백엔드 및 프론트 엔드를 연결하는 방법을 살펴 보았습니다.

와우! 그것은 많은 콘텐츠를 다루고 있으며 아직 게임 코드 라인을 작성하지 않았습니다. 두 번째 부분에서 저와 함께하면 게임 로직 구축을 시작하고 인터페이스를 반응합니다.

(이 기사는 Niklas Keller에 의해 동료 검토되었습니다. Sitepoint의 모든 동료 검토 자 덕분에 Sitepoint의 내용을 최대한 활용했습니다!) .

REACTJS 및 PHP 를 사용한 게임 개발을위한 FAQ 게임 개발에서 Reactjs 및 PHP 호환성은 어떻습니까? Reactjs 및 PHP는 게임 개발에서 매우 호환됩니다. Reactjs는 사용자 인터페이스, 특히 단일 페이지 응용 프로그램에 이상적인 JavaScript 라이브러리입니다. 빠르고 반응이 좋은 웹 디자인을 허용합니다. 반면, PHP는 백엔드 개발에 매우 ​​적합한 서버 측 스크립팅 언어입니다. 데이터베이스, 사용자 인증 및 서버 측 로직을 처리 할 수 ​​있습니다. 함께 사용하면 Reactjs는 프론트 엔드를 처리하고 동적 및 대화식 사용자 인터페이스를 만들 수 있으며 PHP는 백엔드를 관리 할 수 ​​있습니다. reactjs 게임에서 게임 로직에 PHP를 사용할 수 있습니까?

예, Reactjs 게임에서 게임 로직에 PHP를 사용할 수 있습니다. Reactjs는 사용자 인터페이스를 처리하지만 PHP는 서버 측에서 게임 로직을 관리 할 수 ​​있습니다. 여기에는 데이터 처리, 사용자 세션 관리 및 게임 규칙 제어가 포함됩니다. 이러한 우려의 분리는보다 질서 있고 효율적인 개발 프로세스를 가능하게합니다. 게임 개발에 Reactjs를 사용하면 어떤 이점이 있습니까? Reactjs는 게임 개발에 많은 이점을 제공합니다. 가상 DOM을 사용하면 효율적인 업데이트 및 렌더링이 가능하여 게임을 더 매끄럽게 만듭니다. 또한 재사용 가능한 구성 요소를 지원하여 개발 시간을 크게 높일 수 있습니다. 또한 Reactjs는 문제에 대한 솔루션을 쉽게 찾거나 새로운 기술을 배울 수 있도록 거대한 커뮤니티와 풍부한 자원을 보유하고 있습니다.

게임 개발에 PHP를 사용하면 어떤 장점이 있습니까?

PHP는 게임 개발에 많은 장점이 있습니다. 서버 측 언어이므로 데이터 관리, 사용자 인증 및 서버 측 게임 로직을 처리 할 수 ​​있습니다. PHP는 또한 배우기 쉽고 간단한 구문을 가지고 있으며 거대한 개발자 커뮤니티가 있습니다. 또한 확장 가능성이 높으므로 많은 사용자를 처리 해야하는 게임에 적합합니다.

Reactjs 및 PHP로 게임 개발을 시작하는 방법은 무엇입니까?

REACTJS 및 PHP로 게임을 개발하기 위해서는 먼저 두 언어의 기본 사항을 배워야합니다. 많은 온라인 리소스와 튜토리얼이 있습니다. 이 언어에 익숙해지면 간단한 게임을 구축하여 시작할 수 있습니다. 이것은 기본 텍스트 게임 또는 간단한 퍼즐 게임 일 수 있습니다. 더 많은 경험을 얻을 수 있으면 더 복잡한 게임을 구축 할 수 있습니다.

REACTJ 및 PHP를 사용하여 게임 개발에 도움이되는 리소스 또는 라이브러리는 무엇입니까?

예, Reactjs 및 PHP를 사용하여 게임 개발에 도움이 될 수있는 몇 가지 리소스와 라이브러리가 있습니다. Reactjs의 경우 React Game Kit 및 React Game Engine과 같은 라이브러리가 매우 유용합니다. PHP의 경우 PHP-SDL 또는 Wyvern과 같은 라이브러리가 유용 할 수 있습니다. 또한 온라인으로 많은 튜토리얼, 가이드 및 포럼이 있습니다. 자세한 내용은 더 배우고 도움을받을 수 있습니다.

reactjs 및 php를 사용하여 멀티 플레이어 게임을 구축 할 수 있습니까?

예, Reactjs 및 PHP를 사용하여 멀티 플레이어 게임을 구축 할 수 있습니다. Reactjs는 사용자 인터페이스를 처리 할 수 ​​있으며 PHP는 플레이어 세션 관리 및 여러 클라이언트의 게임 상태 동기화를 포함하여 서버 측로 로직을 관리 할 수 ​​있습니다.

reactjs 및 php를 사용하여 어떤 유형의 게임을 구축 할 수 있습니까?

reactjs 및 php를 사용하면 다양한 게임을 구축 할 수 있습니다. 여기에는 간단한 텍스트 게임, 퍼즐 게임, 플랫폼 게임, 롤 플레잉 게임 및 멀티 플레이어 온라인 게임이 포함됩니다. 가능성은 엄청나고 한계는 실제로 당신의 상상력과 기술 수준입니다.

Reactjs 및 PHP를 사용하여 개발 된 게임에서 데이터를 처리하는 방법은 무엇입니까?

REACTJ 및 PHP를 사용하여 개발 된 게임에서 서버 측 PHP를 사용하여 데이터를 처리 할 수 ​​있습니다. 여기에는 플레이어 데이터, 게임 상태, 점수 등이 포함될 수 있습니다. 이 데이터는 데이터베이스에 저장 될 수 있으며 PHP를 사용 하여이 데이터베이스와 상호 작용하여 필요에 따라 데이터를 검색하고 업데이트 할 수 있습니다.

reactjs를 사용하여 개발 된 게임에서 사용자 입력을 처리하는 방법은 무엇입니까?

reactjs를 사용하여 개발 된 게임에서 사용자 입력은 React의 이벤트 처리 시스템을 사용하여 처리 할 수 ​​있습니다. 여기에는 마우스 클릭, 키보드 키 및 터치 이벤트가 포함될 수 있습니다. React의 이벤트 처리 시스템은 강력하고 유연하여 게임이 사용자 입력에 어떻게 응답하는지 쉽게 제어 할 수 있습니다.

위 내용은 React 및 PHP를 통한 게임 개발 : 얼마나 호환됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.