How to Split Up an Existing Unity Git Project into Smaller Unity Packages


Update 4/29/2020: indicated new dependencies added in Template Unity Package under Step 8 that should be left in the asmdef files.

After years of making a ton of Unity games, I’ve accumulated a lot of tools that are gathered into a single Template Unity Project that I start every game jam project in. That said, the project is now much larger than I would like. Some tools, such as the web host domain list, is only applicable for projects intended to be exported to the web. In addition, since everything is built on the same project solution, compiling new scripts takes longer than necessary. So I figured it was time to split up this mammoth project into smaller Unity packages. But how?

True to Unity’s theme of democratizing game development, they have extensive documentation on how to utilize the new Unity Package Manager to better import other tools and projects. Furthermore, mob-sakai has an excellent tutorial on how to setup a Git repository with the command, git subtree split, such that the Package Manager can easily import the project. But all these information are only great for creating a single Unity Package; what if, like me, you have a sprawling Unity project that you want to split up into multiple, smaller Unity Packages? After doing some research, I’ve came to the conclusion that the best method is to use Unity’s local package directory structure, and more importantly, git submodule add to nest another Git project to easily drag-and-drop project files into. This post will go into more details on how this works.

Continue reading “How to Split Up an Existing Unity Git Project into Smaller Unity Packages” 1 Comment on How to Split Up an Existing Unity Git Project into Smaller Unity Packages | Categories: Game Development, Tutorial

So, About Social Networking…


Since I’ve been active online recently, seeking for new job opportunities, I’ve been reading a lot of advice on how to find work. Most of them sort of revolves around instructions like “spread your network,” or “get referrals,” and I guess such an advice is useful…for someone who already has a strong social network and been to a couple of global shows. While I am now that person, I’ve been a college student before, and back then, I had nobody who worked in the industry I studied in. As I was a second-generation immigrant, neither my parents nor my extended family helped. They neither knew the language, nor had any idea of what the hiring culture in both my industry and the country I lived in were like. Being the oldest sibling in my family, I was supposed to be their best resource on this sort of thing, and I knew nothing. And I don’t drink; I greatly dislike visiting bars and conversing in loud locations. These vague advice wouldn’t have helped me in the slightest back then, and I suspect I’m not alone in this. So to those people who were in the same boat as I was, here’s what I’ve learned:

Terminologies

First, it’s probably a good idea to go through some terminologies. See, I’m a programmer, and networking in that practice means, “the practice of creating digital, remote connections between two or more programs.” And that most decidedly is not what this blog post is about. So I’ll be using the following terms:

  • Social Network, or network for short, is the web of people you know, and the people those acquaintances know, etc. For the rest of this blog post, I’ll just be using the word, “network.”
  • Networking is the practice of expanding your network by connecting with new contacts.
  • Connections is a positive social bond between two people.
  • Degree is the layer of connection within your network. For example, people you already know personally falls under the first-degree connection. The people those people know, but you don’t falls under the second-degree connection, etc.

All good? Great, let’s talk about the objective here.

The Goal

It’s easy to read through what recruiters and job advisors tell you and think to yourself that somehow, networking is this magical solution to finding jobs. Alternatively, from reading said advice, it’s easy to think that one merely needs to create as wide of a network as possible, potentially by collecting as many business cards as one can, or making as many LinkedIn friends as possible, etc. But if I’m to be frank, neither of these could be further from the truth. Networking is merely a simple mindset, and holds no magical powers. Making your network too large would create weak connections; business cards are just a small piece of paper, and LinkedIn connections is simply a row in a database table. Like any good intel, what matters is how you use this information.

I would argue the goal in this networking game is to create an effective network. This means creating connections that wants to help you out. So how do you create an uplifting and supportive web?

Become an Useful Contact

Perhaps the most useful way of learning how to create an effective network is to become an useful contact yourself:

  1. Demonstrate what value you bring to the other person. Honestly, this can be as simple as introducing yourself and what you do. For example: “Hi, my name is Taro Omiya, and I’m a Unity programmer with a strong background in C# and Java. And you?” The objective here is to inform the listener how you can help them, should they or their friends encounter a problem in the future.
  2. Keep your eyes peeled for anyone asking for help. For example, while I have little artistic talent, my indie game development work has put me in contact with a few freelance artists. If anyone asks me for graphic design assistance, I can help them by connecting them to these freelance artists.

By connecting those in need of help with people you know and recommend, you both demonstrated your usefulness and create a “social debt.” Now that the assisted person is thankful for your help, they will feel inclined to help you when you encounter a problem yourself. It’s a bit of social manipulation, I admit, but a positive one that lifts everyone.

Now that you’ve become an effective contact, creating a stronger network should be pretty obvious.

Building an Effective Network

Building an effective network involves knowing more people, and more importantly, helping each other out. When you join a digital network of professionals, keep in mind that everyone is on there to ask others for help. Pay close attention to the skillsets and specialties each of your contacts have. Verify with those you’re assisting that they’re trustworthy, and willing to provide what your contact rightly deserves (don’t let them work for free). If you’re already working, check if there are any job openings in your company, and see if you can find anyone in your network that’s willing to take it.

Otherwise, just be a useful and engaged person in these social platforms. Leave comments and share some tips: you might be surprised at how much you know, that others don’t. Make sure the people in these networks know you in a positive light. In theory, by becoming the point person for providing help and assistance, others will more likely follow your example, and help you get connected with useful contacts as well. Work on making your second-degree connections as useful as possible. That’s basically how I’ve been doing things, anyway.

Hopefully this how-to guide proves to be informative. Best of luck to all of you!

Leave a Comment on So, About Social Networking… | Categories: Random, Tutorial