Xcode - Newbee Frage: Verwaltung gleich benannter Dateien in verschiedenen Ordnern (Xcode 16)

  • Xcode - Newbee Frage: Verwaltung gleich benannter Dateien in verschiedenen Ordnern (Xcode 16)

    Hallo zusammen,
    ich arbeite an einem texbasierten Adventure in Xcode 16! So weit so gut. Ich bin leider ziemlich unerfahren, kämpfe mich so durch und könnte dringend einen Tip gebrauchen.

    Ich möchte mehrere dutzend Quests (001.json bis 098.json) in Ordner (z.B. lvl01) hinterlegen.
    Die Quests sollen per Zufall abhängig vom Level des Charakters vergeben werden.
    Dabei haben manche Quest die gleichen Namen (001.json), sind aber in unterschiedlichen Ordnern (z.B. lvl01, lvl02, lvl03)

    Ich kommen mit den Ordnern (group, defined folder) in Xcode 16 nicht klar. Egal wie ich die Ordner konvertiere oder anlege. Sie werden in "Copy bundle resources" nie kompiliert, sondern immer nur die Files. Da das aber ewig viele werden und davon viele gleich heißen, gibts natürlich non stop Errors.

    Wie löse ich diese Situation? Gar nicht mit Ordnern arbeiten? Was wäre eine brauchbare Alternative dann?
    Oder wenn doch mit Ordnern, wie stelle ich sicher, dass die Ordner richtig kompiliert werden, damit ich später, wenn ich neue Quests einbinden muss sie mit-kompiliert werden und ich nicht alles einzeln hochladen muss?

    Ich verstehe die Systematik dahinter nicht. Habe den ganzen Tag mit Chat und Perplexity nach Lösungen gesucht.
    Es ist verdammt schwer bei alle dem zwischen der neuen Xcode 16er Ordner Methodik und der 15er zu unterscheiden.

    Ein wissender Tip wäre ungemein Hilfreich. 1000 Dank! :saint:
  • Silbercue schrieb:

    Ich kommen mit den Ordnern (group, defined folder) in Xcode 16 nicht klar. Egal wie ich die Ordner konvertiere oder anlege. Sie werden in "Copy bundle resources" nie kompiliert, sondern immer nur die Files. Da das aber ewig viele werden und davon viele gleich heißen, gibts natürlich non stop Errors.
    Erst einmal ein Disclaimer:

    Ich kann Deine Verwirrung bzgl. Groups und Folders in Xcode 16 gut nachvollziehen: Ich finde die Änderung im Handling vollkommen unsinnig und halte sie sogar für einen Bug. Oder ich habe den Sinn nicht verstanden, entsprechende Changelogs ignoriert und das Problem sitzt vor'm Computer. Auch nicht ausgeschlossen und ich würde mich über entsprechende Hinweise freuen. Kurze Erläuterung: Groups sind nach meinem Verständnis eigentlich nur eine logische Zusammenfassung im Xcode-Projekt, die sich nicht im Filesystem widerspiegelt. So kann man diese schön zum Gliedern und mit Namen versehen, ohne dass es sich im Build oder in den Ordnerstrukturen auswirkt - so war es m. E. bis Xcode 15 und wurde verschlimmbessert. Ich sehe im Moment keinen Unterschied zwischen Groups und Folders (ausser dem Symbol im Xcode-Navigator, siehe auch Screenshot):

    screenshot.png

    Sorry für den Exkurs, zu Deinem Problem:

    JSON-Dateien werden ja eigentlich nicht kompiliert, sondern sollen nur in bestimmte Verzeichnisse des zu erstellenden Application-Bundles kopiert werden. Insofern könntest Du sie über eine "Copy Files"-Phase (statt "Copy Bundle Resources") kopieren: Einfach per Plus-Icon über den Phasen eine neue hinzufügen - dann kannst Du auch entsprechende Zielpfade auswählen bzw. vorgeben. So würde ich grundsätzlich bei Dateien vorgehen, die nicht streng genommen Resourcen sind (beispielsweise einer Lokalisierung unterliegen), aber das ist wahrscheinlich eher eigener Stil / Kosmetik...

    Mattes

    Edit: Das o. g. Vorgehen erfordert aber einen Eintrag je Datei in der "Copy Files"-Phase ... Fleissarbeit ;)
    Diese Seite bleibt aus technischen Gründen unbedruckt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von MyMattes () aus folgendem Grund: Ergänzung bzgl. Copy-Files

  • Hallo Mattes, erst einmal herzlichen Dank, dass du dir Zeit genommen hast, mir zu helfen. Sehr gute Hinweise!

    Ich hatte die Vermutung, dass sich mir vielleicht später der Unterschied zwischen indizierte Ordner und Groups erschließt. Auf den ersten Blick hatte ich, speziell in meinem Usecase, keinen Unterschied erkennen können. Und dein Hinweis, dass sie ja nicht kompiliert werden, war für mich das Aha Erlebnis, das ist gebraucht habe. Klar, solche Daten müssen nicht in die Operable Programm Ebene kompiliert werden, das habe ich in meinem vergeblichen Versuch, endlich eine funktionierende Dateistruktur einzurichten und dem daraus resultierenden Wahnsinn, Ordner und Gruppen zu verstehen, total übersehen.

    1000 Dank ;)

    Ich frage mich, ob im Update von 15 auf 16 - im Willen übergreifend Probleme die auf Versionsunterschiede basieren zu eliminieren - nicht vielleicht eine andere Methode etabliert wurde, um mein Usecase zu lösen. Ich bin da einmal über die Möglichkeit Daten zu Taggen gestoßen und habe es verworfen. Mein Problem ist, dass es eben sehr viele Dateien sein werden. Es werden weit über 50 Quests pro Level sein. Mein einem Game mit wahrscheinlich 20 Levels ist das manuelle hinzufügen echt ein Problem. Ich kann mir nicht vorstellen, dass das so gedacht ist. Macht doch auch keinen Sinn. Games können ja sehr umfangreich sein. Hast du vielleicht eine Idee, wie das noch gemacht werden könnte?
  • Silbercue schrieb:

    Hast du vielleicht eine Idee, wie das noch gemacht werden könnte?
    Ich würde mir ehrlich gesagt überlegen, die JSONs auf einen (Web-) Server zu legen und dynamisch zu laden - ggf. auch cachen: Dann lassen sich auch Fixes leichter verteilen.

    Ansonsten habe ich mich mit Xcode-16-Spezifika nicht sonderlich beschäftigt: Die Baustellen sind schon so genug!

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • MyMattes schrieb:

    Erst einmal ein Disclaimer:
    Ich kann Deine Verwirrung bzgl. Groups und Folders in Xcode 16 gut nachvollziehen: Ich finde die Änderung im Handling vollkommen unsinnig und halte sie sogar für einen Bug. Oder ich habe den Sinn nicht verstanden, entsprechende Changelogs ignoriert und das Problem sitzt vor'm Computer. Auch nicht ausgeschlossen und ich würde mich über entsprechende Hinweise freuen.

    MyMattes schrieb:

    Ich sehe im Moment keinen Unterschied zwischen Groups und Folders (ausser dem Symbol im Xcode-Navigator, siehe auch Screenshot):
    Der Unterschied liegt in der Projektdatei. Die Projekthierarchie wird bei Folders nicht mehr in der Projektdatei „verwaltet“. Verschiebst du zum Beispiel Dateien im Finder, musst du diese Verschiebung nicht mehr im Projekt „nachziehen“. Oder erstellst du eine neue Datei im Finder, musst du die nicht mehr manuell dem Projekt hinzufügen. Das erspart manchem auch diverse Merge-Konflikte in der Projektdatei.

    Ich meine aber auch, es gab oder gibt irgendwo einen Einstellung, dass Groups nicht zwangsläufig auch ein Ordner im Finder sein müssen. D.h. die Groups-Struktur muss nicht unbedingt der Struktur im Finder entsprechen. Ich bin mir nicht sicher, ob das noch geht, früher war das aber mal, meine ich, das Standard-Verhalten.
  • Habe probiert einen Ordner als Resource hinzuzufügen, aber im Prinzip funktioniert das einfach.

    Habe eine Ordner erstellt und ein JSON File. In "Copy Bundle Resources" habe ich das File rausgeschmissen und den Ordner angegeben und das liegt halt dann in meiner App


    @Silbercue

    Soll das eine GUI-Anwendung oder nur für die Konsole sein? - Bei einer Konsolenanwendung gibt es keine, ich nenne es mal, App-Struktur mit Resources Ordner.


    Wenn Du die JSON-Dateien verarbeiten möchtest, dann kannst Du dir eine neue Build-Phase erstellen und z.B. alles in einer Datei reinpacken oder daraus eine Swift-Datei erstellen mit den ganzen Zeug drinnen oder verschlüsseln oder ...


    Du kannst Dir die JSON Files auch in ein (Xcode) Asset ablegen.


    Silbercue schrieb:

    Mein Problem ist, dass es eben sehr viele Dateien sein werden.
    Spiele laden z.B. Content beim ersten Starten nach oder bringen diese einfach mit.

    50 Quests und 20 Levels: Eine Quest 1k groß, dann bist du bei 1000 * 1k, also 1MB. Wenn es auch das 10-fache ist, alles kein Ding wo Du dir Gedanken darüber machen musst.


    Vorteil von nachladen ist, dass Du deine Fragen aktuell halten kannst ohne den Code zu ändern (wenn der Code darauf vorbereitet ist).
  • Michael schrieb:

    Ich meine aber auch, es gab oder gibt irgendwo einen Einstellung, dass Groups nicht zwangsläufig auch ein Ordner im Finder sein müssen. D.h. die Groups-Struktur muss nicht unbedingt der Struktur im Finder entsprechen. Ich bin mir nicht sicher, ob das noch geht, früher war das aber mal, meine ich, das Standard-Verhalten.
    Das ist genau der Punkt: Die Problematik der Speicherung von Groups in der Projektdatei - gerade bei größeren Teams - sehe ich ein. Allerdings kann man dann ja Folders nehmen ... seit Xcode 16 sehe ich aber im Filesystem keinen Unterschied mehr zwischen Folders und Groups (auch wenn die Icons anders sind), da hilft auch kein Umwandeln per Kontext-Menü im Navigator. Und damit sind die Vorteile der Groups bzgl. Organisieren, Umbenennen etc. dahin.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.