Gra MMORPG – kilka pytań

Gra MMORPG – kilka pytań

Wątek przeniesiony 2020-03-08 22:18 z Newbie przez flowCRANE.

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Tuchów
  • Postów:12171
1

Wsadziłeś metodę OnCollisionEnter do wnętrza metody Update. Błąd jasno informuje, że funkcje lokalne nie są wspierane w tej wersji C#. Czytaj tę książkę uważnie, a po drugie, czytaj uważnie listę błędów, bo wszystko co źle robisz jest w niej opisane.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 2x, ostatnio: flowCRANE
W1
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:110
0

Furious zrobiłem to samo co jest napisane w książce. Fragment jest w załączniku. Mam rozumieć że korzystam z jakiejś starej wersji języka C#?

Silv
@mad_penguin: co śmiesznego? ;)
mad_penguin
mad_penguin
@Silv W sumie nie powinienem, przepraszam
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Tuchów
  • Postów:12171
1
wojtek1492 napisał(a):

Furious zrobiłem to samo co jest napisane w książce. Fragment jest w załączniku.

No i gdzie na tym zdjęciu napisane jest, że masz OnCollisionEnter umieścić wewnątrz Update?

Mam rozumieć że korzystam z jakiejś starej wersji języka C#?

O tym informuje błąd kompilacji – Ty używasz wersji 4, a lokalne funkcje dostępne są od wersji 7. Ale nie to jest głównym błędem.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
W1
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:110
0

Tam jest wyraźnie napisane żeby wpisać ten fragment z listing 1.2 tuż po linii void Update () {

co zrobiłem źle?

Robię to od początku. Jeśli teraz nie zrobię dobrze będę szukał dalej.

Udało się, cała "komenda" miała być za "}" a ja dawałem między {} , dlatego nie działało.

edytowany 1x, ostatnio: wojtek1492
W1
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:110
0

Unity i C# ciąg dalszy :) Mam sporo pytań i wątpliwości ale może sam dojdę do rozwiązań.

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Tuchów
  • Postów:12171
0

Ucz się powoli, na spokojnie.

Staraj się sam rozwiązywać problemy – to się przyda w przyszłości. Zresztą, jak będziesz spamował forum bzdurnymi pytaniami to nikt nie będzie chciał na nie odpowiadać, co najwyżej dostaniesz link do Google, na odczepne. ;)


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 2x, ostatnio: flowCRANE
Zobacz pozostały 1 komentarz
flowCRANE
Bzdurne pytania to takie, na które można szybko i łatwo znaleźć odpowiedź, a na które mało kto ma ochotę odpowiadać. Z reguły wynikają z lenistwa, niż z potrzeby/desperacji. Wolę napisać komuś, aby za wszelką cenę próbował sam rozwiązywać problemy (co oczywiście popieram i do czego sam się stosuję), niż aby z każdą pierdołą leciał na forum – bo go zjedzą.
flowCRANE
Czasem mam wrażenie, że jestem na forum dla filozofów bez poczucia humoru. ;)
Silv
@furious programming: ja nie mam poczucia humoru, więc w dyskusji ze mną możesz mieć takie wrażenie. Pisz, jak to zauważysz, to będę starał się ograniczać zbyt poważne wypowiedzi (serio).
flowCRANE
Aleś sztywniak.
koszalek-opalek
@Silv, @furious programming: Jak to powiedział pewien nauczyciel: "In dłużej uczę, tym bardziej przekonuję się, że głupie pytania jednak istnieją." :)
W1
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:110
0

Witam, poszperalem na internecie i jeszcze bardziej utwierdzilem się w przekonaniu że bez C# nie mam co ruszać z miejsca. Znalazlem mase poradników które odpowiadają na moje pytania, jest podany kod na filmiku, wystarczy znać język i samemu można coś podpatrzeć z gotowcow :) Najbardziej martwi mnie oprawa "online" gry ale do tego jeszcze szmat czasu, narazzie podstawy.

