Erste Schritte Einsteigerfragen

play554

Mitglied
Hallo java-forum Community,

Ich bin noch Schüler = sehr viel Freizeit und habe angefangen mir autodidaktisch Java beizubringen. Nun, da meine Fortschritte bisher recht mager ausgefallen sind, habe ich mir dafür einen Videokurs besorgt. Damit bin ich nun ein ganzes Stück weiter gekommen und merke nun, dass es mir Spaß macht. Nun möchte ich mich neben dem Erlernen der Sprache mit der "Szene" auseinandersetzen bzw. einiges über Programmierparadigmen in Erfahrung bringen. Wenn ich etwas über Spielentwicklung recherchiere, stoße ich immer wieder auf sehr viel Mathe. Nun, ich möchte anfänglich Tetris programmieren und mich mit 2D-Games auseinandersetzen. Was benötige ich dort an mathemathischen Kenntnissen? ( Referenzen wären z.B. Zelda, Mario, Indie-Games wie Machinarium, Sword and Sworcery, Point-and-Click Adventures wie die Monkey-Island Reihe und Android-Spiele)
Ich wäre aber auch für unspezifischere Tipps dankbar. Der Einstieg in die Programmierung ist zwar nicht ganz simpel, aber ich denke dennoch dass ich die nötige Motivation mitbringe.

Danke für's lesen,
LG play554
 

Fab1

Top Contributor
Nun auf Mathe wirst du wahrscheinlich immer wieder stoßen. Aber wirklich unlösbar wird nichts sein ;)

Wirklich konkrete Fragen hast du ja nicht. Grundsätzlich ist es zu empfehlen zuerst die Grundlagen zu erlernen zusammen mit einem Arbeitsbuch (Java von Kopf bis Fuß z.B.)

Aber das musst du wissen.
 

play554

Mitglied
Hallo fab1,
was verstehst du denn unter "Grundlagen"? Der Kurs beschäftigt sich mit dem Aufbau von Klassen, dem OOP-Paradigma, Acces Modifier, Projektplanung, GUI etc. und geht um die 25 Std, beinhaltet Übungsaufgaben und Abschlussprojekt. Es wird also von den Grundlagen auf erklärt, soweit ich das als Anfänger beurteilen kann. Aber ich weiß jetzt nicht genau, ob dies die von dir gemeinte Definition von Grundlagen darstellt.

Danke für deine Antwort,
lg play554

( Ich habe es bewusst allgemein gehalten, da ich mir alg. Anfängertipps erhofft hatte)
 
V

vanny

Gast
Die erste Frage, die sich mir stellt ist, was hat dir dein Videokurs denn speziell beigebracht?
(Welcher ist es denn?)

Um in die Welt der Spieleprogrammierung einzutauchen, wirst du um ein geballtes Basicwissen nicht herum kommen.

Du solltest natürlich wissen, was Klassen, Interfaces, Konstruktoren, Methoden, Sichtbarkeiten/Kapselung, Collections, Datentypen, Objekte/Instanzen, EDT und Threads, Events, Exceptions, Operatoren und und und sind, bevor du dich an ein Spiel wagst.

Bist du soweit?

Gruß Vanny
 

Fab1

Top Contributor
Die erste Frage, die sich mir stellt ist, was hat dir dein Videokurs denn speziell beigebracht?
(Welcher ist es denn?)

Um in die Welt der Spieleprogrammierung einzutauchen, wirst du um ein geballtes Basicwissen nicht herum kommen.

Du solltest natürlich wissen, was Klassen, Interfaces, Konstruktoren, Methoden, Sichtbarkeiten/Kapselung, Collections, Datentypen, Objekte/Instanzen, EDT und Threads, Events, Exceptions, Operatoren und und und sind, bevor du dich an ein Spiel wagst.

Bist du soweit?

Gruß Vanny

Danke, dem ist IMHO nichts hinzuzufügen ;)
 

play554

