Back to Question Center
0

प्रतिक्रिया आणि PHP सह गेम विकास: ते किती सुसंगत आहेत?            प्रतिक्रिया आणि PHP सह खेळ विकास: ते किती सुसंगत आहेत? संबंधित विषय: APIs सुरक्षितताडेटाबेसपरफोर्मेंस & स्केलिंग विकास लघु

1 answers:
प्रतिक्रिया आणि PHP सह गेम डेव्हलपमेंट: ते किती सुसंगत आहेत?

पीएचपी आणि रिएक्टजेएस सह गेम डेव्हलपमेंट

  • प्रतिक्रिया आणि PHP सह गेम डेव्हलपमेंट: ते किती सुसंगत आहेत?
  • रिऍक्ट, पीएचपी, आणि वेबसकेट्स सह प्रक्रियात्मक तयार केलेले प्लेन

उच्च दर्जाच्या, प्रतिक्रिया देण्यासाठी सखोल परिचय, आपण कॅनेडियन पूर्ण-स्टॅक विकसक वेस बॉसच्या आधी जाऊ शकत नाही. येथे आपला कोर्स वापरून पहा आणि कोड वापरा SITEPOINT मिळविण्यासाठी 25% बंद आणि साइटपॉईंटस मदत करण्यास मदत करण्यासाठी

"मला एक मल्टीप्लेअर, इकॉनॉमी-आधारित गेम बनवायचा आहे. स्टारड्यू मिमलट सारखे काहीतरी, परंतु मैत्रीपूर्ण पैलू आणि एक खेळाडू-आधारित अर्थव्यवस्था असत नाही. "(2 9)

या वेळी मी PHP आणि Semalt चा वापर करुन गेम तयार करण्याचा प्रयत्न केला. समस्या आहे, मला मल्टीप्लेअर गेमच्या गतिशीलतेबद्दल किंवा प्लेअर-आधारित अर्थव्यवस्थांबद्दल विचार आणि अंमलबजावणी कशी करायची याबद्दल काहीहीच माहिती नव्हती.

प्रतिक्रिया आणि PHP सह गेम विकास: ते किती सुसंगत आहेत?प्रतिक्रिया आणि PHP सह खेळ विकास: ते किती सुसंगत आहेत? संबंधित विषय:
APIsSecurityDatabasePerformance & ScalingDevelopment मिमल

मला खात्री होती की मला याचा वापर करून योग्यतेने मीमीलबद्दल पुरेसे माहित होते - fotografos del cuerpo humano. म्हणजे, प्रारंभिक इंटरफेस - जेथे मी सर्व्हरवर फारसे लक्ष केंद्रित करतो आणि गेमच्या आर्थिक पैलूंवर - मीमलेटसाठी उत्तम प्रकारे उपयुक्त आहे पण जेव्हा मी शेतकरी / संवाद साधणे सुरू करतो तेव्हा काय? आर्थिक प्रणालीभोवती एक समस्थानिक इंटरफेस तयार करण्याची कल्पना मला आवडते.

शिफारस अभ्यासक्रम

मी एकदा dead_lugosi द्वारे एक चर्चा पाहिली, जेथे ती PHP मध्ये मध्ययुगीन खेळ इमारत वर्णन. मार्गारेट यांनी मला प्रेरित केले, आणि हे वार्ता एक अशा गोष्टींपैकी एक होते ज्याने मला जेएस गेम विकासाबद्दल एक पुस्तक लिहून नेले. मी माझ्या अनुभवाविषयी लिहायचे ठरवले. या प्रकरणात माझ्या चुका जाणून घेतल्याशिवाय श्रीमंत इतरही शिकू शकतात.


या भागाचा कोड येथे आढळू शकतो: github. com / assertchris-tutorials / sitepoint-making-games / tree / part-1 मी PHP 7 सह चाचणी केली. 1 आणि Google Chrome च्या अलीकडील आवृत्तीत (2 9)


बॅक एन्ड सेट करणे

मी पहिली गोष्ट म्हणजे मल्टीप्लेअर इकॉनॉमीजच्या बिल्डिंगवर मार्गदर्शन. मला एक उत्कृष्ट स्टॅक मिमल धागा सापडला ज्यामध्ये लोक विचार करण्यासाठी विविध गोष्टी समजावले. मी चुकीच्या ठिकाणी सुरू केली गेली आहे हे लक्षात येण्यापूर्वीच मी अर्धावेळा या माध्यमातून पोहोचलो.