W1
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:110
2

Aktualnie uczę się C# ze strony mwin.pl :) Nie będę codziennie pisał o tym czego się ucze bo to bez sensu, nic do tematu nie wnosi, pozdrawiam czytających.

Silv
Nie musisz pisać codziennie. :) Co tydzień coś to będzie dobrze, jeśli Ci się uda. :)
flowCRANE
Co tydzień też nie – po prostu napisz wtedy, kiedy będziesz miał jakieś pytanie, albo kiedy będziesz miał coś do pokazania lub zakomunikowania.
W1
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:110
0

Rozwiązuję sobie zadania ze strony mwin.pl i mam problem, nie rozumiem pewnych lini w tym kodzie.
Wybaczcie jeśli źle wkleiłem kod, nie robiłem tego nigdy:)

Polecenie do zadania brzmi tak :

Wylosuj 3 liczby i wypisz największą z nich.

Ponizej kod:

Kopiuj
using UnityEngine;
using System.Collections;
 
public class Lekcja_02 : MonoBehaviour {
	
	void Start()
	{
		int rndA = Random.Range (0, 20);
		int rndB = Random.Range (0, 20);
		int rndC = Random.Range (0, 20);
		int max = rndA;  // Dlaczego tutaj jest max = rndA a nie np. max = rndB albo rndC ?
 
		if (max < rndB) {
			max = rndB;  // Czy mogę tę linijke przetumaczyć tak : rndA jest równe rndB ? max w tym wypadku to rndA?
		}
 
		if (max < rndC) {
			max = rndC;
		}
		Debug.Log (max);
		Debug.Log (rndA + " - " + rndB + " - " + rndC);  // W tej lini po rndA i rndB mamy znak +, dlaczego znak + jest równiez przed rndB i dlaczego nie ma po rndC?
	}
}
edytowany 3x, ostatnio: flowCRANE
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Tuchów
  • Postów:12171
0
wojtek1492 napisał(a):
Kopiuj
int max = rndA;  // Dlaczego tutaj jest max = rndA a nie np. max = rndB albo rndC ?

Bo to żadna różnica, jaką wartość na początku przyjmie ta zmienna. Ale jeśli zmienisz rndA na inną, to będziesz musiał także zmienić zmienne w warunkach.

Kopiuj
if (max < rndB) {
    max = rndB;  // Czy mogę tę linijke przetumaczyć tak : rndA jest równe rndB ? max w tym wypadku to rndA?

Nie. Ten warunek sprawdza, czy wartość rndB jest większa od bieżącej wartości zmiennej max. Jeśli jest większa to do zmiennej max wpisuje rndB (tak, operator = służy do przypisania, nie do porównania…).

Kopiuj
Debug.Log (rndA + " - " + rndB + " - " + rndC);  // W tej lini po rndA i rndB mamy znak +, dlaczego znak + jest równiez przed rndB i dlaczego nie ma po rndC?

Bo wynikiem tej operacji ma być ciąg znaków. Choć dziwię się, że nie ma tam żadnego ToString – skoro działa to widać zachodzi tam niejawna konwersja.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 4x, ostatnio: flowCRANE
baant
  • Rejestracja:ponad 11 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:Wrocław
  • Postów:524
0
  1. Obojętne, którą byś wybrał (oczywiście wybór innej rzutuje na dalszy kod)
  2. To nie "równe" tylko przypisz
  3. Konkatenacja stringów
W1
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:110
0

Dziękuje za odpowiedź i pomoc :)
Jak myślicie, lepiej zrobić jedną postać od A do Z i brać się za "programowanie" następnej czy lepiej zrobić 4 postacie i po kolei do każdej animacje, skile, emocje itp? Macie jakieś doświadczenie w tym?

PS. Zamówiłem dziś komputer na x-kom, do końca tygodnia powinien przyjść. Do tego dokupie jakiś monitor 21 cali.

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Tuchów
  • Postów:12171