Mitglied
Hallo vanny,
ich kenne mich schon mit einigem von dir genannten ( Variabeln, Konstruktoren, Methoden, Acces Modifier Getter&Setter bzw. alg Sichtbarkeiten, Klassen, Objekte, komplexe und primitive Datentypen) aus, bin aber was GUI anbelangt noch nicht sehr weit, was natürlich unablässlich ist. Deshalb sind diese Fragen zukunftsorientiert, da ich die nächsten 3 Monate Ferien habe und mich intensiver mit der Materie beschäftigen werde.

Kleine Anmerkung: Ich weiß nicht, ob ich den Kurs hier posten darf. Gilt das nicht als Werbung?

LG,
play554
 
Zuletzt bearbeitet:
V

vanny

Gast
Ich denke nicht, dass es ein Problem ist, wenn du uns sagst, welcher Kurs das ist.
Es hilft auf jeden Fall, deinen Wissensstand einzuschätzen.

Man könnte jetzt anfangen dir ins Blaue Ratschläge zum Thema GUI zu geben, hätte aber keinen Wert.

Fang einfach mal an dich mit dem Thema zu beschäftigen und stelle hier konkrete Fragen, wenn du bei einem bestimmten Problem nicht weiter weisst.
So allgemein is das Murks und du verstehst es eh nur, wenn du proggst.

Gruß Vanny
 

play554

Mitglied
Java Video Kurs - Java Video Tutorials - Online Java lernen!

Dort bin ich bei Block 6, inklusive Aufgaben dazu gemacht. Also effektiv noch ziemlich am Anfang. Aber es ist wahrscheinlich durchaus sinnvoller, konkret bei Schwierigkeiten nachzufrage, wenn man keine allgemeinen Anfängertipps geben kann. Ich melde mich dann nochmal, wenn ich soweit bin. :oops: Aber immerhin habe ich schonmal ein gutes Forum gefunden, in dem reger Austausch stattfindet :)
 
V

vanny

Gast
Tjoa, den hab ich mir auch gekauft, und der deckt auch gut Basics ab.
Arbeite das einfach erstmal alles durch (nich nur guggn auch durcharbeiten;)) und dann kannste dich mit speziellen Problemen melden.

Gruß Vanny
 

Helgon

Bekanntes Mitglied
Um auf Spiele und Mathe zurück zu kommen.

Für 2D games braucht man meist noch recht wenig Mathe (kommt aber auch an was man macht)
Bei 3D sieht das alles schon ganz anders aus. Oberstufen Mathematik braucht man da auf jeden Fall
 
B

Basicsundso

Gast
Also von hdi's Videokurs schwärmen hier ja einige regelrecht. Ich selber hab ihn mir nicht gekauft da er wie gesagt wohl eher nur die Basics abdeckt und für jahrelange Entwickler die mitlerweile ihre Erfahrungen gemacht haben nicht wirklich was bringt. Aber mal genug von hdi's Arbeit. Ich kenns nicht selbst also kann ich nur soweit mitreden wie ichs von anderen gehört habe.


Zum Topic

Ich möchte dir jetzt nicht wirklich Angst machen oder dich völlig demotivieren, aber ein simpler 25h Basics-Crash-Kurs wird nicht reichen wenn du "Spiele" programmieren willst. Dazu gehören noch ganz andere Dinge. Klar ist es erstmal soweit ein guter Anfang, aber erwartet bitte nicht das du innerhalb von 6 Monaten soweit sein wirst das du schon große 3D-Ego-Shooter oder MMORPGs entwickeln können wirst. Und schon gar nicht alleine. An solchen Projekten sitzen ganze Teams von denen jeder sein Fachgebiet hat und sich nur damit beschäftigt. Wenn du sowas alleine oder als 2-/3-Mann-Team machen willst dürftest du/ihr da schon so die nächsten 10 bis 20 Jahre dran sitzen.
Programmieren ist mehr als nur ein paar Basics und dann "Feuer frei". Dazu gehört ne ganze Menge Wissen, Fachliteratur, (jahrelange) Erfahrung, Tipps und Tricks von anderen erfahrenen Programmierern, usw.

