Back to Question Center
0

প্রতিক্রিয়া এবং পিএইচপি সঙ্গে খেলা উন্নয়ন: তারা সমঞ্জসে তারা কি?            প্রতিক্রিয়া এবং পিএইচপি সঙ্গে খেলা উন্নয়ন: তারা সমঞ্জসে তারা কি? সম্পর্কিত বিষয়: API গুলি নিরাপত্তার ডেটাবেসফারফাঁস & স্কিলিং উন্নয়ন সমলয়

1 answers:
প্রতিক্রিয়া এবং পিএইচপি সঙ্গে খেলা উন্নয়ন: তারা সমঞ্জসে তারা কি?

পিএইচপি এবং ReactJS সঙ্গে খেলা উন্নয়ন

  • প্রতিক্রিয়া এবং পিএইচপি সঙ্গে খেলা উন্নয়ন: তারা সমঞ্জসে তারা কি?
  • প্রতিক্রিয়া, পিএইচপি, এবং ওয়েবসকেটগুলির সাথে পদ্ধতিগতভাবে তৈরি গেম ভূখণ্ড

একটি উচ্চ মানের, প্রতিক্রিয়া করার জন্য গভীরতার ভূমিকা জন্য, আপনি কানাডিয়ান পূর্ণ স্ট্যাক বিকাশকারী ওয়েস Bos আগে যেতে পারে না। এখানে তার কোর্স চেষ্টা করুন, এবং কোড ব্যবহার করুন SITEPOINT পেতে 25% বন্ধ এবং সহায়তা সাইটপয়েন্ট সহায়তা।

"আমি একটি মাল্টিপ্লেয়ার, অর্থনীতি ভিত্তিক খেলা তৈরি করতে চাই। স্টুডেন্টস সেমল্টের মত কিছু, কিন্তু বন্ধুত্বপূর্ণ দিক এবং প্লেয়ার-ভিত্তিক অর্থনীতির কেউ নেই। "

আমি এই মুহূর্তে ভাবতে শুরু করলাম যে আমি পিএইচপি ও সেমটিট ব্যবহার করে একটি গেম তৈরি করার চেষ্টা করেছি এবং তৈরি করেছি। সমস্যা হল, আমি মাল্টিপ্লেয়ার গেমসের গতিবিদ্যা সম্পর্কে কিছুই জানতাম না, বা কিভাবে প্লেয়ার-ভিত্তিক অর্থনীতি সম্পর্কে ভাবতে ও বাস্তবায়ন করতে পারি।

প্রতিক্রিয়া এবং পিএইচপি সঙ্গে খেলা উন্নয়ন: তারা সমঞ্জসে তারা কি?প্রতিক্রিয়া এবং পিএইচপি সঙ্গে খেলা উন্নয়ন: তারা সমঞ্জসে তারা কি? সম্পর্কিত বিষয়:
APIs নিরাপত্তার ডেটাবেসফর্ফারেন্স এবং স্কেলিং ডেভেলপমেন্ট সেমিট

আমি নিশ্চিত ছিলাম না যে আমি এটি ব্যবহার করে যথাযথভাবে সেমটিট সম্পর্কে জানতাম। আমি বলতে চাচ্ছি, প্রাথমিক ইন্টারফেস - যেখানে আমি সার্ভার এবং গেমটির অর্থনৈতিক দিকের উপর গুরুত্ত্বপূর্ণভাবে মনোনিবেশ করেছি - সেমাল্টের জন্য পুরোপুরি উপযুক্ত। কিন্তু যখন আমি চাষ / মিথষ্ক্রিয়া বিষয়গুলি শুরু করতে যাচ্ছি তখন কি? আমি অর্থনৈতিক সিস্টেমের কাছাকাছি একটি isometric ইন্টারফেস নির্মাণের ধারণা ভালোবাসি।

প্রস্তাবিত কোর্স