0
wojtek1492 napisał(a):

Jak myślicie, lepiej zrobić jedną postać od A do Z i brać się za "programowanie" następnej czy lepiej zrobić 4 postacie i po kolei do każdej animacje, skile, emocje itp?

IMO nie ma to znaczenia – wszystko zależy od tego, które rozwiązanie będzie dla Ciebie wygodniejsze. Sam raczej skusiłbym się robić daną postać w całości, przy czym pewne rzeczy zostawiłbym na koniec, wtedy gdy wykonuje się ostateczne szlify i spina całość do kupy.

Macie jakieś doświadczenie w tym?

A na co to komu. Wystarczy myśleć logicznie i wiedzieć czego się chce.

Do tego dokupie jakiś monitor 21 cali.

Dodatkowy ekran zawsze się przyda. Jednak z monitorami jest tak, że jak już podłączy się jeden i zobaczy się jak pozwala usprawnić pracę, to chciałoby się ich mieć więcej. Przynajmniej sam tak to widzę – mam jeden dodatkowy, ale wolałbym mieć ze trzy – tyle że laptop nie uciągnie, a i miejsca nie mam za bardzo. ;)


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 4x, ostatnio: flowCRANE
W1
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:110
1

W tej chwili pracuje na ekranie 15 calowym w niskiej rozdzielczości, myśle że przesiadka na 21 cali i wyższą rozdzielczość będzie wyraźnie zauważalna i poprawi komfort pracy, po remoncie będzie wiadomo. Martwie się tylko ilością RAM'u bo kupiłem kość 4GB, może 2 tygodnie się przemęczę a potem dokupię.

Co do samego programowania to chyba zrobię tak że będę robił postać od A do Z i wtedy będę brał się za następną, mase skryptów i poradników znalazłem na stronie Unity, wszystko w miarę ładnie opisane ale chcę nauczyć się C# w stopniu chociaż średnim żebym sam wiedział co jest napisane w skryptach i jak to przerobić na swoją wersję.

Jak teraz widzę skrypt to tak jakbym widział chińskie litery, nic nie rozumiem. Najpierw C# a potem reszta, do C# znalazłem 2 serie fajnych poradników na YT do tego C# +Unity również na YT w 2 seriach. Kupiłem w księgarni 3 książki o Unity, o C# nic nie było dla początkujących.

Widzę że masa pracy przede mną na kilka ładnych lat ale nawet jeśli nie uda mi się uruchomić tej gry online to pewnie będę już umiał dobrze obsługiwać Unity, Blendera i będę znał C# w stopniu średniozaawansowanym a wtedy można myśleć coś o zmianie pracy...wiem że to wszystko brzmi jak marzenia 15 latka ale takie mam myślenie, przepraszam za brak polskich znaków.

Pozdrawiam czytających :)

W1
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:110
0

Witam, przeglądam sobie Asset Store i trafiłem na filmik prezentujący jeden płatny asset. Czy takie efekty umiejętności można zrobić za pomocą systemu cząsteczek w Unity czy trzeba do tego czegoś więcej ?

Silv
Ja się na graniu nie znam, ale podobają mi się te animacje.
Silv
Moderator Wiki
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Warszawa
1

Nie znam odpowiedzi na Twoje pytanie, ale ostatnio zauważyłem kilka linków do ciekawych stron:

przy czym nie wiem, na ile jest on aktualny. Na nim znalazłem link do takiej strony dotyczącej gier:

Trudno mi ocenić jej przydatność. Patrz też, ile lat temu zostały napisane poszczególne artykuły.
Poza tym na naszym mikroblogu znalazłem taki wpis:

I przy całej ewentualnej "pomocności" tych materiałów uczulam Cię (bo sam mam z tym problem), byś nie skakał z bloga na blog (przynajmniej na początku), tylko trzymał się kilku (nie więcej!) sprawdzonych źródeł.