Ohne protzen zu wollen : ich programmiere jetzt seit knapp 10 Jahren, davon gut 8 mit Java und habe es letztes Jahr um diese Zeit mit "Schiffe versenken" zu meinem ersten halbwegs sinnvollem "Spiel" gebracht. Es war graphisch einfach nur hässlich (lediglich funktional orientiert das halt alles vorhanden war und funktioniert hat), hatte nicht mal eine KI und war auch sonst ziemlich störanfällig.
Sicher sind "Spielchen" wie "4 Gewinnt", "Tic,Tac,Toe", "XXO", "Schiffe versenken" und andere der Einsteig in die Spiele-Entwicklung. Aber alleine für deren Umsetzung braucht man schon einiges an Wissen.
Vielleicht sollte ich dazu auch erwähnen das mein "Fachgebiet" in Java nicht unbedingt GUIs oder gar Spieleentwicklung sind. Ich bin Richtung I/O , NIO.2 und "java.net.*" zu Hause und kann dir schöne komplizierte Netzwerk-Dinge basteln die dann trotzdem nur über die Console laufen.
Aber genug OT.

Was ich letztendlich eigentlich nur sagen wollte : dein Alter ist so das "normale Standardalter" in dem viele von uns auch mal angefangen haben. Und sicher auch einige gleich von Anfang an mit dem Wunsch "Spiele" zu entwickeln. Aber lass dir von erfahrenen Entwicklern sagen : das wird keine leichte Aufgabe und braucht sehr viel Zeit. Versuche also erstmal die Basics soweit drauf zu kriegen das du quasi "im Schlaf" einfach Dinge wie z.B. einen einfachen Taschenrechner, einen Kalender, einen Chat oder sonst der Gleichen in ein paar Stunden sauber implementieren kannst. Und dann kannst du dich mal langsam mit dem großen Gebiet "Spiele - Design, Entwicklung, Umsetzung" vertraut machen.

Ich hoffe der Text bashed dich jetzt nich zu krass, aber ich wollte dir dann doch mal eine halbwegs realistische Darstellung geben. 3 Monate Ferien werden nicht mal ausreichen um die Basics ordentlich drauf zu haben. Alleine dafür brauchst bei manchen schon Jahre.
 

KingOfExceptions

Bekanntes Mitglied
Der Text von Basicsundso hat mich doch ein wenig erschrocken.
Ich bin auch noch Schüler und habe vor einem Jahr mit einem Tutorial (Tutorial) langsam angefangen, mich in meine erste Programmiersprache hereinzutasten. Nachdem ich mit den 70 Kapiteln fertig war und alle Programmieraufgaben auch gemacht habe, bin ich in dieses (genial aktive) Forum gekommen und habe hier immer meine Probleme gepostet, mich an eigenen Aufgaben orientiert.
Wenig später fand ich dann auch Quaxlis Tutorial (Quaxlis Tutorial) und habe mir das dann zu erst einmal durchgelesen, bis ich gemerkt habe, dass das alles doch viel zu schwer für mich ist.
Also musste wieder eine eigene Programmieraufgabe her: Ich mache "einfach" mein eigenes Spielchen. Man soll einfach zwei Quadrate(eins steuerbar) übereinander schieben. Natürlich mit Barrieren usw.
Den Anfang habe ich ganz dreist von Quaxli kopiert, das ganze Framezeugs auf Seite 2, das ich noch nicht einmal verstanden habe. Aber immerhin machte es mir ein schönes Fenster :D
Dann habe ich einfach mal losprobiert und meine Fragen im Forum gepostet, wo mir auch (fast) immer kurz und knapp, aber trotzdem verständlich, alles erklärt wurde und mir meine Fehler aufgezeigt wurden.

Ich hoffe, dieser Text ermuntert dich ein wenig weiterzumachen, ich kann dir aber gleich sagen, dass es wirklich nicht leicht war, und da Schwerstarbeit auf dich zukommt. Aber wenn du jetzt ein 3-D Spiel einfach mal so machen willst, sage ich dir gleich, dass du total illusorisch an eine Programmiersprache herangegangen bist. Da du aber dieses Videotutorial gemacht hast, denke ich, dass du dir dessen im Klaren bist.

