Geld verdienen mit Unity Ads als Minderjähriger / Steuern?

Moin!

Vorweg: Ich suche hier keine legale Beratung oder sonstiges, noch gebe ich sie. Es geht mir einfach darum zu schauen, welche Optionen ich habe und ob ihr irgendwelche Tipps für mich habt.

Erstmal zu mir:

Ich bin 15 Jahre Alt und programmiere seit etwas mehr als einem Jahr Spiele mit Unity und C#, hauptsächlich Mobile-Games. Während dieser Zeit konnte ich mich immer weiter verbessern, weswegen ich bitte vom Tisch räumen würde, das ich einfach irgendein C#-Amateur bin der hier blind reingeht.

Ein Projekt, was tatsächlich eines meiner ersten war habe ich vor ein paar Monaten wieder entdeckt und nach einigen Verbesserungen am Code weiterentwickelt, sodass ich jetzt mit dem Stand des Spiels sehr zufrieden bin, als auch meine Freunde die mir sehr gutes Feedback zu Beta-Patches gegeben haben. Es ist eine Art Endless Runner mit Platformer-Aspekten.

Soweit also der jetzige Stand.

Ich wollte schon von Anfang an ein Spiel im Google Play Store (App Store kommt mir momentan noch zu professionell und teuer vor) veröffentlichen. Die einmalige Registrierungsgebühr von 25€ wären auch kein Problem, und dieses Konto könnte ja offiziell einem meiner Elternteile gehören, die dann auch legal den Vertrag des Entwicklerkontos annehmen könnten.

Ich erhoffe mit natürlich keine tausende von Downloads oder riesigen Erfolg, aber zumindest das Freunde / Familie als auch Leute die über Instagram auf den Link klicken sich das Spiel im Play Store herunterladen können. Wenn ich mit dem Spiel allerdings zufällig doch einen kleinen Erfolg erziehlen würde wäre das auch kein Problem, da das Spiel auf kostenpflichtigen Onlinedienste verzichtet, die monatlichen Gebühren mit sich bringen würden.

So viel dazu, aber wenn man ein Spiel jetzt theoretisch schon im Play Store veröffentlicht wäre es doch auch eigentlich eine interessante Erfahrung, Werbung über Unity Ads einzubauen, z.B. um einen Erfolg mit dem man Probleme hat freizuschalten oder nach 5 Toden eine kurze Werbung einzubauen. So könnte ich nicht nur wenigstens etwas Geld damit verdienen, sondern auch Erfahrung für zukünftige Projekte sammeln.

Allerdings werde ich aus den Richtlinien für Unity Ads wirklich nicht schlau. Wenn man sich registrieren würde, kann man sich als Unternehmen oder Privatperson eintragen, soweit so gut. Jetzt kommt aber der rechtliche Teile mit Steuern: Soweit ich verstehe kann man aber wenn es ums Auszahlen geht zumindest in Deutschland doch nicht ohne ein Unternehmen Auszahlungen tätigen, was ja auch irgendwie Sinn machet da man hier ja wahrscheinlich ein Gewerbe bräuchte.

Ich möchte natürlich wenn dann offiziell versteuerte Auszahlungen tätigen und auf keinen Fall irgendeinen "Legalen Grauzonen"-Weg gehen.

Gibt es irgendeinen Weg Unity Ads ohne ein Gewerbe zu nutzen?

Muss ich damit warten bis ich 18 bin?

Habt ihr irgendwelche Tipps für mich?

Ich bin dankbar für jegliche Antworten / Tipps :)

App, Steuern, Android, Gewerbe, Spieleentwicklung, Unity 3D, Unity
Unity: Wieso läuft die Registrierung schief?

Hallo,

ich bin gerade dabei, ein Unity-Spiel zu programmieren. In dem Spiel soll man sich registrieren können, dabei benutze ich PlayFab. Bei dem Test der Registrierung läuft etwas schief und ich weiß einfach nicht wieso. Vielleicht könnt ihr mir weiterhelfen?

Danke für jede Antwort.

Unity:

Das Spiel:

Das Skript:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using PlayFab.ClientModels;
using PlayFab;
using System;
using UnityEditor.PackageManager.Requests;
using UnityEngine.UI;
using TMPro;
using PlayFab.PfEditor;

public class PlayFabLoginScript : MonoBehaviour
{
  public TextMeshProUGUI regPassword, regUsername, regEmail;
  public GameObject regPanel;

  // Start is called before the first frame update
  void Start()
  {
    var request = new LoginWithCustomIDRequest { CustomId = "GettingStardedGuide", CreateAccount = true };
    PlayFabClientAPI.LoginWithCustomID(request, OnLoginSucces, OnLoginFailure);
  }