edytowany 3x, ostatnio: Silv
tajny_agent
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad rok
  • Postów:1340
0
wojtek1492 napisał(a):

Witam, przeglądam sobie Asset Store i trafiłem na filmik prezentujący jeden płatny asset. Czy takie efekty umiejętności można zrobić za pomocą systemu cząsteczek w Unity czy trzeba do tego czegoś więcej ?

Tak, można. A jak tam nauka C#?


"I love C++. It's the best language in the world right now for me to write the code that i need and want to write"
~ Herb Sutter
W1
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:110
0

Dobrze, nadal utrwalam podstawy...próbuje zrozumieć logikę programowania bo wbrew pozorom to jest bardzo mądre i logiczne. W głowie mam miliony pytań, część z nich rozwialem materiałami które znalazłem po angielsku na oficjalnej stronie Unity :)

To wszystko wymaga masy czasu i chęci.

Silv
"wbrew pozorom to jest bardzo mądre i logiczne" – a to ładne.
W1
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:110
0

Dzień dobry mam kilka pytań dotyczących tego kodu, pytanie umieściłem w kodzie.

Kopiuj
using UnityEngine;
using System.Collections;

public class Lekcja_05 : MonoBehaviour {
	
	class Figures {
		
		public double side;
		public double height;
		public double radius;
		public double area;
		public int figType;
		
		public Figures(int f, double a, double h, double r) {
			side = a;     // Znak " = " to jest przypisanie tak? To znaczy że w kolejnych linijkach zamiast pisać słowo "side" możemy użyc litery "a",  dobrze rozumiem?
			height = h;
			radius = r;
			figType = f;
		}
		
		private double countArea()
		{
			switch(figType) {
			case 1:
				// Prostokat
				area = side * height;
				break;
			case 2:
				// Trojkat
				area = side * height * 0.5;
				break;
			case 3:
				// Kolo
				area = 3.14 * radius * radius;
				break;
			}
			return 0;
		}

		public double getArea()
		{
			if (area != null) {
				countArea();
			}
			return area;
		}
	}
	
	void Start()
	{
		Figures f1 = new Figures(1, 3, 2, 0); // Tych 3 linijek kodu nie rozumiem...skąd te cyfry w nawiasie po przecinkach?
		Figures f2 = new Figures(2, 2, 2, 0);
		Figures f3 = new Figures(3, 0, 0, 5);
		
		Debug.Log("Prostokat: " + f1.getArea());  // Tych 3 linjek również nie rozumiem.
		Debug.Log("Trojkat: " + f2.getArea());
		Debug.Log("Kolo: " + f3.getArea());
	}
}

edytowany 2x, ostatnio: wojtek1492
Patryk27
Załóż nowy wątek.
Silv
Moderator Wiki
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Warszawa
2

// Znak " = " to jest przypisanie tak? To znaczy że w kolejnych linijkach zamiast pisać słowo "side" możemy użyc litery "a", dobrze rozumiem?

Tak, ale odwrotnie. C# ma tzw. zasięg blokowy, więc w całej tej metodzie (tutaj także: konstruktorze; nie poza nim!) można używać słowa (czyli nazwy zmiennej) side zamiast słowa (nazwy zmiennej) a. Samej zmiennej side można używać i poza konstruktorem, ale rozumowanie wygląda wtedy trochę inaczej.

