⚠️ चेतावनी: Gameeky अभी भी विकास के शुरुआती चरण में है और इसलिए चीजें बदल सकती हैं।
📝 ध्यान दें: यह दस्तावेज़ Gameeky द्वारा की जा सकने वाली हर चीज़ पर एक विस्तृत अनुशिक्षण नहीं है, लेकिन यह आरंभ करने के लिए पर्याप्त दिशा-निर्देश प्रदान करता है।
Gameeky युवा शिक्षार्थियों और शिक्षकों को सहयोगात्मक खेल और सीखने के अनुभव बनाने और तलाशने की सुविधा देता है। अधिक विशेष रूप से:
📝 ध्यान दें: यह गेम इंजन के आकार का एक शिक्षण उपकरण है। यह कोई पेशेवर गेम इंजन नहीं है। यदि आप पेशेवर वीडियो गेम बनाने के लिए किसी टूल की तलाश में हैं, तो कृपया Godot गेम इंजन पर विचार करें।
अनुशंसित स्थापना विधि सिस्टम के सॉफ्टवेयर केंद्र के माध्यम से है, उदाहरण के लिए, GNOME Software। Gameeky खोजें और इसे स्थापित करें। वैकल्पिक रूप से, इसे Flathub से भी स्थापित किया जा सकता है। इसी तरह, Gameeky खोजें और वेबसाइट के निर्देशों का पालन करें।
अंततः, इसे टर्मिनल से भी स्थापित किया जा सकता है:
flatpak --user install flathub dev.tchx84.Gameeky
Gameeky विभिन्न रुचियों के लिए पूर्वनिर्धारित निर्माण खंड के समूह प्रदान करता है, उदाहरण के लिए, मध्ययुगीन काल्पनिक दुनिया में स्थापित एक कृषि भूमिका निभाने वाला [खेल] (https://github.com/tchx84/FreedomValley)। एक थीम समूह में शामिल हैं:
इन निर्माण खंड का उपयोग तदनुकूल दृश्य, नए खेल और कई शिक्षण सामग्री बनाने के लिए पुन: उपयोग किया जा सकता है।
अनुशंसित स्थापना विधि सिस्टम के सॉफ्टवेयर केंद्र के माध्यम से है, उदाहरण के लिए, GNOME Software। थीम समूह सॉफ्टवेयर सेंटर पृष्ठ से ऐडऑन के रूप में पेश किए जाते हैं। वैकल्पिक रूप से, इसे Flathub से भी स्थापित किया जा सकता है। इसी तरह, थीम समूह वेबसाइट से ऐडऑन के रूप में पेश किए जाते हैं। ऐडऑन का चयन करें और वेबसाइट के निर्देशों का पालन करें।
अंततः, समूहों को टर्मिनल से भी स्थापित किया जा सकता है:
flatpak --user remote-ls flathub | grep dev.tchx84.Gameeky.ThematicPack
flatpak --user install flathub dev.tchx84.Gameeky.ThematicPack.FreedomValley
Gameeky पैकेज पांच मुख्य घटक प्रदान करता है:
लॉन्चर Gameeky शुरुआती बिंदु के रूप में कार्य करता है। यह ~/Gameeky
निर्देशिका के अंतर्गत स्थित ऐडऑन और परियोजनाओं के रूप में स्थापित थीम समूहों को प्रबंधित
करने का एक आसान तरीका प्रदान करता है। प्रबंधक सभी बुनियादी प्रबंधन कार्यों का
समर्थन करता है:
लॉन्चर परियोजनाओं को साझा करने का एक सरल तरीका प्रदान करता है। किसी परियोजना को निर्यात करने के लिए, इन चरणों का पालन करें:
किसी परियोजना को आयात करने के लिए, इन चरणों का पालन करें:
प्लेयर खेल की दुनिया का एक दृश्य प्रतिनिधित्व और उस दुनिया के साथ सहभागिता करने का साधन प्रदान करता है।
खेल शुरू करने के लिए, लॉन्चर से परियोजना के खेलें बटन पर क्लिक करें। यह उस परियोजना के लिए तयशुदा दृश्य प्रारंभ करेगा। प्रत्येक थीम समूह और परियोजना एक तयशुदा दृश्य के साथ आता है। उसी परियोजना से अन्य दृश्य चलाने के लिए, इन चरणों का पालन करें:
एक बार खेल में, दृश्य अधिकांश स्क्रीन पर आ जाता है लेकिन अन्य तत्व भी होते हैं।
HUD एक इंटरफ़ेस है जो स्क्रीन के निचले केंद्र में रखा गया है। इस तत्व का उपयोग उपयोक्ता के चरित्र आंकड़ों को देखने के लिए किया जाता है। यह निम्नलिखित भागों से बना है:
एक अन्य तत्व संवाद दर्शक है। इस दर्शक को स्क्रीन के नीचे रखा गया है और इसका उपयोग खेल-में संवादों को प्रदर्शित करने के लिए किया जाता है, उदाहरण के लिए, खेल चरित्र या कथावाचक का संदेश। यह निम्नलिखित भागों से बना है:
एक बार खेल में, उपयोक्ता के चरित्र को दो तरीकों से नियंत्रित किया जा सकता है:
उपयोक्ता का चरित्र खेल की दुनिया के साथ बातचीत करने के लिए कई कार्रवाइयां कर सकता है:
खेल की स्थिति को किसी भी क्षण सहेजा जा सकता है और बाद में पुनर्स्थापित किया जा सकता है। सहेजी गयी फाइलें दृश्य की पूर्ण प्रतियां हैं और इसलिए नियमित दृश्य फाइलें हैं।
Gameeky को शुरुआत से ही सहयोगात्मक अनुभव बनाने और साझा करने के लिए डिज़ाइन किया गया था। इससे बनाये गये सभी खेल सहयोगपूर्वक खेले जा सकते हैं। कोई विशेष आवश्यकताएं नहीं हैं। हालाँकि किसी सहयोगात्मक खेल में कितने उपयोक्ता शामिल हो सकते हैं, इसकी कोई सैद्धांतिक सीमा नहीं है, लेकिन तकनीकी सीमाएं हैं। उदाहरण के लिए, सीमित कंप्यूटिंग संसाधन।
सहयोगात्मक खेल शुरू करने के लिए, इन चरणों का पालन करें:
सहयोगात्मक खेल में शामिल होने के लिए:
📝 ध्यान दें: सहयोगात्मक खेल में शामिल होने वाले सभी उपयोक्ताओं के पास समान थीम समूह या परियोजना की एक प्रति होनी चाहिए।
📝 ध्यान दें: थीम समूह से बनाए गए तदनुकूल दृश्यों को साझा करने की आवश्यकता नहीं है। खेल खेलने के दौरान दृश्य स्वचालित रूप से साझा किया जाता है, जब तक कि सभी उपयोक्ता समान थीम समूह साझा करते हैं।
📝 ध्यान दें: उपयोक्ता थीम समूह में परिभाषित किसी भी तत्व के रूप में सत्र में शामिल हो सकते हैं, उदाहरण के लिए, एक पेड़ या चट्टान के रूप में। ऐसा करने के लिए, निर्माण या जुड़ाव संवाद के उन्नत अनुभाग का विस्तार करें और एक अलग तत्व प्रकार का चयन करें।
दृश्य संपादक उपयोक्ताओं को खेल की दुनिया बनाने और संशोधित करने देता है। यह Gameeky में बिना किसी कोड के निर्माण अनुभव के प्रारंभिक और सरलतम रूप के रूप में कार्य करता है।
किसी मौजूदा दृश्य को संपादित करने के लिए, लॉन्चर से परियोजना के संपादित करें बटन पर क्लिक करें। एक नया दृश्य बनाने के लिए किसी मौजूदा परियोजना जैसे थीम समूह को शुरू करने की अनुशंसा की जाती है। नया दृश्य जोड़ने के लिए इन चरणों का पालन करें:
📝 ध्यान दें: थीम समूहों को संशोधित नहीं किया जा सकता। इसलिए, एक संपादन योग्य प्रतिलिपि बनाई जानी चाहिए। थीम समूह विकल्प मेनू से, कॉपी करें विकल्प चुनें।
एक दृश्य टाइ ग्रिड में व्यवस्थित तत्वों का एक संग्रह है। किसी दृश्य के मूल गुण हैं:
दृश्य संपादन कार्यप्रवाह एक चित्रकारी टूल जैसा दिखता है। संस्थाओं को चित्रित किया जाता है और दृश्य से हटा दिया जाता है। किसी दृश्य को संपादित करने के मूल चरण निम्नलिखित हैं:
इसके अतिरिक्त, दृश्य संपादक चीजों को आसान बनाने के लिए सहायक प्रदान करता है जैसे:
बेहतर अनुभव के लिए, निम्नलिखित युक्तियां और तरकीबें आज़माएं:
तत्व संपादक उपयोक्ताओं को खेल वस्तुओं और जीव बनाने और संशोधित करने देता है। यह एक गहरा बिना किसी कोड के निर्माण अनुभव प्रदान करता है, क्योंकि इसमें Gameeky की अंतर्निहित प्रणालियों को समझने की आवश्यकता होती है।
शुरुआत से एक नई तत्व बनाने से पहले, थीम समूह से मौजूदा तत्वों का निरीक्षण करने की अनुशंसा की जाती है। इसलिए, किसी मौजूदा तत्व का निरीक्षण करने के लिए इन चरणों का पालन करें:
एक नई तत्व बनाने के लिए:
संस्थाएं हर उस चीज़ का प्रतिनिधित्व करती हैं जो खेल में मौजूद हो सकती है, उदाहरण के लिए, घास, उपयोक्ता का चरित्र, एक प्रकाश स्रोत, पृष्ठभूमि संगीत और यहाँ तक कि खेल तर्क भी। एक तत्व तीन भागों से बनी होती है:
ये गुण निर्धारित करते हैं कि संस्थाएं अन्य संस्थाओं के साथ कैसे व्यवहार करती हैं और बातचीत करती हैं, उदाहरण के लिए, इन गुणों के विभिन्न संयोजन यह निर्धारित करेंगे कि कोई तत्व एक स्थिर पत्थर या जीवित दुश्मन के रूप में कार्य कर रही है या नहीं।
हालांकि यहां दो दर्जन संपत्तियां हैं, इनमें से कुछ पर यहां विशेष ध्यान देने की आवश्यकता है:
📝 ध्यान दें: एक नया थीम समूह बनाते समय मान लें कि पहचानकर्ता संख्या 1 वाली तत्व खेल में उपयोक्ता के चरित्र को सौंपी जाएगी।
तत्वों को 2D चित्रोपमा के माध्यम से स्क्रीन पर दर्शाया जाता है, जो स्थिर या एनिमेटेड हो सकता है।
इन चित्रोपमा को स्थिति और दिशा के विशिष्ट संयोजनों को सौंपा गया है, उदाहरण के लिए, एक विशिष्ट एनीमेशन तब प्रस्तुत किया जाएगा जब एक तत्व पश्चिम की ओर चल रही है, जबकि एक अन्य एनीमेशन तब प्रस्तुत किया जाएगा जब वही तत्व निष्क्रिय की ओर * दक्षिण*।
सभी तत्वों को एक तयशुदा चित्रोपमा प्रदान करना होगा, उदाहरण के लिए, इसे दृश्य संपादक या डीबग प्लगइन्स पर देखने के लिए।
चित्रोपमा के समान, इकाइयां विशिष्ट अवस्था में ध्वनियां उत्सर्जित कर सकती हैं, उदाहरण के लिए, जब तत्व चल रही हो तो पदचिन्हों की ध्वनि बजाई जाती है। यहां दिशाएं मायने नहीं रखतीं।
इसमें तयशुदा ध्वनियां नहीं हैं, क्योंकि ध्वनियां वैकल्पिक हैं।
तत्व निर्माण कार्यप्रवाह किसी प्रपत्र या खाका को भरने के समान है। सबसे बुनियादी तत्व निम्नलिखित चरणों के साथ बनाई गई है:
बेहतर अनुभव के लिए, निम्नलिखित युक्तियां और तरकीबें आज़माएं:
सहयोगात्मक खेल खेलने के लिए समर्थन मिलने से सहयोगियों के लिए द्वार खुल जाते हैं जिन्हें कोड से नियंत्रित किया जा सकता है। इसे प्राप्त करने के लिए, Gameeky एक छोटी लाइब्रेरी प्रदान करता है जो उपयोक्ताओं को लोगो-जैसे अनुभव में पायथन का उपयोग करके एकल तत्व को नियंत्रित करने में सक्षम बनाता है।
सहयोगात्मक खेल शुरू करने के लिए इन चरणों का पालन करें:
कोड के साथ खेल में शामिल होने के लिए, इन चरणों का पालन करना होगा:
खेल से जुड़ें और छोड़ें:
from gameeky.library import Game
= Game()
game
game.join() game.quit()
कार्रवाइयां निष्पादित करें:
from gameeky.library import Game, Direction
= Game()
game
game.join()
game.update()
=1000)
game.idle(time=1000)
game.move(Direction.EAST, time=1000)
game.move(Direction.WEST, time=1000)
game.take(time=1000)
game.use(time=1000)
game.drop(time=1000)
game.interact(time
game.quit()
उपयोक्ता की चरित्र तत्व की स्थिति और बुनियादी गुणों का निरीक्षण करें:
from gameeky.library import Game
= Game()
game
game.join()
game.update()
print(game.entity.position.x, game.entity.position.y)
game.quit()
दृश्य की स्थिति का निरीक्षण करें:
from gameeky.library import Game
= Game()
game
game.join()
game.update()
for entity in game.scene.entities:
print(entity.position.x, entity.position.y)
game.quit()
📝 ध्यान दें: सहयोगकर्ता केवल अपने आसपास का दृश्य ही देख सकते हैं, पूरा दृश्य नहीं।
उपयोक्ता के चरित्र तत्व के अग्रिम आंकड़ों का निरीक्षण करें:
from gameeky.library import Game
= Game()
game
game.join()
game.update()
print(game.stats.durability, game.stats.stamina, game.stats.held)
game.quit()
बेहतर अनुभव के लिए, निम्नलिखित युक्तियां और तरकीबें आज़माएं:
प्रवर्तक किसी तत्व के व्यवहार को संशोधित कर सकते हैं। एक एकल तत्व अधिक जटिल व्यवहारों को मॉडल करने के लिए एकाधिक प्रवर्तक का उपयोग कर सकती है। हालाँकि पूर्वनिर्धारित प्रवर्तक की एक विस्तृत श्रृंखला है, वास्तविक कोड की तुलना में अंतिम परिणाम सीमित है।
इसलिए, Gameeky उपयोक्ता-निर्मित प्रवर्तक को पूर्वनिर्धारित प्रवर्तक से आगे जाने के लिए समर्थन प्रदान करता है।
प्रवर्तक तीन प्रकार के होते हैं:
सभी प्रवर्तक अपने व्यवहार को संशोधित करने के लिए अपने स्वयं के तत्व खेल गुणों का उपयोग करते हैं:
नया प्रवर्तक बनाने के लिए, निम्न चरणों का पालन करें:
~/Gameeky/PROJECT_NAME/actuator/ACTUATOR_NAME.py
में सहेजें📝 ध्यान दें: विशिष्ट संस्थाओं को अनुकूलित करते समय उपयोक्ता-निर्मित प्रवर्तक को दृश्य संपादक से भी पहुंचा जा सकता है।
एक न्यूनतम प्रवर्तक क्लास:
from gameeky.plugins import Actuator as Plugin
class Actuator(Plugin):
def tick(self) -> None:
pass
तत्व का निरीक्षण करें:
from gameeky.plugins import Actuator as Plugin
class Actuator(Plugin):
def tick(self) -> None:
print(self.entity.name)
तत्व पर कोई कार्रवाई करें:
from gameeky.plugins import Actuator as Plugin
from gameeky.common.definitions import Action, Direction
class Actuator(Plugin):
def tick(self) -> None:
self.entity.perform(Action.MOVE, Direction.SOUTH)
तत्व को एक संवाद भेजें:
from gameeky.plugins import Actuator as Plugin
class Actuator(Plugin):
def tick(self) -> None:
self.entity.tell("Hello...")
तत्व के ठीक सामने बैठी अन्य सभी इकाइओं का निरीक्षण करें:
from gameeky.plugins import Actuator as Plugin
class Actuator(Plugin):
def tick(self) -> None:
for entity in self.entity.obstacles:
print(entity.name)
अन्य सभी इकाइओं का निरीक्षण करें जो तत्व के समान स्थिति साझा करते हैं:
from gameeky.plugins import Actuator as Plugin
class Actuator(Plugin):
def tick(self) -> None:
for entity in self.entity.surfaces:
print(entity.name)
तत्व को घेरने वाली अन्य सभी तत्वों का निरीक्षण करें:
from gameeky.plugins import Actuator as Plugin
class Actuator(Plugin):
def tick(self) -> None:
for entity in self.entity.surroundings:
print(entity.name)
📝 ध्यान दें: परिवेश विधि तत्व की त्रिज्या संपत्ति को ध्यान में रखती है।
दृश्य में सभी तत्वों का निरीक्षण करें, जो स्थिर नहीं हैं:
from gameeky.plugins import Actuator as Plugin
class Actuator(Plugin):
def tick(self) -> None:
for entity in self.entity.scene.mutables:
print(entity.name)
उपयोक्ताओं द्वारा नियंत्रित सभी तत्वों का निरीक्षण करें:
from gameeky.plugins import Actuator as Plugin
class Actuator(Plugin):
def tick(self) -> None:
for entity in self.entity.scene.playables:
print(entity.name)
एक प्रवर्तक बनाएं जो हर पांच सेकंड में सक्रिय हो:
from gameeky.plugins import Actuator as Plugin
class Actuator(Plugin):
= True
activatable
def tick(self) -> None:
if not self.ready:
return
print("Activated...")
super().tick()
📝 ध्यान दें: तैयार संपत्ति तत्व की दर संपत्ति को ध्यान में रखती है।
एक प्रवर्तक बनाएं जो केवल उपयोक्ताओं द्वारा सहभागिता किए जाने पर ही कार्य करता है:
from gameeky.plugins import Actuator as Plugin
class Actuator(Plugin):
= True
interactable
def prepare(self, interactee: "Entity") -> bool:
if interactee.playable is False:
return False
return super().prepare(interactee)
def tick(self) -> None:
if self.interactee is None:
return
print(f"Interacted with {self._interactee.name}")
super().tick()
अधिक जटिल उदाहरणों के लिए Gameeky की पूर्वनिर्धारित प्रवर्तक निर्देशिका की जांच करें।
बेहतर अनुभव के लिए, निम्नलिखित युक्तियां और तरकीबें आज़माएं: