Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Juraj Mlich
Tvůrce
Avatar
Juraj Mlich:25.5.2013 14:41

Dobrý deň, už niekoľko dní programujem môj engine. A teraz som dospel k verzií ktorá by už bola schopná na programovanie hier. A teraz by som vás prosil aby ste si môj engine pozreli a povedali čo robím zle, nieaké lepšie riešenia,...
Popis Enginu:
Hrá je zložená z map a tie budú rozdelené do 3 chapterov (častí). Mapy budem dorábať potom. Mapy sú v priečinku Maps. Každá mapa má názov ChCisloChapte­ruMapCisloMapy. Každá mapa dedí z triedy Map ktorá je v priečinku Maps.
Každá mapa sa skladá z elementov. Pridanie nového elementu je jednoduché:

elements.Add(new Sprite(false, new Rectangle(rozmery), Content.Load<Texture2D>("cesta k obrazku")))

;
Pole elements obsahuje prvky ISprite ktoré má pár metod.
Trieda Sprite aplikuje tento interface. Ešte tu mám triedu AnimatedSprite ktorá nerobí nič iné ako animované obrázky.

Pridanie mapy
Vytvoríte si novú triedu a pôjdete do priečinku Screens a do triedy Gameplay.
V metodách (sú na spodu) LoadMapsChCis­loChapteru iba inicializujete túto mapu:

mapsCh1.Add(new Ch1Map1(main, this));

.

Prepnutie inej mapy
Trieda gameplay má metodu ChangeMap ktorá toto robí.

Toto je základný popis enginu. A teraz kritizujte :) Inak Engine je napísaný v C# a používa framework MonoGame

Ešte chvíľku moment, uploadujem zdrojové kódy na Ulož.to

Editováno 25.5.2013 14:42
 
Odpovědět
25.5.2013 14:41
Avatar
Juraj Mlich
Tvůrce
Avatar
Juraj Mlich:25.5.2013 14:46

Zdrojové kódy: http://uloz.to/…emachine-rar
Inak pridal som tam jednu mapu,...textury som nerobil ja, tak sa nesmejte :D

Editováno 25.5.2013 14:49
 
Nahoru Odpovědět
25.5.2013 14:46
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Juraj Mlich
David Hartinger:25.5.2013 14:51

Nějak mi to nejde spustit.

Nahoru Odpovědět
25.5.2013 14:51
New kid back on the block with a R.I.P
Avatar
Juraj Mlich
Tvůrce
Avatar
Odpovídá na David Hartinger
Juraj Mlich:25.5.2013 14:57

MonoGame máš nainštalovaný?

 
Nahoru Odpovědět
25.5.2013 14:57
Avatar
David Hartinger
Vlastník
Avatar
Nahoru Odpovědět
25.5.2013 15:00
New kid back on the block with a R.I.P
Avatar
Juraj Mlich
Tvůrce
Avatar
Odpovídá na Juraj Mlich
Juraj Mlich:25.5.2013 16:08

Pozrel si to niekto?

 
Nahoru Odpovědět
25.5.2013 16:08
Avatar
Drakeman
Tvůrce
Avatar
Odpovídá na Juraj Mlich
Drakeman:25.5.2013 16:50

Bohužel mám linux, takže když je to napsaný C#, tak to u mě asi nepojede :-)

Nahoru Odpovědět
25.5.2013 16:50
Když se chce, tak jde všechno,
Avatar
Odpovídá na Drakeman
Michael Olšavský:25.5.2013 16:53

Je to v monogame, takže by to mělo jet.

To Juraj Mlich : Máš to docela pěkné :-) Ještě se podívám na kód, ale animace se povedly.

Editováno 25.5.2013 16:55
 
Nahoru Odpovědět
25.5.2013 16:53
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Juraj Mlich
David Hartinger:25.5.2013 17:21