একবার আমি মৃত_লগোসির একটি বক্তব্য দেখেছি, যেখানে তিনি পিএইচপি-তে একটি মধ্যযুগীয় খেলা নির্মাণের বর্ণনা দিয়েছেন। মার্গারেট আমাকে অনুপ্রাণিত করেছেন, এবং সেই আলোচনাগুলি ছিল এমন একটি বিষয় যা আমাকে JS গেম ডেভেলপমেন্ট সম্পর্কে একটি বই লিখতে পরিচালিত করেছিল। আমি আমার অভিজ্ঞতা সম্পর্কে লিখতে দৃঢ়প্রতিজ্ঞ হয়ে ওঠে। এই ক্ষেত্রে আমার ভুল থেকে শিখতে পারে স্যামল্ট অন্যদেরও।


এই অংশটির কোডটি পাওয়া যাবে: github। কম / assertchris-টিউটোরিয়াল / SitePoint গ্রহণের-গেম / গাছ / পার্ট 1। আমি এটি পিএইচপি 7 এর সাথে পরীক্ষা করেছি। 1 এবং গুগল ক্রোমের সাম্প্রতিক সংস্করণে।


ব্যাক এন্ড সেট আপ

প্রথম যে জিনিসটি আমি অনুসন্ধান করেছি তা হল মাল্টিপ্লেয়ার অর্থনীতি গড়ে তুলতে নির্দেশিকা। আমি একটি চমৎকার স্ট্যাক সেমিট থ্রেড খুঁজে পেয়েছি যার মধ্যে লোকেরা বিভিন্ন বিষয়ে চিন্তা করার জন্য বিভিন্ন বিষয়ে ব্যাখ্যা করেছেন। আমি ভুল জায়গায় থেকে শুরু হতে পারে অনুধাবন আগে এটি মাধ্যমে প্রায় অর্ধেক পেয়েছিলাম।

"প্রথম জিনিস প্রথম: আমার একটি পিএইচপি সার্ভার প্রয়োজন। আমি প্রতিক্রিয়া ক্লায়েন্ট এর একটি গুচ্ছ আছে যাচ্ছি, তাই আমি কিছু উচ্চ সমান্তরাল (সম্ভবত এমনকি স্যামাল্ট) সক্ষম করতে চান এবং এটা স্থায়ী হতে হবে: খেলোয়াড় কাছাকাছি না হয়, এমনকি যখন জিনিষ ঘটতে হবে "

আমি একটি অ্যাসিঙ্ক পিএইচপি সার্ভার সেটআপ করার জন্য কাজ করতে গিয়েছিলাম - উচ্চ একত্রীকরণ এবং সমর্থন মিমাংসা করার জন্য। আমি পিএইচপি preprocessors সঙ্গে আমার সাম্প্রতিক কাজ জিনিষ ক্লিনার করতে যোগ করা, এবং অন্তর্বর্তী প্রথম দম্পতি তৈরি।

থেকে config প্রাক :

     $ হোস্ট = নতুন Aerys \ হোস্ট   ;$ হোস্ট-> প্রকাশ ("*", 8080);$ হোস্ট-> ব্যবহার করুন ($ রাউটার = এরিস \ রাউটার   );$ host-> ব্যবহার করুন ($ root = Aerys \ root (। "/ পাবলিক"));$ web = প্রসেস । "/ রুট / ওয়েব। প্রাক";$ ওয়েব ($ রাউটার);$ api = প্রক্রিয়া । "/ রুট / api। pre";$ API ($ রাউটার);    

আমি অ্যাপ্লিকেশনটির HTTP এবং ওয়েবসকেট অংশগুলির জন্য স্যামাল্ট ব্যবহার করার সিদ্ধান্ত নিয়েছে। এই কোড Semalt ডক্স থেকে খুব আলাদা দেখেছি, কিন্তু যে কারণ আমি প্রয়োজন কি সম্পর্কে একটি ভাল ধারণা ছিল

একটি semalt অ্যাপ্লিকেশন চালানোর জন্য স্বাভাবিক প্রক্রিয়া এই মত একটি কমান্ড ব্যবহার ছিল:

   বিক্রেতা / বিন / aerys -d -c config পিএইচপি    

পুনরাবৃত্তি করার জন্য অনেক কোড স্যাম্পল করুন, এবং এটি সত্য যে আমি পিএইচপি প্রি্পসেসিং ব্যবহার করতে চেয়েছিলাম আমি একটি লোডার ফাইল তৈরি. php :

     রিটার্ন পূর্ব \ প্রসেসঅন্যার (__ ডির .__ / "/ config। Pre");    

তারপর আমি আমার নির্ভরতা ইনস্টল এটি থেকে সুরকার। জেসন :

     "প্রয়োজন": {"amphp / aerys": "dev-amp_v2","amphp / সমান্তরাল": "দেব-মাস্টার","লিগ / কন্টেনার": "^ 2।""লিগ / প্লেটস": "^ 3। 3","প্রাক / সংক্ষিপ্ত বন্ধ": "^ 0 4. 0"},"need-dev": {"phpunit / phpunit": "^ 6। 0"},    

আমি amphp / সমান্তরাল ব্যবহার করতে চেয়েছিলেন, এএসসিঙ্ক সার্ভার থেকে ব্লকিং কোডটি সরাতে, কিন্তু এটি amphp / aerys এর একটি স্থিতিশীল ট্যাগ দিয়ে ইনস্টল করা হবে না। তাই আমি dev-amp_v2 শাখা সঙ্গে গিয়েছিলাম।

আমি ভাবলাম, কিছু টেমপ্লেট ইঞ্জিন এবং সার্ভিস লোকেটার অন্তর্ভুক্ত করা একটি ভাল ধারণা হবে। আমি প্রতিটি পিএইচপি লিগ সংস্করণ জন্য পছন্দ। পরিশেষে আমি pre / short-closures , উভয় কাস্টম সিন্টেক্স কনফিগারে পরিচালনা করতে। প্রাক এবং ছোট বন্ধন আমি পরিকল্পনা পরে পরিকল্পনা .

তারপর আমি রুট ফাইল তৈরি সম্পর্কে সেট। থেকে রুট / ওয়েব প্রাক :

     Aerys \ রাউটার ব্যবহার;অ্যাপ্লিকেশন \ অ্যাকশন / হোম অ্যাকশন ব্যবহার করুন;প্রত্যাবর্তন (রাউটার $ রাউটার) => {$ Router-> রুট ("GET", "/", নতুন হোমঅ্যাকশন);};    

এবং, রুট / এপিআই থেকে প্রাক :

     Aerys \ রাউটার ব্যবহার;অ্যাপ্লিকেশন \ অ্যাকশন \ Api \ HomeAction ব্যবহার করুন;প্রত্যাবর্তন (রাউটার $ রাউটার) => {$ Router-> রুট ("GET", "/ api", নতুন হোমঅ্যাকশন);};    

সহজ রুট যদিও, এই আমাকে কোড পরীক্ষা করতে সাহায্য config। প্রাক আমি এই রুট ফাইল ফেরত বন্ধ করার সিদ্ধান্ত নিয়েছে, তাই আমি তাদের একটি টাইপ $ রাউটার পাস করতে পারে, যা তারা তাদের নিজস্ব রুট যোগ করতে পারে অবশেষে, আমি দুটি (অনুরূপ) কর্ম তৈরি।

থেকে অ্যাপ্লিকেশন / কর্ম / হোমঅ্যাকশন প্রাক :

     নামস্থান অ্যাপ \ অ্যাকশন;Aerys \ অনুরোধ ব্যবহার করুন;Aerys \ প্রতিক্রিয়া ব্যবহার করুন;ক্লাস হোমঅ্যাকশন{পাবলিক ফাংশন __ মানক (অনুরোধ $ অনুরোধ,প্রতিক্রিয়া $ প্রতিক্রিয়া){$ প্রতিক্রিয়া-> শেষ ("হ্যালো ওয়ার্ল্ড");}}    

এক চূড়ান্ত স্পর্শ শাটট স্ক্রিপ্ট যোগ করা ছিল, সেমিট সার্ভারের দেব এবং প্রড সংস্করণগুলি আরম্ভ করতে।

থেকে সুরকার জেসন :

     "স্ক্রিপ্ট": {"dev": "বিক্রেতা / বিন / aerys -d -c লোডার। php","prod": "বিক্রেতা / বিন / এরিস -সি লোডার। php"},"কনফিগ": {"প্রক্রিয়া-টাইমআউট": 0},    

এই সব সম্পন্ন সঙ্গে, আমি একটি নতুন সার্ভার স্পিন পারে, এবং HTTP 127 দেখুন। 0 - audemars piguet diamond watch replica. 0. 1: 8080 শুধু টাইপ দ্বারা:

   সঙ্গীতজ্ঞ দেব    

ফ্রন্ট এন্ড সেট আপ

"ঠিক আছে, এখন আমি পিএইচপি অপেক্ষাকৃত স্থিতিশীল জিনিস পেয়েছি; কিভাবে ReactJS ফাইল নির্মাণ করতে যাচ্ছি? সম্ভবত আমি ল্যারেজ মিক্স ব্যবহার করতে পারি . ? "

আমি একটি সম্পূর্ণ নতুন বিল্ডিং শৃঙ্খল তৈরিতে আগ্রহী ছিলাম না, এবং অণু-লরেল প্রকল্পে ভাল কাজ করার জন্য মিক্স পুনর্নির্মাণ করা হয়েছিল। সেমিট এটি কনফিগার এবং প্রসারিত তুলনায় অপেক্ষাকৃত সহজ ছিল, এটি ডিফল্ট দ্বারা VueJS সমর্থিত।

প্রথম কাজটি আমি করতে চেয়েছিলাম কিছু এনপিএম নির্ভরতা ইনস্টল করা হয়েছিল। প্যাকেজ থেকে জেসন :

     "ডিভাইডেনপয়েন্টেন্সস": {"babel-preset-react": "^ 6। 23. 0","বুটস্ট্র্যাপ-সাস": "3। 3. 7","jquery": "^ 3। 1. 1","লারেল-মিশ্রণ": "^ 0। 5 5","প্রতিক্রিয়া": "^ 15। 4. 2","প্রতিক্রিয়া- dom": "^ 15। 4. 2","ওয়েবপ্যাক": "^ 2. 2. 1"},    

প্রাক প্রক্রিয়াকরণ এবং জেএস এবং CSS ফাইলগুলি বান্ডিল করার জন্য ওয়েবপ্যাক ব্যবহার করুন। আমি jsx ফাইল নির্মাণ করতে প্রতিক্রিয়া এবং সংশ্লিষ্ট Babel লাইব্রেরি ইনস্টল করার প্রয়োজন। অবশেষে, ডিফল্ট স্টাইলিংয়ের জন্য আমি বুটস্ট্রাফ ফাইল যুক্ত করেছি।

স্বয়ংক্রিয়ভাবে একটি কাস্টম কনফিগারেশন ফাইল লোড করুন, তাই আমি নিম্নলিখিত যোগ। থেকে ওয়েবপ্যাক মিশ্রিত করা। জেএস :

     মিশ্রণ = প্রয়োজন ("লারেল-মিশ্রণ")// jsx ফাইলগুলির জন্য লোড বাবল প্রিসেটগুলিমিশ্রিত করা। webpackConfig ({"মডিউল": {"নিয়ম": [{"পরীক্ষা": / jsx $ /,"বাদ করুন": / (নোড_মডুলিয়াল) /,"লোডার": "ব্যাবেল-লোডার" + মিশ্রণ। কনফিগ. setPublicPath ( "পাবলিক")মিশ্রিত করা। js ("সম্পদ / জেএস / অ্যাপ্লিকেশন। jsx", "পাবলিক / জেএস / অ্যাপ্লিকেশন। জেএস")মিশ্রিত করা। sass ("সম্পদ / এসসিএস / অ্যাপ্লিকেশন scss", "পাবলিক / CSS / অ্যাপ্লিকেশন। CSS")মিশ্রিত করা। সংস্করণ       

আমি ম্যাক্সকে জেএসএক্স ফাইলগুলির সাথে কী করতে হবে তা বলার দরকার ছিল, তাই আমি একই ধরণের কনফিগারেশনটি যোগ করেছিলাম (সাধারণতঃ)। বাবেল্রক আমি অ্যাপ্লিকেশন এর বিভিন্ন বিট এবং bobs মধ্যে একক JS এবং CSS এন্ট্রি পয়েন্ট আছে পরিকল্পনা।

নোট: মিক্সের ভবিষ্যত সংস্করণগুলি ReactJS সম্পদ নির্মাণের জন্য অন্তর্নির্মিত সমর্থন দিয়ে জাহাজ চালাবে। যখন ঘটে, মিশ্রণ। ওয়েবপ্যাক কনফিগার কোড সরানো যাবে।

আবার, গুরুতর টাইপ করার জন্য আমি কিছু শর্টকাট স্ক্রিপ্ট তৈরি করেছি। প্যাকেজ থেকে জেসন :

     "স্ক্রিপ্ট": {"dev": "$ npm_package_config_webpack","ঘড়ি": "$ npm_package_config_webpack -w","prod": "$ npm_package_config_webpack -p"},"কনফিগ": {"ওয়েবপ্যাক": "ওয়েবপ্যাক - অগ্রগতি --হাইড-মডিউল --config = নোড_মডুলস / ল্যারেল-মিক্স / সেটআপ / ওয়েবপ্যাক। config.js"},    

তিনটি স্ক্রিপ্ট ওয়েবপ্যাক ভেরিয়েবল কমান্ড ব্যবহার করে, তবে তারা যা পারতো তা অতিক্রম করে ভিন্ন। dev JS এবং CSS ফাইলগুলির একটি ডিবাব সংস্করণ তৈরি করেছে। -উই সুইচটি ওয়েবপ্যাক রক্ষণকারী (যাতে বৃত্তগুলি আংশিকভাবে পুনর্নির্মাণ করা যেতে পারে) শুরু করে। -পি সুইচ বান্ডিল একটি পাতলা উত্পাদন সংস্করণ সক্রিয়।

যেহেতু আমি বান্ডেল সংস্করণ ব্যবহার করে থাকি, তাই আমি / জেএস / এ্যাপের মত ফাইলগুলিকে রেফার করার একটি উপায় প্রয়োজন। 60795d5b3951178abba1। জেএস হ্যাশ না জানার পর আমি লক্ষ্য করেছি ম্যাজিক একটি ম্যানিফেস্ট ফাইল তৈরি করতে পছন্দ করেছে, তাই আমি এটির জন্য একটি সহায়ক ফাংশন তৈরি করেছি। সাহায্যকারী থেকে প্রাক :

     Amp \ Coroutine ব্যবহার;ফাংশন মিশ্রণ ($ পথ) {$ জেনারেটর =    => {$ ম্যানিফেস্ট = ফলন আম্প ফাইল \ get ("। / public / mix-manifest। json");$ manifest = json_decode ($ ম্যানিফেস্ট, সত্য);যদি (isset ($ ম্যানিফেস্ট [$ পাথ])) {$ ম্যানিফেস্ট প্রত্যাবর্তন [$ পাথ];}নতুন ব্যতিক্রম ("{$ পাথ} খুঁজে পাওয়া যায় নি");};নতুন Coroutine ফিরে ($ জেনারেটর   );}    

Aerys প্রতিশ্রুতি হ্রাস কিভাবে জানত কিভাবে তারা $ val = ফলন $ প্রতিশ্রুতি আকারে এসেছিলেন, তাই আমি Amp এর প্রতিশ্রুতি বাস্তবায়ন ব্যবহার যখন ফাইলটি পড়া এবং ডিকোড করা হয়েছিল, তখন আমি মিলিত ফাইলের পথটি খুঁজছিলাম। আমি সংশোধন হোমঅ্যাকশন । থেকে অ্যাপ্লিকেশন / কর্ম / হোমঅ্যাকশন প্রাক :

     পাবলিক ফাংশন __ মানক (অনুরোধ $ অনুরোধ,প্রতিক্রিয়া $ প্রতিক্রিয়া){$ পাথ = ফলন মিশ্রণ ("/ জেএস / অ্যাপ্লিকেশন। জেএস");$ Response-> শেষ ( " 
March 1, 2018