Z tym, że nadawanie zmiennym nazw takich jak a czy h jest niezbyt dobre. Jedyny przypadek to taki, jeśli nazwa ta odpowiada rzeczywistości – np. występuje w jakimś wzorze matematycznym. Jeśli nie, to mamy dwie opcje: 1) kod, w którym występuje, jest krótki i/lub prosty, jak np. teraz Twój konstruktor Figures. Nie będąc Tobą, twórcą kodu, da się zrozumieć, co to a oznacza (no, ostatecznie się da), więc jest mniejszy problem; 2) funkcja jest złożona – wyobraź sobie, gdyby a było wykorzystywane w kodzie w kilku plikach – jeśli zapomniałbyś, co oznacza nazwa zmiennej a, musiałbyś szukać po plikach tego jednego miejsca, w którym jest to wyjaśnione albo przez jej oczywiste użycie, albo przez komentarz, albo przez coś tam, co wyjaśnia, co oznacza ta zmienna. Byłby większy problem. Tak czy siak, w obu wypadkach jest jakiś problem, więc żeby nie robić sobie problemu, najlepszym wyjściem jest unikanie używania takich krótkich i niewiele mówiących nazw.

Figures f1 = new Figures(1, 3, 2, 0); // Tych 3 linijek kodu nie rozumiem...skąd te cyfry w nawiasie po przecinkach?

To wywołanie metody (tutaj także nazywanej konstruktorem). Dokładnie idzie to mniej-więcej tak: program tworzy nową instancję klasy (==obiekt) Figures, korzystając z argumentów 1, 3, 2, 0, a następnie przypisuje tę instancję zmiennej f1. Wywołanie, czyli jakby uruchomienie. Dokładnie, program przechodzi wtedy do pierwszej instrukcji w ciele metody. Pamiętam, jak zaczynałem programować, było to dla mnie dziwne – że co, program miałby sobie skakać tak po kodzie, nawet po kilku plikach? Ano tak, "skacze", a w przypadku wzorców typu MVC jest jeszcze ciekawiej (dla mnie przynajmniej), ale to może na kiedy indziej. ;)

Debug.Log("Prostokat: " + f1.getArea()); // Tych 3 linjek również nie rozumiem.

To zapisanie do logu (nie orientuję się w logach w C#) pola prostokąta. Dokładnie idzie to mniej-więcej tak: program wywołuje metodę getArea() na obiekcie f1, następnie konwertuje jej wynik (bo jest to liczba zmiennoprzecinkowa, czyli ma typ double) do ciągu znaków (typ string), potem łączy ciąg znaków "Prostokąt: " ze skonwertowanym ciągiem, a wyniku połączenia (tak to chyba odbywa się w C#, dokładnie musisz poczytać o operatorze + na ciągach znaków) używa jako argumentu przekazanego do metody Log. Tylko w tym wypadku jest trochę chyba inaczej, niż w wywołaniu metody, które opisałem wyżej, bo wydaje mi się, że metoda Log jest statyczna, ale to jeszcze musisz sprawdzić, nie znam się tak dobrze na C#.

Jeśli coś pomyliłem, proszę bardziej znających C# o doprecyzowanie. :)


edytowany 2x, ostatnio: Silv
Silv
Zaktualizowałem post.
W1
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:110
0

Silv dziękuję bardzo za to obszerne wyjaśnienie :) Teraz mi się rozjaśnilo.

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Tuchów
  • Postów:12171
2
Kopiuj
public int figType;

Hmm… ktoś nie zna jeszcze stałych, albo enumów. ;)

Wspominam o tym dlatego, że używasz gołych liczb od 1 do 3, które nie niosą ze sobą informacji o figurach – to tzw. magic numbers. Za tydzień nie będziesz pamiętał o tym, która figura to np. 1. Zamiast liczb, lepiej jest posługiwać się nazwami, bo dzięki nim łatwo zrozumieć co sobą reprezentują.

Przykład dla stałych:

Kopiuj
const int Rectangle = 0;
const int Triangle  = 1;
const int Circle    = 2;

Dzięki takim stałym możesz zwiększyć czytelność kodu tworzącego figury:

Kopiuj
Figure figure = new Figure(Rectangle, 3, 2, 0);  // od razu widać, że tworzony jest prostokąt

a także zwiększyć czytelność kodu instrukcji wyboru:

Kopiuj
private void countArea()
{
  switch(figType) {
    case Rectangle:
      area = side * height;
      break;
    case Triangle:
      area = side * height * 0.5;
      break;
    case Circle:
      area = 3.14 * radius * radius;
      break;
  }
}

Najważniejszą rzeczą związaną ze stałymi jest możliwość używania ich w wielu miejscach kodu oraz zawsze taka sama wartość. Jeśli postanowisz zmienić indeks figury, np. zmienić wartość prostokąta z 0 na 4, to wystarczy zmienić jedną linijkę:

Kopiuj
const int Rectangle = 4;

a cała reszta kodu sama się do tej zmiany dostosuje.


W powyższych przykładach co nieco zmieniłem. Pierwsza zmiana to nazwa klasy – Twoja klasa Figures swoją nazwą informuje, że opisuje wiele figur, a w rzeczywistości opisuje tylko jedną. Dlatego nazwę zmieniłem na Figure. Druga zmiana to metoda countArea. Niepotrzebnie zwraca double, skoro i tak wynik ląduje w polu klasy. Dlatego też zmieniłem typ metody na void i usunąłem return.

Sugeruję dla każdego problemu z kodem zakładać osobne wątki – każdy na jeden problem. Natomiast w tym wątku pisać posty tylko wtedy, gdy zechcesz się pochwalić postępami lub coś pokazać. Bo póki co robi się bałagan – jeden wątek do wszystkiego.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
Silv
Nie jestem pewien, czy jest to dobra sugestia, by zakładać oddzielne wątki. Może tylko wtedy, jeśli będzie chciał dowiedzieć się czegoś konkretnego, dokładnego, lub też wyjaśnić jakiś błąd. Ale w moim rozumieniu podstawy jako takie (jak wyżej) należą do "dyskusji o podstawach" programowania, a ta znów należy do "dyskusji ogólnych" o tym projekcie, a te znów należą do tego wątku.
flowCRANE
Taka zasada panuje na forum – jeden problem to jeden wątek. Ten wątek dotyczył kilku ogólnych pytań na temat tworzenia gry, następnie służył jako blog do informowania o postępach, a teraz zawiera pytania stricte dotyczące C# (ale nie kodu gry), choć takiego tagu wątek nie posiada. Jest w nim wszystko, robi się bajzel i coraz trudniej połapać się o co w nim chodzi.
W1
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:110
0

Uczę się tablic wielowymiarowych i list. Pomocne są poradniki z YT, na filmiku lepiej jest to wyjaśnione niż na suchym tekście w książce. Standardowo mam kilka pytań do Was, będę wdzięczny za każdą odpowiedź.

  1. Czy jeśli robię grę z nastawieniem pod Multiplayer to od początku skrypty dotyczące naprzykład statystyk gracza lub umiejętności, muszą być pisane pod Multiplayer czy można je pisać bez żadnych "dodatków" w kodzie C#?

  2. Do utworzenia systemu umiejętności użyć bazy danych czy ScriptableObjects (chyba że jedno nie wyklucza drugiego)?

  3. Czy macie jakieś materiały lub możecie polecić coś o stworzeniu systemu handlu między graczami? Znalazłem poradniki na temat craftingu, połączenia z serwerem, systemu umiejętności a o systemie handlu nie mogę znaleźć.

  4. Jeśli stworzę skrypty odpowiedzialne za komunikację sieciową między graczami to do jakiego obiektu na scenie mam je dodać? Musi to być na pewno obiekt który jest od początku gry gdy klikniemy ikonę gry na pulpicie. Czy służy do tego jakieś odzielny skrypt który włącza pozostałe gdy gracz uruchamia grę?

Dziękuję za pomoc. Pozdrawiam

edytowany 1x, ostatnio: wojtek1492
W1
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:110
0

Kupiłem książkę C# z zadaniami i rozwiązaniami do tego. Nowy komputer śmiga aż miło, chłodzenie muszę wymienić bo straszny hałas na tym BOX'owym :)