Stáhl jsem si MonoGame a stále se mi to nedaří spustit :(

Nahoru Odpovědět
25.5.2013 17:21
New kid back on the block with a R.I.P
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Juraj Mlich
David Hartinger:25.5.2013 17:47

Už to jde, je to super! :D :D :D Fakt pěkný, grafiku jsi dělal sám?

Nahoru Odpovědět
25.5.2013 17:47
New kid back on the block with a R.I.P
Avatar
Зайчик
Člen
Avatar
Odpovídá na David Hartinger
Зайчик:25.5.2013 17:51

neumíš číst? :D psal to tam :D
jurajmlich -> ta grafika je luxusní právě :D

Nahoru Odpovědět
25.5.2013 17:51
Коммунизм для нашего будущего!
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Зайчик
David Hartinger:25.5.2013 17:53

Aha, ten 2. koment jsem nečetl.

Nahoru Odpovědět
25.5.2013 17:53
New kid back on the block with a R.I.P
Avatar
Juraj Mlich
Tvůrce
Avatar
Odpovídá na David Hartinger
Juraj Mlich:25.5.2013 18:38

To je až také dobré? A kódy si pozeral?

 
Nahoru Odpovědět
25.5.2013 18:38
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Juraj Mlich
David Hartinger:25.5.2013 18:41

Kód ještě ne, ale kouknu na něj.

Nahoru Odpovědět
25.5.2013 18:41
New kid back on the block with a R.I.P
Avatar
Juraj Mlich
Tvůrce
Avatar
Odpovídá na David Hartinger
Juraj Mlich:25.5.2013 18:42

A tá grafika sa vám fakt páči?

 
Nahoru Odpovědět
25.5.2013 18:42
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Juraj Mlich
David Hartinger:25.5.2013 18:43

Grafika je mega, upekl bych ti dort, kdybych to uměl :D

Nahoru Odpovědět
25.5.2013 18:43
New kid back on the block with a R.I.P
Avatar
Juraj Mlich
Tvůrce
Avatar
Odpovídá na David Hartinger
Juraj Mlich:25.5.2013 18:44

To si nás potešil (mňa a môjho kolegu ktorý to nakreslil) :)

 
Nahoru Odpovědět
25.5.2013 18:44
Avatar
Juraj Mlich
Tvůrce
Avatar
Juraj Mlich:25.5.2013 18:46

Keď si kód pozriete tak dajte vedieť, potom keď bude hra hotová tak dám link na stiahnutie :)

 
Nahoru Odpovědět
25.5.2013 18:46
Avatar
Juraj Mlich
Tvůrce
Avatar
Juraj Mlich:26.5.2013 13:05

Pozeral si niekto tie zdrojové kódy?

 
Nahoru Odpovědět
26.5.2013 13:05
Avatar
Juraj Mlich
Tvůrce
Avatar
Odpovídá na Juraj Mlich
Juraj Mlich:26.5.2013 19:59

Stále nik?

 
Nahoru Odpovědět
26.5.2013 19:59
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Juraj Mlich
David Hartinger:27.5.2013 13:20

Tak jsem se k tomu konečně dostal.

Mapy
Takhle dlouhou hru nikdy neuděláš, když budeš každý objekt psát ručně do kódu. Mám na mysli:

elements.Add(new Oblak(true, new Rectangle(20, 50, 447, 220), Content.Load<Texture2D>("graphics/chapter1/map1/Oblak01"), 0));

Engine je zvládnutý opravdu dobře, jen bych udělal ještě jeden program - editor. Ten by byl jen ve Windows Forms bez XNA a umožňoval by tio myší naklikat různé objekty na plochu místnosti a dále místnost uložit (třeba do XML). Načíst pak mapu z XML je poměrně jednoduché. Ušetří ti to hodiny práce a možná pak uděláš opravdu hru, takhle se vyčerpáš na 10ti místnostech, protože psát ručně to trvá strašně dlouho, každý kámen, souřadnice atd.

Inputs
V pohodě.

elements
V pohodě, jen bych je nedělil podle chapterů, stejně budeš mít třeba v 2. chapteru mrak z chapteru prvního. Nemá to smysl rozdělovat, dej je všechny do jedné složky, bude tak jednodušší i tvorba editoru levelů.

Screens
mapsch1, mapsch2, mapsch3... Proč načítat všechny mapy? Nechal bych tam jednu mapu a tu vždy načetl když ji hraji.

FileWorking.cs je prasárna, použij XML. Soubor settings.txt by měl vypadat takto:

<settings>
<width>1280</width>
<height>720</height>
<nevimcotojealekdybystomelvxmltakbychtopoznal>100</...>

Pro práci s XML soubory použij třídu XDocument.

Proměnnou scale v Main vlož do třídy Scalling, již jsem ti to psal. Tam přeci patří, proč máš logiku škálování na více místech?

Mám z toho projektu docela dobrý pocit, až na pár drobností to vypadá opravdu skvěle. Bez toho editoru levelů to ale nepůjde.

Čeká mi tu tvůj článek, když jsem ho četl, bylo nam pořád napsané Global.cs, i když zdroják jsi už opravil, oprav to prosím i v článku a dej scale do Scalling, abych ho mohl publikovat :)

EDIT: Koukám, že to global jsi už opravil, ještě prosím o přesun scale do Scalling.

Editováno 27.5.2013 13:23
Nahoru Odpovědět
27.5.2013 13:20
New kid back on the block with a R.I.P
Avatar
Juraj Mlich
Tvůrce
Avatar
Odpovídá na David Hartinger
Juraj Mlich:27.5.2013 14:30

S tým editorom som tiež myslel že to tak spravím :) ale neviem moc robiť vo Windows Forms ale pomaly sa to učím, článok idem hneď prepísať :)

 
Nahoru Odpovědět
27.5.2013 14:30
Avatar
Juraj Mlich
Tvůrce
Avatar
Odpovídá na David Hartinger
Juraj Mlich:27.5.2013 14:38

