2D RPG gameengine mit vb ?

  • VB.NET

Es gibt 28 Antworten in diesem Thema. Der letzte Beitrag () ist von ThuCommix.

    2D RPG gameengine mit vb ?

    Hallo Leute

    Ich habe mich gefragt ob bzw. wo ich anfangen sollte bei VB 2010 wenn ich ein 2D rpg programmieren will.

    Ne komplette engine hab ich nicht vor zu programmieren aber eben etwas kleines , kleine map (aus tileset), char den man bewegen kann.

    Ganz ohne Vorkenntnisse bin ich nicht ich mache zurzeit mein Fachabitur zum Wirtschafts Informatiker mit Schwerpunkt auf Informatik in der 12 Klasse und lerne VB 2010 in der Schule. (Übrigens mein letztes Jahr danach will ich Informatik studieren) :)

    Bisher haben wir natürlich nix mit GDI oder ähnlichem gemacht (was man anscheinend beherrschen muss wenn ich keine falschen infos aus google habe

    nur solche Sachen wie Programme zum berechnen von Sachen ,Schleifen/ Doppelschleifen / Zählschleifen (for i = " to " step ") usw. , Select Case, Ausgaben formatierung, Operatoren (Logische,Verkettungs,arithmetische usw.), Datentyp konvertierung (Option Strict ON) und noch ein paar andere Grundlagen ... (das waren die die mir so spontan noch einfallen)

    Wir kommen so langsam zum fortgeschrittenen Stoff die nächsten paar Wochen. :D


    Kurz:

    1. Ist es mir möglich sowas zu machen also ein(e) RPG Spiel(e)(engine)
    (ich weiss das die frage blöd ist mit nur den Grundlagen aber ich muss ja vielleicht irgentwo anfangen/ansetzen können)

    2. Oder sollt ich eher die Prog. Sprache wechseln ? ( C# wird im internet auch sehr empfohlen)

    3. Falls es doch möglich ist mit VB aber meine kenntnisse nicht langen (was ich mir sowieso schon denke) was sollte ich lernen was empfiehlt ihr mir ? (evtl. GDI ?) :huh:



    Das wäre es auch schonmal :) ich weiss das viele programmierer allergisch auf solche fragen reagieren aber ich muss es einfach mal von experten bzw. fortgeschrittenen wissen.

    p.s: Es tut mir leid falls ich hier im falschen forum gelandet bin ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „bozzkurt10“ ()

    1) Hmm. Vielleicht
    2) C# oder VB.net sind beide gut
    3) GDI wäre quasi Grundvoraussetzung.

    Schau mal hier im Forum nach. Da gibt es schon ein paar schöne Projekte zu 2D und 3D Spielengines. Vielleicht wirst du da schon alle deine Fragen los.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Mann kann eine Engien in VB Schreiben. Hab auch eine RPG Engien in VB Geschrieben bzw. begonnen. Auch ein Tutorial für Map bewegung und NPC steuerung habe ich geschrieben.

    [C#] Game Tuturial 1 Map Bewegen
    [C#] Game Tutorial 2: NPC's Bei Dynamisher map

    Andy16823 schrieb:

    Mann kann eine Engien in VB Schreiben. Hab auch eine RPG Engien in VB Geschrieben bzw. begonnen. Auch ein Tutorial für Map bewegung und NPC steuerung habe ich geschrieben.

    [C#] Game Tuturial 1 Map Bewegen
    [C#] Game Tutorial 2: NPC's Bei Dynamisher map

    ThuCommix schrieb:


    Schau mal hier vorbei:

    [OpenSource][C#] Sharpex.GameLibrary
    [C#] [Sharpex.GameLibrary] Tutorialübersicht

    oder

    [C#] [OpenSource] GameUtils


    Kann man alles in VB nutzen.

    Danke erstmal für die antworten

    sind diese beiträge nicht alle für C# ? weil wenn ja dann müsste ich erstmal C# lernen weil ich wie schon gesagt nur Visual Basic kenne.

    oder ändert sich da nicht viel zwischen VB und C# ?
    Es ändert sich eigentlich gar nix, bis auf die Tatsache, dass du bei C# in C-Syntax programmierst (die imo viel schöner als die hässliche VB-Syntax ist). Allerdings kannst du auch bei VB bleiben, in C# programmierte DLLs lassen sich ja dank der gemeinsamen Architektur auch in VB verwenden und umgekehrt.
    Ja, in den Tutorials musst du nur kleinigkeiten ändern, Die Deklarationen und die Subs das war es. Hab es dir mal schnell übersetzt nach VB

    VB.NET-Quellcode

    1. Public Sub checkPosition()
    2. if PosY < 50 Then
    3. OffsetY -= 50;
    4. PosY += 50;
    5. End if
    6. If PosY > Me.Height - 100 Then
    7. OffsetY += 50;
    8. PosY -= 50;
    9. End If
    10. if PosX < 50 Then
    11. OffsetX -= 50;
    12. PosX += 50;
    13. End If
    14. if PosX > Me.Width - 100 Then
    15. OffsetX += 50;
    16. PosX -= 50;
    17. End If
    18. End Sub

    Artentus schrieb:

    Es ändert sich eigentlich gar nix, bis auf die Tatsache, dass du bei C# in C-Syntax programmierst (die imo viel schöner als die hässliche VB-Syntax ist). Allerdings kannst du auch bei VB bleiben, in C# programmierte DLLs lassen sich ja dank der gemeinsamen Architektur auch in VB verwenden und umgekehrt.
    Ok danke für diese info :D

    Ouh das ist dann schonmal gut


    Andy16823 schrieb:


    Ja, in den Tutorials musst du nur kleinigkeiten ändern, Die Deklarationen und die Subs das war es. Hab es dir mal schnell übersetzt nach VB



    Dankeschön das schau ich mir mal an wie dus gemacht hast muss dann wohl auch öfter ma warscheinlich sachen von C# auf VB übersetzen so wie es scheint :)

    Vielen vielen dank für die Superschnelle Hilfe und die antworten jetzt hab ich was wo ich ansetzen kann

    dann wären meine fragen auch soweit geklärt :thumbup:
    Für C# zu VB (und umgekehrt) gibts auch Konverter, die produzieren allerdings manchmal Fehler (kriegste grad nen Fehler in der IDE, ziemlich einfach behebbar, wenn man sie kennt, ansonsten einfach nachfragen). Und ich würde mich an ThuCommix seiner Library orientieren, die ist super, Andy sein Ansatz ist leider nicht so sauber und wird dir nicht die nötige Performance bringen. Wenn du es selber machen solltest, solltest du dich erstmal allgemein in GDI+ einarbeiten, außerdem solltest du OOP beherrschen und dich etwas mit Performanceoptimierung und Multithreading auskennen.
    Ja also soweit will ich noch garnicht gehen ich habe jetzt dank andi's hilfe bisschen was hinbekommen.

    was mir halt jetzt noch fehlt die playersprite's (lauf animation) ich hab zwar halt ne png datei wo der "charakter" in alle richtungen animiert ist (sprich von jeder seite sichtbar) nur ist die frage jetzt wie binde ich das ein ?

    dasselbe gilt natürlich auch für die boden texturen.


    Aber sonst bis jetzt leufts gut

    ich hab nen char (eher ein bild) den ich hin und her bewegen kann.

    jetzt schreibe ich auch noch natürlich die begrenzung der map (was mich natürlich leicht fordert aber machbar scheint)
    Hey, für sowas gibt es die Überladungen der .DrawImage-Methode in GDI+.

    Diesem kannst du ein sourceRec zuweisen.

    Dort gibst du die Koordinaten aller Sprites an.
    In einem kontinuierlichgehaltenehm Abstand, zB 32 p á le Sprite:

    VB.NET-Quellcode

    1. Graphics.DrawImage(TEXTURE, New RectangleF(X,Y,W,H), New RectangleF(POSITIONX DES BILDES, POSITIONY DES BILDES,32,32), GraphicsUnit.Pixel)


    Das heißt: "Schneide ab der Position (zB: 0;0) das Bild mit der Größe (32;32), und implementier sie der destRec."

    Und in einer Select Case-Abfrage, kannst Du dann einen Integer +1 zählen, diesen Integer jedesmal um +32 erhöhen, und wenn es über >128 ist, auf 0 setzen.

    So hast Du eine Animation.
    Wenn Du ein Source-Code willst, schreib es, dann werde ich dir diesen Source-Code in den Topic setzen.
    Von Vorteil wär es, es selbst zu versuchen.
    Ich versuche es ersteinmal selbst mit dem ansatz den du mir gegeben hast :D

    Falls ichs wirklich garnicht hinbekomme schreib ich dir mal ne nachricht (natürlich falls das ok für dich ist)


    Danke nochmal für die Hilfe :D ich probiers gleich mal aus ^^
    Noch ein kleiner Tipp, mach in dein Form keine Codes, lager diese in klassen und module aus, der Übersichtlichkeit halber. Wenn dann noch quests, kämpfe etc. dazu kommen , fällt schon eine Menge Code an. Bedenke auch das du Teleport Funktionen einbauen Solltest wenn dein Spieler in ein haus soll.

    Andy16823 schrieb:


    Noch ein kleiner Tipp, mach in dein Form keine Codes, lager diese in klassen und module aus, der Übersichtlichkeit halber. Wenn dann noch quests, kämpfe etc. dazu kommen , fällt schon eine Menge Code an. Bedenke auch das du Teleport Funktionen einbauen Solltest wenn dein Spieler in ein haus soll.


    Ja das merk ich auch klassen hatte ich bis jetzt nicht nur module aber ich werde mich da mal später dran setzen (wenn ich die char animation hinbekommen habe)





    Nix Nachricht.
    Einige hier mögen es nicht, was auch nachvollziehbar ist.
    Schreibs in den Topic.


    Ok ja dann würde ich mich über einen sourcecode freuen wäre nett wenn du mir einen geben könntest :)
    ich habe dir doch einen als pn gesendet ;)

    Also zusammen Gefasst.

    Du erstellst dir zuerst eine Klasse Wir nennen Sie npc. So in diese Klasse musst du die Eigenschaften:

    Sprite (Bitmap)
    Size (Size)
    WalkAlgo (List of Point)
    nowPoint (Integer)


    VB.NET-Quellcode

    1. Public Class meinGame
    2. '*
    3. '* Die Lister deiner NPC's
    4. '*
    5. Dim npcs as List(of npc)
    6. '*
    7. '* Das Laden der Form
    8. '*
    9. Public Sub load(Sender as Object, e as EventArgs)
    10. npcs = new List(Of npc)
    11. npcs.add(addNpc())
    12. End Sub
    13. '*
    14. '* Instanz der Klasse npc erstellen.
    15. '*
    16. Public Function addNpc() as npc
    17. Dim NowX as IntegerDim NowY as Integer
    18. Dim myNpc as new npc
    19. myNpc.Sprite = new Bitmap("Ein Bild")
    20. myNpc.Size = new Size(64,64)
    21. myNpc.nowPoint = 0
    22. myNpc.WalkAlgo = new List(of Point)
    23. ' Den Start Hinzufügen
    24. Dim pt as new Point(15,15)
    25. myNpc.WalkAlgo.add(pt)
    26. ' Links laufen
    27. NowX = myNpc.WalkAlgo.item(myNpc.WalkAlgo.Count -1).X
    28. NowY = myNpc.WalkAlgo.item(myNpc.WalkAlgo.Count -1).Y
    29. for i = 0 to 50
    30. Dim pt as new Point(NowX + 5, NowY)myNpc.WalkAlgo.add(pt)
    31. next
    32. ' Nach Unten
    33. NowX = myNpc.WalkAlgo.item(myNpc.WalkAlgo.Count -1).X
    34. NowY = myNpc.WalkAlgo.item(myNpc.WalkAlgo.Count -1).Y
    35. for i = 0 to 50
    36. Dim pt as new Point(NowX, NowY + 5)myNpc.WalkAlgo.add(pt)
    37. next
    38. ' Nach Rechts
    39. NowX = myNpc.WalkAlgo.item(myNpc.WalkAlgo.Count -1).X
    40. NowY = myNpc.WalkAlgo.item(myNpc.WalkAlgo.Count -1).Y
    41. for i = 0 to 50
    42. Dim pt as new Point(NowX -5, NowY)myNpc.WalkAlgo.add(pt)
    43. next
    44. ' Nach Oben
    45. NowX = myNpc.WalkAlgo.item(myNpc.WalkAlgo.Count -1).X
    46. NowY = myNpc.WalkAlgo.item(myNpc.WalkAlgo.Count -1).Y
    47. for i = 0 to 50
    48. Dim pt as new Point(NowX, NowY - 5)myNpc.WalkAlgo.add(pt)
    49. next
    50. Return myNpc
    51. End Function
    52. '*
    53. '* Der Timer
    54. '*
    55. Private Sub Timer1_Tick(sender as Object, e as Event Args)
    56. Dim t as new Threading.Thread(new Ghreading.ThreadStart(AddressOf npcWalk)))
    57. t.start
    58. End Sub
    59. '*
    60. '* Die Bewegung
    61. '*
    62. Private Sub npcWalk()
    63. for each myNpc as npc in npcs
    64. myNpc.NowPoint += 1
    65. if myNpc.NowPoint >= npc.WalkAlgo.count Then
    66. myNpc.NowPoint = 0
    67. End if
    68. next
    69. End Sub
    70. '*
    71. '* Das Zeichnen
    72. '*
    73. Private Sub Paint(sender as Object, e as PaintEventArgs)
    74. ' hier deine Alten Anweisungen
    75. Dim t As New Threading.Thread(New Threading.ParameterizedThreadStart(AddressOf PaintNpc))
    76. t.Start(e)
    77. End Sub
    78. '*
    79. '* Thread zum NPC Zeichnen
    80. '*
    81. Private Sub PaintNpc(e as PaintEventArgs)
    82. For Each myNpc as npc in npcs
    83. Dim PosX as Integer myNpc.WalkAlgo(myNpc.NowPoint).X - OffsetX
    84. Dim PosY as Integer myNpc.WalkAlgo(myNpc.NowPoint).Y - OffsetY
    85. e.graphics.drawimage(myNpc.Sprite, new Rectangle(Posx,PosY, myNpc.Size.Width, myNpc.Size.Height))
    86. next
    87. End Sub
    88. End Class

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Andy16823“ ()