Do tworzenia systemu umiejętności i wszystkich itemów w grze chciałbym wykorzystać ScriptableObjects a dane o tym przechowywać w bazie danych, myślicie że to dobre rozwiązanie?

PS. Zapraszam do wypełnienia ankiety oraz rozsyłania jeśli ktoś chciałby pomóc :)

https://www.survio.com/survey/d/D6E9D0X1I4N1S9J8K

PS. Mam problem z wyświetlaniem sceny w Unity...przybiera dziwne kolory, paski z odcieniami jednego koloru.
Od jutra zabieram się za rozpisanie wszystkiego krok po kroku czego użyję i jak będzie wyglądało to wszystko, żebym wiedział co mam programować.

Pozdrawiam

edytowany 2x, ostatnio: wojtek1492
W1
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:110
1

U mnie bez większych nowości, dalej zgłębiam wiedzę z zakresu C#. Kupiłem nową książkę i rozpracowuje tablice :)

Zobacz pozostałe 6 komentarzy
Silv
@cerrato: lepiej w poście spytaj. :)
cerrato
Wstydzę się :(
W1
Pewnie nie prędko Panowie :) Zanim ogarnę C# na takim poziomie że sam będę w stanie napisać skrypty do umiejętności postaci itp to pewnie minie dobre kilka miesięcy więc efekty będą nieprędko, ale jestem dobrej myśli.
cerrato
Mam nadzieję, że za kilka miesięcy, a nawet lat, nadal tu będę, nie chce iść w ślady @sceptyczny_dinozaur
PI
  • Rejestracja:prawie 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:26
0

Z jakiej książki się uczysz?

KO
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:4
1

Jak postępy? @wojtek1492

W1
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:110
1

Wszystko dobrze, na razie uczę się samego C# bez Unity, nie będę wstawiał linijek z kodem który ćwiczę i poprawiam po 10 razy :)

VO
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 6 lat
  • Postów:1
1

Cześć!
Dawno nie robiłeś wpisu coś się zmieniło?

W1
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:110
2

Dzień dobry, nie będę wyjaśniał i tłumaczył mojej nieobecności i napisze otwarcie co zamierzam.

Zrezygnowałem z Unity i C# na rzecz Godot i GDScript który ma dużo wspólnego z Pythonem.

Wybór na ten silnik i język programowania padł właśnie głównie ze względu na język programowania w Godot.
Pomyślałem że jeśli nauczę się programować w Pythonie i nie wyjdzie mi w branży gier to Python ma również wiele innych przyszłościowych dziedzin w których jest i (podobno) będzie wykorzystywany jeszcze przez długie lata.

Kupiłem kurs na Udemy, dwie książki i ruszam dalej. Nie porzuciłem moich nierealnych marzeń stworzenia gry MMORPG, jednakże wiem że na pewno nie będzie to tak rozbudowany projekt jak wyobrażałem sobie na początku :)

Czy według Was warto zacząć od modułu PyGame i od gier 2D czy Od razu iść w 3D? Czytałem różne fora/grupy i zdania są podzielone. Według mnie warto byłoby poćwiczyć 2D, z tego względu że nadal jestem początkujący i jeśli nie będę radził sobie z 2D to nie ma sensu zabierać się za 3D.

Gdy opanuje podstawy Pythona/programowania 2D myślę nad kursem na Udemy o tworzeniu gier multiplayer w Unity/Unrealu. Bo pewnie multiplayer działa podobnie na wszystkich silnikach więc może coś zaimplementuje dla siebie:)

Długa droga przedemną ale nie będę się poddawał :)

Edit: Znacie tytuły książek/kursów lub macie jakieś wskazówki o portach TCP/UDP/RPC?
Ponieważ domyślam się że to właśnie na nich cała "multiplayerowa" otoczka wszystkich gier działa :)

edytowany 2x, ostatnio: wojtek1492
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)