A v tom XML "nevimcotojea­lekdybystomel­vxmltakbychto­poznal" to mala byť hlasitosť zvuku. A inak ďakujem za takéto zhodnotenie, moc mi to pomohlo :)

 
Nahoru Odpovědět
27.5.2013 14:38
Avatar
Juraj Mlich
Tvůrce
Avatar
Odpovídá na David Hartinger
Juraj Mlich:27.5.2013 14:48

Na XML XDocument? Mne ju v tom MonoGame nechce nájsť, aj keď som pridal using-y, ani len System.Xml.Linq nenašlo :)

 
Nahoru Odpovědět
27.5.2013 14:48
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Juraj Mlich
David Hartinger:27.5.2013 14:54

Pokud máš .NET alespoň 3.5 (což bys měl mít), tak je v System.Xml.Linq. Když najedeš na tu třídu co to nezná, ukáže se ti modré podtržítko a nabídne import. Článek je už teda ready?

Nahoru Odpovědět
27.5.2013 14:54
New kid back on the block with a R.I.P
Avatar
Juraj Mlich
Tvůrce
Avatar
Odpovídá na David Hartinger
Juraj Mlich:27.5.2013 15:13

článok áno, ale aj tak to tam nemám, však si to skús :)

 
Nahoru Odpovědět
27.5.2013 15:13
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Juraj Mlich
David Hartinger:27.5.2013 15:19

No já XDocument používám :D

Nahoru Odpovědět
27.5.2013 15:19
New kid back on the block with a R.I.P
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Juraj Mlich
David Hartinger:27.5.2013 15:28

Vždyť to tam pořád není :D Proměnná scale je v Main, má být ve Scalling.

Nahoru Odpovědět
27.5.2013 15:28
New kid back on the block with a R.I.P
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na David Hartinger
Petr Nymsa:27.5.2013 15:36

Já osobně jsem měl v MonoGame také pár problémů s určitými třídami. Možná to je stejný případ :). Použil jsem něco jiného, ale bohužel u si nepamatuju co mi nešlo a co jsem použil jiného :D

Nahoru Odpovědět
27.5.2013 15:36
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Juraj Mlich
David Hartinger:27.5.2013 15:38

Jsme to našel, prý to nejde načíst protože ta hra bere soubory z toho svého resource takže se to dělá takhle:

using (StreamReader sr = new StreamReader(Game.Activity.Assets.Open("Content/myXML.xml"))
{
  XDocument doc = XDocument.Load(sr);
}
Nahoru Odpovědět
27.5.2013 15:38
New kid back on the block with a R.I.P
Avatar
Juraj Mlich
Tvůrce
Avatar
Odpovídá na David Hartinger
Juraj Mlich:27.5.2013 16:03

Zabudol som uploadnuť aj nové zdrojové kódy, už to tam máš :)

 
Nahoru Odpovědět
27.5.2013 16:03
Avatar
David Hartinger
Vlastník
Avatar
Nahoru Odpovědět
27.5.2013 16:04
New kid back on the block with a R.I.P
Avatar
Juraj Mlich
Tvůrce
Avatar
Odpovídá na David Hartinger
Juraj Mlich:27.5.2013 16:05
using (StreamReader sr = new StreamReader(Game.Activity.Assets.Open("Content/myXML.xml"))

Píše mi že Activity neexistuje :)

 
Nahoru Odpovědět
27.5.2013 16:05
Avatar
Juraj Mlich
Tvůrce
Avatar
Odpovídá na Juraj Mlich
Juraj Mlich:27.5.2013 16:12

Nakoniec sa to robí takto:

Stream stream = TitleContainer.OpenStream("Content\\Rooms.xml");
XDocument doc = XDocument.Load(stream);
Editováno 27.5.2013 16:12
 
Nahoru Odpovědět
27.5.2013 16:12
Avatar
Juraj Mlich
Tvůrce
Avatar
Odpovídá na Juraj Mlich
Juraj Mlich:27.5.2013 16:16

Nerobí :( aj tak to nefunguje :(

 
Nahoru Odpovědět
27.5.2013 16:16
Avatar
Juraj Mlich
Tvůrce
Avatar
Odpovídá na Juraj Mlich
Juraj Mlich:27.5.2013 16:20

Mne nejde pridať using.

 
Nahoru Odpovědět
27.5.2013 16:20
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Juraj Mlich
David Hartinger:27.5.2013 18:51

No tak mu tu referenci přidej, když si o ni říká.

Nahoru Odpovědět
27.5.2013 18:51
New kid back on the block with a R.I.P
Avatar
Juraj Mlich
Tvůrce
Avatar
Odpovídá na David Hartinger
Juraj Mlich:28.5.2013 18:52

Toto som nevedel že sa niečo také dá, funguje diki :)

 
Nahoru Odpovědět
28.5.2013 18:52
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 40 zpráv z 40.