Jump to content

Photo

What's the best way to do parallel quest development


  • Please log in to reply
15 replies to this topic

#1 Mitchfork

Mitchfork

    no fun. not ever.

  • Members
  • Real Name:Mitch
  • Location:Alabama

Posted 25 November 2020 - 11:44 AM

If you're collaborating on a quest between two or more people, where multiple people are working on different maps - what's the most painless way to merge everybody's contributions?



#2 Jamian

Jamian

    ZC enthusiast

  • Members

Posted 25 November 2020 - 12:28 PM

If it's possible for you, the most painless way is to work on the same quest file, one person at a time.


  • Twilight Knight likes this

#3 Matthew

Matthew

  • Administrators
  • Real Name:See above.
  • Pronouns:He / Him
  • Location:Ohio

Posted 25 November 2020 - 04:01 PM

The people I've collabed with and I would take turns, one at a time. We had a Discord channel dedicated exclusively to the .qst file and would upload it after we had our turns. Someone would claim the file with an emoji reaction, and the process would repeat.

 

Alternately, you can all work in one quest file and export/import your maps. This way, work can be done concurrently.


  • Twilight Knight and Shane like this

#4 Shane

Shane

    💙

  • Moderators
  • Pronouns:He / Him
  • Location:South Australia

Posted 25 November 2020 - 04:14 PM

Alternately, you can all work in one quest file and export/import your maps. This way, work can be done concurrently.

Speaking from experience: As nice as this sounds, be aware it does come with some catches as messing with combos and such will turn your map into chaos when importing them. So organizing all the combos before this approach might be a smart move.


  • Matthew likes this

#5 Russ

Russ

    Caelan, the Encouraging

  • Administrators
  • Location:Washington

Posted 25 November 2020 - 04:16 PM

Newer ZC versions (2.55 alphas or 2.53.1 betas) let you rip in combos between certain values. So as long as you agree to set aside certain combo pages, tile pages, and script slots, you can pretty easily recombine two quest files by exporting and importing the maps, tile pages, and combo pages, then recompiling and assigning script slots. Just gotta plan in advance so you don't both use the same combos or something.


  • Shane and Matthew like this

#6 Mani Kanina

Mani Kanina

    Rabbits!

  • Members

Posted 25 November 2020 - 04:34 PM

Assuming one person don't need to make new combos, you can export and import maps. You need to plan ahead when doing that though.


Edited by Mani Kanina, 25 November 2020 - 04:34 PM.


#7 Timelord

Timelord

    The Timelord

  • Banned
  • Location:Prydon Academy

Posted 26 November 2020 - 07:29 AM

If you're collaborating on a quest between two or more people, where multiple people are working on different maps - what's the most painless way to merge everybody's contributions?

 

Have a look at the updated export and import options.

 

It is best if the contribs are working on dedicated maps, but importing a map has various merging options. It is best to handle individual assets as components, when collaborating, rather than a whole quest. Also, if you save as .qsu, you can compare full quest file changes in a hex editor or other binary file comparison tool.


Assuming one person don't need to make new combos, you can export and import maps. You need to plan ahead when doing that though.

 

Combos and tiles now have advanced export and import formats, some of which support smart merge (import, but only over blank; never overwrite).

 

Final versions will likely also have export/import Screen.


  • Mitchfork, Shane and Emily like this

#8 Avaro

Avaro

    o_o

  • Members
  • Real Name:Robin
  • Location:Germany

Posted 27 November 2020 - 06:38 PM

One person claiming the quest file at a time is definetly the most painless method in my experience.


  • Shane likes this

#9 Timelord

Timelord

    The Timelord

  • Banned
  • Location:Prydon Academy

Posted 30 November 2020 - 07:44 AM

I should also mention: Use git for co-op development. Careful branch management and git repo access conditions allow a far more fluid production. 



#10 Emily

Emily

    Scripter / Dev

  • ZC Developers

Posted 30 November 2020 - 09:31 AM

^ If any scripting is involved at all, git control is a MUST. It allows multiple people to make changes in the same files at the same time and merge the changes together, and serves as a backup system as you can load any commit as a backup.


  • Twilight Knight likes this

#11 Mitchfork

Mitchfork

    no fun. not ever.

  • Members
  • Real Name:Mitch
  • Location:Alabama

Posted 30 November 2020 - 11:47 AM

Have a look at the updated export and import options.
 
It is best if the contribs are working on dedicated maps, but importing a map has various merging options. It is best to handle individual assets as components, when collaborating, rather than a whole quest. Also, if you save as .qsu, you can compare full quest file changes in a hex editor or other binary file comparison tool.

 
Combos and tiles now have advanced export and import formats, some of which support smart merge (import, but only over blank; never overwrite).
 
Final versions will likely also have export/import Screen.