  private void OnLoginFailure(PlayFabError obj)
  {
    Debug.Log("Es ist etwas schief gelaufen");
  }

  private void OnLoginSucces(LoginResult obj)
  {
    Debug.Log("API Call hat funktioniert");
  }

  public void Register()
  {
    var request = new RegisterPlayFabUserRequest();
    request.TitleId = PlayFabSettings.TitleId;
    request.Email = regEmail.text;
    request.Username = regUsername.text;
    request.Password = regPassword.text;
    PlayFabClientAPI.RegisterPlayFabUser(request, OnRegisterResult, OnPlayFabError);
  }

  private void OnPlayFabError(PlayFabError obj)
  {
    print("Error:" + obj.Error);
  }

  private void OnRegisterResult(RegisterPlayFabUserResult obj)
  {
    print("Registrierung hat funktioniert");
    regPanel.SetActive(false);
  }
Bild zum Beitrag
C Sharp, Code, Programmiersprache, Spieleentwicklung, Visual Studio, Unity
Wie findet ihr die Story für ein Horrospiel?

Kapitel 1: Der Weg ins Unbekannte

Die Geschichte beginnt damit, dass der Spieler, ein Abenteurer namens Jack, sich im dichten Wald verirrt hat. Die Nacht bricht herein, und Jack beginnt, sich Sorgen zu machen. Als er durch die Bäume wandert, entdeckt er plötzlich ein verlassenes Herrenhaus, das mysteriös aus dem Dunkel auftaucht. Ohne andere Optionen in Sicht entscheidet sich Jack, das Haus zu erkunden, um Schutz vor der Nacht zu finden.

Kapitel 2: Ein düsteres Willkommen

Jack betritt das verlassene Herrenhaus und findet sich in einer düsteren und gespenstischen Umgebung wieder. Das Innere des Hauses ist in Dunkelheit gehüllt, nur das schwache Licht des Mondes dringt durch die staubigen Fenster. Als er tiefer in das Haus eindringt, werden die Geräusche um ihn herum unheimlicher, und er spürt eine unbestimmte Präsenz, die ihn beobachtet.

Kapitel 3: Die Suche nach Antworten

Entschlossen, die Geheimnisse des Herrenhauses zu enthüllen, beginnt Jack, nach Hinweisen zu suchen. Er durchsucht Zimmer, öffnet alte Truhen und liest vergilbte Tagebücher, die von früheren Bewohnern des Hauses hinterlassen wurden. Doch je mehr er entdeckt, desto unheimlicher werden die Enthüllungen über die dunkle Vergangenheit des Herrenhauses.

Kapitel 4: Gefangen im Labyrinth

Als Jack weiter in die Tiefen des Herrenhauses vordringt, wird er plötzlich von einem unerklärlichen Ereignis gefangen genommen. Türen schließen sich hinter ihm, Gänge verändern sich plötzlich, und er scheint in einem undurchdringlichen Labyrinth gefangen zu sein. Verzweifelt versucht er einen Ausweg zu finden, während die Dunkelheit um ihn herum immer bedrohlicher wird.

Kapitel 5: Die Stimmen der Vergangenheit

Während Jack verzweifelt nach einem Ausweg sucht, hört er plötzlich Stimmen aus der Vergangenheit, die durch die Gänge des Herrenhauses hallen. Er erkennt, dass er nicht allein ist, und dass die Geister der früheren Bewohner des Hauses ihn verfolgen. Die Stimmen flüstern düstere Warnungen und rufen ihn, tiefer in das Geheimnis des Herrenhauses einzutauchen.

Kapitel 6: Die Suche nach einem Fluchtweg

Entschlossen, einen Fluchtweg zu finden, setzt Jack seine Suche fort, während die Geister der Vergangenheit ihm immer dichter auf den Fersen sind. Er stößt auf verborgene Passagen, geheime Räume und mysteriöse Symbole, die ihm Hinweise auf die Geschichte des Herrenhauses geben. Doch je tiefer er gräbt, desto klarer wird ihm, dass die Geheimnisse des Hauses tödlicher sind, als er sich je vorgestellt hat.

Kapitel 7: Die Rache der Geister

Plötzlich eskaliert die Situation, als die Geister des Herrenhauses beginnen, Jack direkt anzugreifen. Er muss sich gegenüber übernatürlichen Kräften behaupten, die versuchen, ihn in die Dunkelheit zu ziehen. Mit all seiner Entschlossenheit und seinem Mut kämpft Jack um sein Überleben, während er verzweifelt nach einem Ausweg aus dem Albtraum sucht.

Kapitel 8: Die Offenbarung

Inmitten des Chaos und der Verzweiflung kommt Jack endlich der Wahrheit über das Herrenhaus näher. Er entdeckt eine alte Legende über einen Fluch, der das Haus seit Jahrhunderten umgibt, und die dunklen Machenschaften, die es im Laufe der Zeit gefangen gehalten haben. Doch bevor er die Wahrheit vollständig verstehen kann, muss er sich einem letzten, furchterregenden Feind stellen, der tief in den Mauern des Herrenhauses lauert.

Kapitel 9: Der Kampf um die Freiheit

Mit all seinem Mut und seiner Entschlossenheit stellt sich Jack seinem letzten Gegner, einer dunklen Präsenz, die das Herrenhaus beherrscht. Es ist ein Kampf auf Leben und Tod, der die Grenzen von Jacks Verstand und Körper auf die Probe stellt. Doch durch seine Entschlossenheit und seinen unerschütterlichen Willen gelingt es ihm schließlich, den Fluch des Herrenhauses zu brechen und einen Weg zurück in die Freiheit zu finden.

Kapitel 10: Die Rückkehr ins Licht

Erschöpft, aber siegreich, tritt Jack aus dem verlassenen Herrenhaus und zurück ins Licht des Tages. Er hat das Geheimnis des Herrenhauses gelüftet und seinen eigenen Mut und seine Entschlossenheit unter Beweis gestellt. Während er sich von den Schrecken des Herrenhauses entfernt, verspricht er sich selbst, nie wieder in die Dunkelheit zurückzukehren.

Videospiele, Horror, Gaming, Spieleentwicklung, Unity 3D, Unity
Warum kann ich den Typ "InputManager" in Unity nicht nutzen ohne Error?

Hallo an alle,

ich bin sehr neu im Bereich Spieleentwicklung mit Unity und möchte ein simples Spiel programmieren, in dem man verschiedene Räume gestalten kann. also hab ich mir ein Tutorial herausgesucht ( https://www.youtube.com/watch?v=l0emsAHIBjU&list=PLcRSafycjWFepsLiAHxxi8D_5GGvu6arf ) in dem dies erklärt wird. Bei 3:47 benutzt er den Typ "InputManager" im zweiten SerializeField.

Wenn ich jedoch das Script so kopiere wie er es im Video schreibt, zeigt mir Unity einen Fehler bei "InputManager" an. Da er im Video sagt, dass er das alte Input System nutzt hab ich dieses auch eingestellt.

Da ich nicht wirklich viel Ahnung von dem habe was er da schreibt, hab ich im Internet nach einer Lösung gesucht, doch scheinbar nutzt niemand diesen Typ. Vielen Dank im Voraus für die Antwort

P.S.: Ich habe ein Bild von Visual Studio eingefügt in dem auch der Error zu sehen ist.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class PlacementSystem : MonoBehaviour
{
    [SerializeField]
    private GameObject mouseIndicator;
    [SerializeField]
    private InputManager inputManager;


    private void Update()
    {
        Vector3 mousePosition = inputManager.GetSelectedMapPosition();
        mouseIndicator.transform.position = mousePosition;
    }
}
Bild zum Beitrag
Software, C Sharp, Code, Error, Fehlerbehebung, Programmiersprache, Spieleentwicklung, Unity 3D, Visual Studio, Fehlermeldung, input, Unity
Was ist falsch mit diesem Script (Unity, C#)?

Hallo,

ich bin im Moment dabei, mir selbst Unity bei zu bringen. Wie man sieht habe ich aber Probleme.

Was ich machen möchte ist eigentlich recht simple - Ich möchte eine Intro-Sequenz am Anfang des Spiels haben, die 3 Texte nacheinander Visible macht und dann am Ende kann man dann drücken um das Spiel zu starten, sprich den Intro Frame unsichtbar zu machen. Ich habe aber nur Probleme mit dem "wait" Befehl, da dieser hier komischerweise sehr unnötog kompliziert gemacht wurde. Anstatt eines einfachen "wait()-Befehls" oder so muss man ja irgendwas mit diesen "IEnumeratorn" machen. Ich habe mir auch schon Tutorials angeschaut, komme hier aber nicht zu irgendeinem guten Ergebnis, sobald ich die wait Funktion nutze.

Kennt sich hier vielleicht irgendjemand aus? Wäre sehr cool wenn ihr mir helft.

Nur zu Info: Ich bin kein Profi, also bitte hatet mich nicht wenn es sehr offensichtlich ist oder so.

Hier mein Script:

using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.UI;

public class Script1 : MonoBehaviour
{
  public GameObject Intro;
  public GameObject StartText;
  public GameObject Text1;
  public GameObject Text2;
  public GameObject Text3;
  public bool IsEnabled = false;
   
  // Start is called before the first frame update
  void Start()
  {
    Text1.SetActive(false);
    Text2.SetActive(false);
    Text3.SetActive(false);
    StartText.SetActive(false);
    Initialise();
  }

  IEnumerator Initialise()
  {
    Text1.SetActive(true);
    yield return new WaitForSeconds(2f);
    Text2.SetActive(true);
    yield return new WaitForSeconds(2f);
    Text3.SetActive(true);
    yield return new WaitForSeconds(2f);
    StartText.SetActive(true);
    IsEnabled = true;
  }

  // Update is called once per frame
  void Update()
  {
    if (IsEnabled == true)
    {
       
      if (Input.GetKeyDown(KeyCode.Mouse0))
      {
        Intro.SetActive(false);
        IsEnabled = false;
      }
    }
  }
}

Hier nochmal als Bild aus Visual Studio falls es jemand braucht:

Bild zum Beitrag
C Sharp, Code, Programmiersprache, Spieleentwicklung, UI, Unity 3D, Unity
Könnt ihr mir bei meinem Skript helfen?

Hallo, ich habe die letzten Stunden ein Skript programmiert, aber es funktioniert nicht. Mir wird GetComponent<ShootingAi> falsch angezeigt. Die letzten Male hat es noch funktioniert, aber jetzt nicht mehr.

Hier ist das Skript. Der Fehler ist bei // RayCast:

using System.Collections;
using System.Collections.Generic;
using System.Xml.Serialization;
using UnityEngine;
using TMPro;

public class GunSystem : MonoBehaviour
{
  // Werte
  public int damage;
  public float timeBetweenShooting;
  public float spread;
  public float range;
  public float reloadTime;
  public float timeBetweenShots;
  public int magazineSize;
  public int bulletsPerTap;
  public bool allowButtonHold;
  private int bulletsLeft;
  private int bulletsShot;

  // Bool
  bool shooting;
  bool readyToShoot;
  bool reloading;

  // Referenz
  public Camera fpsCam;
  public Transform attackpoint;
  public RaycastHit rayHit;
  public LayerMask whatIsEnemy;

  // Grafik
  public GameObject muzzleFlash;
  public GameObject bulletHoleGraphic;
  public float camShakeMagnitude;
  public float camShakeDuration;
  public TextMeshProUGUI text;

  private void Awake()
  {
    bulletsLeft = magazineSize;
    readyToShoot = true;
  }

  private void Update()
  {
    MyInput();
    text.SetText(bulletsLeft + "/" + magazineSize);
  }

  private void MyInput()
  {
    if (allowButtonHold)
    {
      shooting = Input.GetKey(KeyCode.Mouse0);
    }
    else
    {
      shooting = Input.GetKeyDown(KeyCode.Mouse0);
    }

    if (Input.GetKeyDown(KeyCode.R) && bulletsLeft < magazineSize && !reloading)
    {
      Reload();
    }

    // Shoot
    if (readyToShoot && shooting && !reloading && bulletsLeft > 0)
    {
      bulletsShot = bulletsPerTap;
      Shoot();
    }
  }

  private void Shoot()
  {
    readyToShoot = false;
    // Spread
    float x = Random.Range(-spread, spread);
    float y = Random.Range(-spread, spread);

    // Calculate Direction with Spread
    Vector3 direction = fpsCam.transform.forward + new Vector3(x, y, 0);

    // RayCast
    if (Physics.Raycast(fpsCam.transform.position, direction,  out rayHit, range, whatIsEnemy))
    {
      Debug.Log(rayHit.collider.name);

      if (rayHit.collider.CompareTag("Enemy"))
      {
        rayHit.collider.GetComponent<ShootingAi>().TakeDamage(damage);
      }
    }

    // Graphics
    Instantiate(bulletHoleGraphic, rayHit.point, Quaternion.Euler(0, 180, 0));
    Instantiate(muzzleFlash,attackpoint.position, Quaternion.identity);

    bulletsLeft--;
    bulletsShot--;

    Invoke("ResetShot", timeBetweenShooting);

    if (bulletsShot > 0 && bulletsLeft > 0)
    {
      Invoke("Shoot", timeBetweenShots);
    }
  }

  private void ResetShot()
  {
    readyToShoot = true;
  }

  private void Reload()
  {
    reloading = true;
    Invoke("ReloadFinished", reloadTime);
  }

  private void ReloadFinished()
  {
    bulletsLeft = magazineSize;
    reloading = false;
  }
}

Ich komme echt nicht mehr weiter und bräuchte etwas Hilfe.

C Sharp, Visual Studio, Unity

Meistgelesene Beiträge zum Thema Unity