"प्रथम गोष्टी प्रथम: मला एका PHP सर्व्हरची गरज आहे. मी रिअॅक्ट क्लायंट्सचा एक समूह असणार आहे, म्हणून मला काहीतरी उच्च-एकमत (कदाचित अगदी मिमल) करण्यास सक्षम आहे. आणि ते कायम टिकणे आवश्यक आहे: खेळाडूंना भोवतालच्या काळातही घडत असलेच पाहिजे. "(2 9)

उच्च संमतता आणि समर्थन हाताळण्यासाठी मी एक async PHP सर्व्हर सेट करण्यावर कार्य करण्यासाठी गेलो. गोष्टी स्वच्छ करण्यासाठी मी PHP च्या पूर्वप्रक्रियेसह माझे अलीकडील कार्य जोडले आणि प्रथम दोन बिंदू जोडले.

कडून संरचना पूर्व :

     $ host = नवीन Aerys \ होस्ट   ;$ host-> उघड करा ("*", 8080);$ host-> वापरा ($ राऊटर = Aerys \ router   );$ host-> वापरा ($ root = Aerys \ root (". / public"));$ web = प्रक्रिया . "/ मार्ग / वेब."$ web ($ राऊटर);$ api = प्रक्रिया . "/ मार्ग / api. pre";$ api ($ राऊटर);   (6 9) 

मी अनुप्रयोगाच्या HTTP आणि वेबसॉकेट भागांसाठी Semaltचा वापर करण्याचा निर्णय घेतला. हा कोड मिमल डॉक्सच्या तुलनेत खूपच वेगळा होता, परंतु त्यासाठी मला काय हवे आहे याबद्दल मला चांगली कल्पना होती.

Semalt अॅप चालवण्याची सामान्य प्रक्रिया म्हणजे अशी आज्ञा वापरणे.

   विक्रेता / बिन / aerys -d -c संरचना php   (6 9) 

पुनरावृत्ती ठेवण्यासाठी बरेच कोड नमूद करा आणि हे सत्य हाताळत नाही की मला PHP ची पूर्वप्रक्रिया वापरायची आहे. मी एक लोडर फाइल तयार केली. php :

     परत प्री \ प्रोसेसआंडरक्वेअर (__आयआयआर__. "/ Config. Pre");   (6 9) 

मी नंतर माझ्या निर्भरता स्थापित केली हे संगीतकार आहे. जेसन :

  (9 3) "need": {"amphp / aerys": "dev-amp_v2","amphp / parallel": "dev-master","लीग / कंटेनर": "^ 2. 2","लीग / प्लेट्स": "^ 3. 3","पूर्व / अल्प-बंद": "^ 0 4. 0"},"need-dev": {"phpunit / phpunit": "^ 6. 0"},   (6 9) 

मी async server च्या ब्लॉकिंग कोडला हलविण्यासाठी amphp / parallel वापरू इच्छित होते, परंतु amphp / aerys च्या स्थिर टॅगसह ते स्थापित करणार नाही. म्हणूनच मी dev-amp_v2 शाखा सह गेला.

मला वाटले की काही प्रकारचे टेम्पलेट इंजिन आणि सर्व्हिस लोकेटर समाविष्ट करणे ही एक चांगली कल्पना आहे. मी प्रत्येकाची PHP लिग आवृत्ती निवडली. अखेरीस मी प्री / शॉर्ट-क्लोजर जोडले, कॉन्फिगमध्ये सानुकूल सिंटॅक्स हाताळण्यासाठी दोन्ही प्री आणि मी वापरल्यानंतर नियोजित केल्या जाणार्या लहान बंद .

मग मी मार्ग फाइल तयार करण्याबद्दल सेट केले. मार्ग / वेबवरून पूर्व :

     Aerys \ राऊटर वापरा;अॅप \ अॅक्शन \ होम ऍक्शन वापरा;परतीच्या (राऊटर $ राउटर) => {$ राउटर-> मार्ग ("GET", "/", नवीन होम अॅक्शन);};   (6 9) 

आणि, मार्ग / api पासून पूर्व :

     Aerys \ राऊटर वापरा;अॅप \ अॅक्शन \ एपी \ होम अॅक्शनचा वापर करा;परतीच्या (राऊटर $ राउटर) => {$ राउटर-> मार्ग ("GET", "/ api", नवीन होम ऍक्शन);};   (6 9) 