The combo and map importing is very nice for what we're doing. It is sometimes a pain if I have made heavy modifications to one screen that I don't want to overwrite, but I want to let the import overwrite all of the other screens on the current map. It also forces you to overwrite auto-layer screens because ZQ automatically populates every screen... but for both of these I honestly don't even know if there's a better way to do it until a dedicated import/export screen tool is added. Just more experience-based evidence that you should stick to different maps if possible.

 

Combo importing is excellent with the no overwrite feature.  Is there a similar option for Tiles?  If I export a full Tileset, I don't have the option to not overwrite - and exporting Tile Packs means I need to figure out exactly what range of tiles is safe to import, which is a lot more manual work.

 

Fortunately for this project only one person is handling scripting, so that's easy at least.



#12 Emily

Emily

    Scripter / Dev

  • ZC Developers

Posted 30 November 2020 - 11:54 AM

^ Even if only one person uses scripting, I still recommend git. I use it for all my solo projects. Simply being able to manage your changes with numerous backups (without taking up a lot of space) is extremely helpful.



#13 Mitchfork

Mitchfork

    no fun. not ever.

  • Members
  • Real Name:Mitch
  • Location:Alabama

Posted 30 November 2020 - 12:23 PM

I may look into it.  I've never used git but I've used other version control software like SVN before.



#14 Matthew

Matthew

  • Administrators
  • Real Name:See above.
  • Pronouns:He / Him
  • Location:Ohio

Posted 30 November 2020 - 03:50 PM

Git is basically an industry standard for programming... one course at my uni spends a whole unit on using git properly.  :slycool:


  • Emily likes this

#15 Timelord

Timelord

    The Timelord

  • Banned
  • Location:Prydon Academy

Posted 01 December 2020 - 06:24 PM

The combo and map importing is very nice for what we're doing. It is sometimes a pain if I have made heavy modifications to one screen that I don't want to overwrite, but I want to let the import overwrite all of the other screens on the current map. It also forces you to overwrite auto-layer screens because ZQ automatically populates every screen... but for both of these I honestly don't even know if there's a better way to do it until a dedicated import/export screen tool is added. Just more experience-based evidence that you should stick to different maps if possible.

 

Combo importing is excellent with the no overwrite feature.  Is there a similar option for Tiles?  If I export a full Tileset, I don't have the option to not overwrite - and exporting Tile Packs means I need to figure out exactly what range of tiles is safe to import, which is a lot more manual work.

 

Fortunately for this project only one person is handling scripting, so that's easy at least.

 

 

'No overwrite' for tile import is a planned feature. 

 

Git is similar to SVN, but IMO, better. It does have a learning curve, but the basic requirements boil down to a simple command set.

 

// Launch GIT BASH. 

 
//! If not installed, INSTALL GIT BASH
 
 
//clone repo
// first, cd to the path that you want to use, starting with volume, then path
// e.g.
cd e:
cd zc/hf
 
//then a repo to the path, e.g.:
 
 
// This will clone into a HyruleFantasy dir
 
// then cd into the dir and add a remote
 
cd HyruleFantasy
 
// Add a remote. This is an identifier for the repo.
// SYNTAX:
// git remote add [remote id] [target]
// e.g.
 
 
// The remote is part of the .git data in this path, and only in this path.
 
// Checkout the current working branch:
 
git checkout scriptoptimise-nov-2020
 
// Now, add a **new branch**, to stage changes:
// SYNTAX:
// git checkout -b [branchname]
// e.g.
 
git checkout -b Nov2020-Fixes
 
//! Copy your modified scripts and files over the existing files.
 
// Invoke git gui to commit changes:
 
git gui
 
// Commit all changed files and new files.
 
//! Use Control+I to stage changed files, 
//! then select new files in the left pane, and use Control+T to stage them.
 
// Enter a commit message that describes the fixes/changes/additions.
// Click Commit
// Close the GUI
 
// Push the new branch
// SYNTAX:
// git push [remote id] [branchname]
// e.g.
 
git push HF Nov2020-Fixes
 
// If doing this for the first time, you will need to log in.
// Once you successfully log in and make a commit, pass this
// instruction to remember your AUTH for this repo:
 
git config credential.helper store
 
 
// To pull (update) a repo branch, invoke git pull.
// SYNTAX:
// git pull [remote] [branch]
// e.g.
git pull HF Nov2020-Fixes
 
//! Other useful commands
 
Find a commit by searching for a keyword in its commit message:
git log --all --grep='KEYWORD'
Note: Use single-qutes around the keyword:
git log --all --grep='GetPixel'
 
 
Fetch a specific branch of one remote to a different local:
git fetch [REMOTE] [remote_branch]:[local_branch]
e.g.

 git fetch HF Nov2020-Fixes:Nov2020-Fixes2


  • Mitchfork and Bagu like this


1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users