Grüße
KingOfExceptions
 
B

Basicundso

Gast
Ich habe extra betont das ich niemanden entmuting oder verängstigen will, ich wollte lediglich mal (m)eine Sichtweise auf das "Einsteigen in eine Programmiersprache" als Beispiel bringen. Natürlich macht es einen Unterschied ob ich vorher schon mal z.B. mit PHP ein paar Spielerein auf die Reihe bekommen habe , in C/C++/C# (wobei C# Java noch am nächsten ist) schon erfolgreich einige Programme zum laufen bekommen habe (und z.B. als C#-Umsteiger mich mit Java auf die Plattformunabhängigkeit konzentrieren will) oder ob ich halt noch totaler Neuling bin für den "Programmieren" dieses große geheimnisvolle Wort der "Freaks" ist.

Natürlich macht Programmieren Spaß. Vor allem wenn man sich selbst eine etwas größere Aufgabe stellt und es dann (egal ob mit oder ohne Hilfe) nach einiger Zeit endlich halbwegs Fehlerfrei zum laufen bekommt. Aber es ist nun mal nicht so einfach das ich mir einen Video-Kurs reinziehe der eine Laufzeit von ca. 25h hat und davon im ersten Moment auch nur die Hälfte verstehe.

Du könntest z.B. einen Abschnitt des Videos so lange wiederholen bis du ohne weitere Anleitung eigene Ideen auf dieser Basis umsetzen kannst. Und wenn es dann auch noch so läuft wie du es dir gedacht hast hast du diesen Teil dann auch verstanden und weist was da im groben abläuft. Zumindest mache ich es immer so wenn ich mich mit etwas neuem beschäftige. Dann kram ich mir ein paar Dinge aus diesem Themengebiet ausm Netz und versuche diese Umzusetzen. Irgendwann muss man dann nicht mal mehr in die Doc gucken.

Und ja : es kommt auch immer auf einen selbst an. Wenn man jetzt z.B. jemand ist dem sowas halt liegt, der sich dafür begeistert und das Wissen nur so in sich aufsaugt und das dann auch im ersten oder zweiten Anlauf sofort versteht wird es natürlich einfacher haben als wenn man bei Basics etwas länger hängt weil man den einen oder anderen Zusammenhang irgendwie nicht auf die Reihe bekommt oder es nicht auf etwas abbilden kann was man kennt und versteht. Sehr beliebt ist hier z.B. das Arrays mit Index "0" beginnen. Der Mensch fängt grundsätzlich bei "1" an mit Zählen. Für den Rechner ist aber "0" auch nur genau so eine Zahl wie "15" oder "65536", nur eben das halt alle "Signale" die die Zahl darstellen den Wert "0" haben. Und darum fängt der Rechner halt bei "0" an. Da "0" aber dann das "1." Element ist führt es dazu das ein Array mit der Größe/Länge von 50 Elementen dann nur von "0" bis "49" geht und nicht von "1" bis "50". Und es gibt nun mal Einsteiger die das sofort begreifen, und andere die darüber erstmal lange sitzen und es sich nach einer Woche rätzelraten immer noch nicht vorstellen können.


Und ja : Quaxils Tutorial kenn ich auch. Aber erlich : für einen Einsteiger der noch bei den Basics ist und erstmal die "Eigenheiten" von Java kennen lernen muss bringt ein solches Tutorial doch auch nichts wenn er es nicht versteht und einfach nur abschreibt / kopiert. Denn dann entstehen meistens Fehler beim "customizing" die man dann , obwohl es manchmal nur Kleinigkeiten sind , nicht beheben kann weil man eben die Basics zu diesem "Fehler" nicht drauf hat.
 

play554

Mitglied
Hallo,
erstmal danke für die weiteren Antworten

