Steamworks.net und Visual Basic

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Steven2m.

    Steamworks.net und Visual Basic

    Hallo zusammen,
    wir entwickeln ein kleines Computerspiel, dass wir auf Steam veröffentlichen wollen. Es ist ein Lernprojekt und ich habe das Gefühl, dass wir schon ziemlich weit gekommen sind.

    Nun versuchen wir das Spiel in Steam zu integrieren und dort auch die Errungenschaftenfunktion zu nutzen. Leider klappt die Kontaktaufnahme mit Steam noch nicht. Wir haben uns Steamworks.net heruntergeladen, dort gibt es ein Beispielscript, wie die Verbindung aufgebaut werden kann und einen kleinen Codeschnipsel, der den Spielernamen abrufen kann.
    Leider ist beides in C++ geschrieben. Den Schnipsel glaube ich schon sinnvoll integriert zu haben. Für die Verbindungsherstellung habe ich aber keine Idee, wie man das sinnvoll nach Basic übersetzen kann. Ich wüsste nicht mal, wonach ich googlen sollte.

    Steam initialisieren: steamworks.github.io/gettingstarted/

    Codeschnipsel: raw.githubusercontent.com/rlabre…SteamManager.cs

    Kann jemand helfen, den wesentlichen Teil von SteamManager.cs nach Basic zu übersetzen oder das richtige Stichwort geben, wo wir weiter ansetzen müssen?

    Für den entscheidenden Tipp losen wir einen Beta-Key für das Spiel aus ;)
    Unser erstes Computerspiel. Jetzt mit eigenem Steam-Community-Hub:

    steamcommunity.com/app/924890

    Neue Seite, gewohnt schlechtes Englisch! Schaut vorbei
    Mhm, auf den ersten Blick sieht das gut aus, aber in Visual Basic ist da dann doch leider ziemlich viel unterstrichen. Hat jemand eine Idee, wie man das angehen könnte. Der VB.net Code ist mit dem Übersetzungstool:

    VB.NET-Quellcode

    1. Imports UnityEngine
    2. Imports System.Collections
    3. Imports Steamworks
    4. <DisallowMultipleComponent>
    5. Public Class SteamManager
    6. Inherits MonoBehaviour
    7. Private Shared s_instance As SteamManager
    8. Private Shared ReadOnly Property Instance As SteamManager
    9. Get
    10. If s_instance Is Nothing Then
    11. Return New GameObject("SteamManager").AddComponent(Of SteamManager)()
    12. Else
    13. Return s_instance
    14. End If
    15. End Get
    16. End Property
    17. Private Shared s_EverInialized As Boolean
    18. Private m_bInitialized As Boolean
    19. Public Shared ReadOnly Property Initialized As Boolean
    20. Get
    21. Return Instance.m_bInitialized
    22. End Get
    23. End Property
    24. Private m_SteamAPIWarningMessageHook As SteamAPIWarningMessageHook_t
    25. Private Shared Sub SteamAPIDebugTextHook(ByVal nSeverity As Integer, ByVal pchDebugText As System.Text.StringBuilder)
    26. Debug.LogWarning(pchDebugText)
    27. End Sub
    28. Private Sub Awake()
    29. If s_instance IsNot Nothing Then
    30. Destroy(gameObject)
    31. Return
    32. End If
    33. s_instance = Me
    34. If s_EverInialized Then
    35. Throw New System.Exception("Tried to Initialize the SteamAPI twice in one session!")
    36. End If
    37. DontDestroyOnLoad(gameObject)
    38. If Not Packsize.Test() Then
    39. Debug.LogError("[Steamworks.NET] Packsize Test returned false, the wrong version of Steamworks.NET is being run in this platform.", Me)
    40. End If
    41. If Not DllCheck.Test() Then
    42. Debug.LogError("[Steamworks.NET] DllCheck Test returned false, One or more of the Steamworks binaries seems to be the wrong version.", Me)
    43. End If
    44. Try
    45. If SteamAPI.RestartAppIfNecessary(AppId_t.Invalid) Then
    46. Application.Quit()
    47. Return
    48. End If
    49. Catch e As System.DllNotFoundException
    50. Debug.LogError("[Steamworks.NET] Could not load [lib]steam_api.dll/so/dylib. It's likely not in the correct location. Refer to the README for more details." & vbLf & e, Me)
    51. Application.Quit()
    52. Return
    53. End Try
    54. m_bInitialized = SteamAPI.Init()
    55. If Not m_bInitialized Then
    56. Debug.LogError("[Steamworks.NET] SteamAPI_Init() failed. Refer to Valve's documentation or the comment above this line for more information.", Me)
    57. Return
    58. End If
    59. s_EverInialized = True
    60. End Sub
    61. Private Sub OnEnable()
    62. If s_instance Is Nothing Then
    63. s_instance = Me
    64. End If
    65. If Not m_bInitialized Then
    66. Return
    67. End If
    68. If m_SteamAPIWarningMessageHook Is Nothing Then
    69. m_SteamAPIWarningMessageHook = New SteamAPIWarningMessageHook_t(AddressOf SteamAPIDebugTextHook)
    70. SteamClient.SetWarningMessageHook(m_SteamAPIWarningMessageHook)
    71. End If
    72. End Sub
    73. Private Sub OnDestroy()
    74. If s_instance <> Me Then
    75. Return
    76. End If
    77. s_instance = Nothing
    78. If Not m_bInitialized Then
    79. Return
    80. End If
    81. SteamAPI.Shutdown()
    82. End Sub
    83. Private Sub Update()
    84. If Not m_bInitialized Then
    85. Return
    86. End If
    87. SteamAPI.RunCallbacks()
    88. End Sub
    89. End Class
    Unser erstes Computerspiel. Jetzt mit eigenem Steam-Community-Hub:

    steamcommunity.com/app/924890

    Neue Seite, gewohnt schlechtes Englisch! Schaut vorbei
    Du solltest schon mal sagen, was als Fehler angezeigt wird. Wie soll dir sonst geholfen werden? Mit den Glaskugeln ist das immer so eine Sache und der Wahrsager auf'm Rummelplatz ist zu teuer.
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin

    https://github.com/rlabrecque/SteamManager schrieb:


    This is a basic Unity script which controls Steamworks.NET


    Kann es sein das dieses Script explizit für die UnityGame Engine ist? Dann wird das in VS so ohne anpassung wohl nichts. Schliesslich ist gameObject nirgends deklariert. Ich gehe mal davon aus, das du nicht die UnityGameEngine nutzt sondern nur Visual Studio. Da musst du dich näher mit befassen und die Doku studieren, vllt. kennt sich jemand anderes hier damit gut aus.
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin

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

    Die Seite, von der die Steamwork.net Dateien sind schreibt:

    What languages does Steamworks.NET support?

    In theory it should work with any .NET based language! Documentation
    is only provided for C#, but many people have used it from UnityScript
    as well. Let me know if you’re using it from Boo or F#!

    Unser erstes Computerspiel. Jetzt mit eigenem Steam-Community-Hub:

    steamcommunity.com/app/924890

    Neue Seite, gewohnt schlechtes Englisch! Schaut vorbei
    Ich sage ja nicht das es nicht möglich ist, sondern das es angepasst werden muss. Ich kenne Unity3D vom höhren sagen(Ich mach spiele mit Blender), weiss aber das man dort mit C# arbeiten kann.

    Da dort steht, das die SteamManager.CS ein "unity-script" ist, wird das wohl nur gehen, wenn du auch Unity benutzt. (Editiert nicht unity kompiliert, sondern VS)

    Woher soll VS denn wissen was gameObject ist? Da musst du schauen was das ist und eine Instanz davon in diese Klasse bringen, dann könnte das vllt. klappen.

    Edit: Lese dir das was xChRoNiKx erwähnte mal durch. Scheint doch ausreichend dokumentiert zu sein.
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „NoIde“ ()

    Ja, das habe ich soweit gelesen. Einen Entwickleraccount habe ich bei Steam, das Spiel ist dort auch schon hochgeladen. Meine Frage bezieht sich allein darauf, ob jemand eine Idee hat, wie man die Anmeldung bei Steam über VB darstellen könnte. Ich kann schon den Steammanager.cs Code nicht lesen.
    Unser erstes Computerspiel. Jetzt mit eigenem Steam-Community-Hub:

    steamcommunity.com/app/924890

    Neue Seite, gewohnt schlechtes Englisch! Schaut vorbei
    Also ich täte die SteamWorks-SDK-Doku studieren und das dann selbst umsetzen, so lernt man das dann richtig. Das hat dann den Vorteil, wenn du später ein weiteres Spiel ohne .net machst, kennst du den Ablauf bereits und kannst den Code so runtertippen.
    partner.steamgames.com/doc/sdk
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin
    Warum die Ausrede "Das ist aber C#" nicht gilt

    Wenn du dazu nicht fähig bist Zweifel ich prinzipiell daran, dass dein Spiel in Steam gehört. Das klingt jetzt nicht gerade konstruktiv, ist aber gar nicht so gemeint. C# und VB unterscheiden sich fast nur von der Syntax. Das Framework ist identisch. Das impliziert für mich, dass du generelle Probleme hast Code zu lesen, was weiterhin bedeutet, dass du selbst kein erfahrener Programmierer bist. Deshalb wäre mein Ratschlag dich mehr auf die Weiterentwicklung deiner Fähigkeiten, als auf die Publikation deiner Programme zu konzentrieren. Beharrst du dennoch darauf, benutze einfach einen Online-Converter. Fehler, die dann auftauchen, entstehen meist dadurch, dass eben die Verweise zu den benutzten externen Lib's fehlt. Das liegt dann aber nicht an C#, das Problem hättest du auch, wenn der Code in VB vorläge.

    Stimmt, Pascalony, du hast recht, einfach mal lesen, was da in C# steht. Für alle mit dem selben Problem:

    VB.NET-Quellcode

    1. Imports Steamworks
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. SteamAPI.Init()
    4. SteamAPI.RestartAppIfNecessary(92***890)
    5. SteamAPI.RunCallbacks()
    6. Packsize.Test()
    7. test = SteamFriends.GetPersonaName()
    8. TextBox1.Text = test
    9. End Sub


    Damit konnte ich meinen Spielernamen aus dem Spiel auslesen!

    Danke für eure Hilfe!
    Unser erstes Computerspiel. Jetzt mit eigenem Steam-Community-Hub:

    steamcommunity.com/app/924890

    Neue Seite, gewohnt schlechtes Englisch! Schaut vorbei