जरी साध्या मार्ग असले तरी ह्यामुळे मला कॉन्फिग मध्ये कोडची चाचणी घेण्यास मदत मिळाली. पूर्व मी या मार्गांनी परताव्याच्या रस्ते बनविण्याचा निर्णय घेतला, म्हणून मी त्यांना टाइप केलेला $ राऊटर पास करू शकलो जेणेकरून ते त्यांचे स्वतःचे पथ जोडतील. शेवटी, मी दोन (समान) क्रिया तयार केल्या.

कडून अनुप्रयोग / क्रिया / HomeAction पूर्व :

     नेमस्पेस ऍप / अॅक्शन;Aerys \ विनंती वापरा;Aerys \ Response वापरावर्ग होम ऍक्शन{सार्वजनिक कार्य __इनवोक (विनंती $ विनंती,प्रतिसाद $ प्रतिसाद{$ प्रतिसाद-> समाप्त ("हॅलो वर्ल्ड");}}   (6 9) 

डेमलाइन सर्व्हरच्या देव आणि प्रॉड व्हॉल्यूज लॉन्च करण्यासाठी शॉर्टकट स्क्रिप्ट्स जोडण्यासाठी एक अंतिम स्पर्श होता.

संगीतकार पासून जेसन :

  (9 3) "स्क्रिप्ट": {"dev": "विक्रेता / bin / aerys -d-c लोडर php","prod": "विक्रेता / बिन / aerys-c लोडर php"},"config": {"प्रक्रिया-कालबाह्य": 0},   (6 9) 

हे सर्व पूर्ण झाल्यानंतर, मी एक नवीन सर्व्हर फिरेल आणि भेट द्या http: // 127. 0. 0. 1: 8080 फक्त टाईप करून:

   संगीतकार देव   (6 9)

फ्रंट एंड सेट अप

"ठीक आहे, आता मला PHP च्या तुलनेत स्थिर गोष्टी मिळत आहेत; रिएक्टजेएस फाइल्स कसे तयार करणार आहोत? कदाचित मी लारॅल मिक्स करू शकेन . ? "

मी एक संपूर्ण नवीन बिल्ड शृंखला तयार करण्यास उत्सुक नव्हती, आणि मिश्रित पुन्हा गैर-लार्जर प्रकल्पांवर चांगले काम करण्यासाठी पुन्हा बांधले गेले. Semalt वाटणे हे कॉन्फिगर करणे सोपे होते आणि विस्तारित होते, त्यामुळे ते डीफॉल्टनुसार VueJS ला अनुकूल वाटले.

मी पहिली गोष्ट जी काही एनपीएम अवलंबन स्थापित केली होती. संकुल पासून जेसन :

  (9 3) "देव अवलंबन": {"babel-preset-react": "^ 6. 23. 0","bootstrap-sass": "^ 3 .3 7","jquery": "^ 3. 1. 1","लारवेल-मिक्स": "^ 0 .5 5","प्रतिक्रिया": "^ 15 .4 2","react-dom": "^ 15 .4 2","वेबपॅक": "^ 2 2. 1"},   (6 9) 

JS आणि CSS फायली पूर्वप्रक्रिया आणि बंडल करण्यासाठी वेबपॅक मिक्स करा. मी जेएसएक्स फाइल्स तयार करण्यासाठी रिएक्ट आणि संबंधित बेबेल लायब्ररी स्थापित करण्यासाठी देखील आवश्यक होते. अखेरीस, मी बूटस्ट्रॅप फाइल्स थोडी डीफॉल्ट शैलीसाठी जोडली.

मिक्स स्वयंचलितरित्या एक सानुकूल कॉन्फिगरेशन फाईल लोड करा, म्हणून मी खालील जोडले. वेबपॅकवरून मिसळा जेएस :

     मिश्रण = आवश्यक ("लारेवेल-मिक्स")// jsx फाईल्ससाठी लोड बॅबेल प्रिसेट्समिसळा वेबपॅकसंघ ({"module": {"नियम": [{"चाचणी": / jsx $ /,"वगळा": / (नोड_मॉड्यूल) /,"लोडर": "बॅबल-लोडर" + मिक्स. कॉन्फिगरेशन. setPublicPath ("सार्वजनिक")मिसळा जेएस ("ऍसेट / जेएस / एपी. जेएसएक्स", "पब्लिक / जेएस / अॅप. जेएस")मिसळा sass ("ऍसेट / स्कस्को / ऍप. स्कॉस्", "सार्वजनिक / सीएसएस / ऍप्लिकेशन सीएसएस")मिसळा आवृत्ती      (6 9) 

मला जेएसएक्स फायलींसह काय करावे ते मिक्सला सांगावे लागेल, म्हणून मी सामान्यत: मध्ये ठेवलेल्या सारख्या प्रकारचे कॉन्फिगरेशन जोडले. बॅबेल्राक मी ऍप्लिकेशनच्या वेगवेगळ्या बिट्स आणि बॉब्समध्ये सिंगल जेएस आणि सीएसएस एन्ट्री-पॉइंट्स तयार करण्याचा विचार केला.

नोटः मिक्सच्या भविष्यातील आवृत्त्या रिएक्टजेएस मालमत्तेच्या बांधणीसाठी अंगभूत आधार घेऊन येतील. जेव्हा तसे होते, तेव्हा मिश्रित webpackConfig कोड काढला जाऊ शकतो. (2 9)

पुन्हा एकदा, गंभीर टायपिंगवर जतन करण्यासाठी मी काही शॉर्टकट स्क्रिप्ट्स तयार केली आहेत. संकुल पासून जेसन :

  (9 3) "स्क्रिप्ट": {"dev": "$ npm_package_config_webpack","पहा": "$ npm_package_config_webpack -w","prod": "$ npm_package_config_webpack -p"},"config": {"वेबपॅक": "वेबपॅक --प्रोगित - हाइड-मॉड्यूल्स - कॉन्फिग = नोड_मॉड्यूल / लाअरवेल-मिक्स / सेटअप / वेबपॅक कॉन्फिग. जेएस"},   (6 9) 

सर्व तीन स्क्रिप्ट वेबपॅक व्हेरिएबल कमांड वापरत असत, परंतु त्यांनी या पलीकडे काय केले यावर मतभेद होते. dev ने जेएस आणि सीएसएस फाईल्सची डीबग आवृत्ती तयार केली. -व स्विच ने वेबपॅक व्यूअर सुरु केले (त्यामुळे बंडल आंशिकरित्या पुन्हा तयार केले जाऊ शकतील). -पी स्विचमुळे बंडलचे झीज उत्पादन आवृत्ती सक्षम झाली.

मी बंडल आवृत्ती वापरत असल्याने, मला / जेएस / अॅप्स फायलींचा संदर्भ देण्याचा मार्ग आवश्यक आहे. 60795d5b3951178abba1 हॅश माहित नसताना जेएस मी मॅनिफेस्टमध्ये मॅनिफेस्ट फाईल तयार करणे पसंत केल्याचे मला कळले, म्हणून मी त्यासाठी क्वेरीस मदत करणारा एक फंक्शन बनविला. मदतनीस कडून पूर्व :

     Amp \ Coroutine वापर;फंक्शन मिक्स ($ पथ) {$ जनरेटर =    => {$ manifest = उत्पन्न एम्पी फाइल (get ". / public / mix-manifest. json");$ manifest = json_decode ($ मॅनिफेस्ट, सत्य);जर (isset ($ मॅनिफेस्ट [$ path])) {$ मॅनिफेस्ट [$ पाथ] परत करा;}नवीन अपवाद टाकून द्या ("{$ path} सापडला नाही");};नवीन कॉरॉटाइन परत करा ($ जनरेटर   );}   (6 9) 

Aerys $ val = उत्पन्न $ वचन च्या स्वरूपात आल्या तर आश्वासनांना कसे हाताळता येते हे मला माहिती होते, त्यामुळे मी अॅम्पीच्या वचन अंमलबजावणीचा वापर केला. जेव्हा फाईल वाचली आणि डीकोड झाली, मी जुळणार्या फाइल पाथ शोधू शकते. मी समायोजित होम अॅक्शन . कडून अनुप्रयोग / क्रिया / HomeAction. पूर्व :

     सार्वजनिक कार्य __इनोक (विनंती $ विनंती,प्रतिसाद $ प्रतिसाद{$ path = उत्पन्न मिक्स ("/ जेएस / अॅप. जेएस");$ प्रतिसाद-> अंत (" 
March 1, 2018