@Basicundso: Ich danke dir, dass du versuchst mir ein realistisches Bild der Programmierung zu vermitteln, du scheinst ja nach deinen Angaben auch wirklich eine profunde Erfahrung damit zu haben. Nun, ich möchte nun wirklich nicht nach 6 Monaten extraordinär-realistische 3D-Shooter oder riesige MMORPG's auf die Beine stellen. ( Ich weiß auch, dass sich solche Projekte nur als größeres Team realisieren lassen) Das wäre ein bisschen fehlgeleiteter Enthusiasmus, um es mal höflich zu umschreiben. Ich habe vor, jeden Tag ca. 3 Std. zu üben. Den Kurs will ich auch nicht einfach nur "gucken", sondern ernsthaft bearbeiten, den jeweiligen Kontext verstehen und mir diesen auch einprägen. Ich hatte vor - nachdem ich die Basics verstanden habe - Tetris zu programmieren. ( Nicht sofort danach, wie du empfohlen hast werde ich erstmal Standard"kram" üben) Da hat man schon genug Schwierigkeiten, wie ich gelesen habe und kann den Code auch paar mal komplett neu schreiben. Ich würde grundsätzlich keine Codes wahllos kopieren und abändern, sondern versuchen - sobald ich soweit bin, im Bezug auf das 2D-Tutorial - ihn zu verstehen und mit Trial&Error erstmal eigene Gehversuche wagen. Natürlich werde ich sehr vieles nicht selbst erarbeiten können, aber nachvollziehen wäre mir doch recht wichtig.
Naja, ich habe für den Kurs mal jedes Video 2-3 ( durchschnittlich, natürlich hängt man mal wo mehr und weniger)anschauen berechnet + Übungsaufgaben und damit wäre ich schon vor den Ferien fertig, deshalb kann ich mir schon denken, dass das sozusagen die Mindestgrundlage bildet und wahrscheinlich habe ich danach auch nicht alles verstanden, jedoch kann ich dann wenigstens etwas "mitreden" und vlt. hier im Forum auf Hilfe von erfahrenen Programmierern hoffen.

@KingofExceptions: Ich werde es auf jeden Fall mit erstmal mit Tetris probieren, sobald ich die Basics drauf hab. Versuchen kann mans immer ;-)
 
S

Shaden

Gast
Was benötige ich dort an mathemathischen Kenntnissen? ( Referenzen wären z.B. Zelda, Mario, Indie-Games wie Machinarium, Sword and Sworcery, Point-and-Click Adventures wie die Monkey-Island Reihe und Android-Spiele)
Das hängt stark vom jeweiligen Spiel ab, aber grundsätzlich sind die mathematischen Voraussetzungen enorm; viele der hier angesprochenen "Spielchen" habe ich - in einer sehr vereinfachten Form - erst während des Studiums geschrieben.

4 Gewinnt für die Konsole ist in einer Stunde geschrieben, aber damit du gegen einen vernünftigen Computer spielen kannst, erfordert es eine Alpha-Beta-Suche.
Zelda - oder vereinfacht: eine über die Coursertasten steuerbare Spielfigur mit Schwert und ein paar Gegnern - hört sich auch nicht schwer an, aber sobald die Gegner nicht stupide im Kreis, sondern möglichst intelligent auf die Spielfigur zulaufen sollte, kommt man nicht um Dijkstra, A* usw. herum.

Und das sind wohlgemerkt Beispiele für die Konsole bzw. 2D gewesen. Sobald es in den dreidimensionalen Raum geht, wird die Sache ungemein komplizierter: Lineare Algebra, projektive & analytische Geometrie, Analysis, ... damit diese Themen hinreichend tief behandelt werden, muss man schon einen speziellen Zweig im Studium wählen.

Bevor du dich in irgendeine Spielidee verrennst, solltest du lieber nachfragen, wie andere das vom Schwierigkeitsgrad her einstufen würden. Tetris zB. fände ich relativ leicht: es erfordert keine KI und für die Geometrie reicht Schulmathematik aus. Viel Spaß beim Programmieren. ;)
 
V

vanny

Gast
Selbst wenn man sich nur mit 2D Kram befasst sollte man schon mal was von Vektoren gehört haben :)

nicht für Tetris oder andere Tile/Raster-basierende spielchen :p:oops:

Ich lehne mich jetzt mal aus dem Fenster, und behaupte, aus mathematischer Sicht, genügt die Addition für Tetris.:autsch: wenn auch umständlicher
 
Zuletzt bearbeitet von einem Moderator:

schalentier

Gesperrter Benutzer
How do I make games? A Path to Game Development - Game Programming - Articles - Articles - GameDev.net

Ist zwar schon ueber 10 Jahre alt, hat aber nix an Wahrheit verloren.

Ich bin uebrigens Verfechter von der Sprung-ins-Wasser-Theorie. Will sagen: Fang einfach mit Tetris an und rechne fest damit, dass du scheitern wirst. Und selbst wenn du dir den Code dazu aus dem Internet zusammen klaust - das Ergebnis ist tausend Mal besser, als 50h Buch lesen und immer noch kein Ergebnis haben.

Wenns irgendwann gar net mehr weiter geht, dann ueberleg warum (oder poste das Ergebnis hier) und fang einfach von vorne an.
 

AquaBall

Top Contributor
nicht für Tetris oder andere Tile/Raster-basierende spielchen :p:oops:

Ich lehne mich jetzt mal aus dem Fenster, und behaupte, aus mathematischer Sicht, genügt die Addition für Tetris.:autsch: wenn auch umständlicher

Dafür kommen da dann solche Themen wie Flächendeckung, optimale Packung ... dran. Die sind nicht weniger "mathematisch".

Hast du schon mal versucht einen allgemeinen Algorithmus zu schreiben, für:
"Passt 'diese' Form in 'diese' Lücke?"
Da ist schon ein gutes Stück Mathematik nötig.

Aber du hast recht: alles kann auf die binäre Addition von 0+0, 0+1 und 1+1 reduzeirt werden.
 
S

Spacerat

Gast
[OT]
Das ist keine Werbung, dass ist Feedback. ;)
Der Kurs stammt von einem User in diesem Forum (hdi).[/OT]
Ich habe mir Java auch autodidaktisch beigebogen und stehe auch ebenso mit vielen mathematischen Erklärungen in Wikipedia auf Kriegsfuss, auch wenn Mathe selbst nicht das Problem ist, sondern eher diese "Hieroglyphen" in Formeln der Mengenlehre (Die Zeichen für rationale Zahlen oder Summe sind dabei noch recht einfach).
Ich habe mich anfangs durch das Javabuch von Guido Krüger durchgearbeitet und bissl' mit den dortigen Beispielen experimentiert. Danach habe ich versucht "fremden" Quellcode (z.B. die Quellen des JDK) zu verstehen und nachzuvollziehen - Copy-Paste-Experimente, also Codestellen kopiert und solange dran rumgefrickelt, bis es genau das tat, was es sollte. Experience (Erfahrung) durch Experimente - möglicherweise leitet sich ja ersteres vom Zweiten ab.
 

Helgon

Bekanntes Mitglied
Dafür kommen da dann solche Themen wie Flächendeckung, optimale Packung ... dran. Die sind nicht weniger "mathematisch".

Hast du schon mal versucht einen allgemeinen Algorithmus zu schreiben, für:
"Passt 'diese' Form in 'diese' Lücke?"
Da ist schon ein gutes Stück Mathematik nötig.


Ich dachte, ich wäre der einzige der Tetris gar nicht so einfach fand.. da find ich nen specular occlusion shader schreiben angenehmer, kein scherz :autsch:
 

x22

Bekanntes Mitglied
Vllt erstmal die Basics lernen und nicht gleich bei OOP einsteigen?

Oder bist du in Sachen Schleifen und alles was man vor OOP können sollte denn schon fit?

Ich kenne sehr viele, die gleich mit OOP angefangen haben und null Plan von verschachtelten Schleifen etc. hatten.
Solltest mit sowas anfangen und dir dafür ein Buch kaufen.

Schau mal oben rechts in deinem Browser fenster:

Java 6 Einstieg und professioneller Einsatz --> UMSONST!

Habe es mir auch bestellt um mal durchzublättern das hilft dir auf jedenfall schonmal, n gutes Buch für wenig Geld ;)
 

Neue Themen


Oben