A very common reason why film productions like mine fails is the lack of organization combined with a miscalculation of the huge scope making an animated film actually is.
To fight that ending of my film, I’m making sure that I’m running a tight ship from the very beginning and I’ve been very careful to keep everything well organized up to this point. But as I’ve went into pre-production, the amount of tasks and assets connected to the project are rapidly growing so I’m now at a stage where I need to come up with a system that can handle the added load without collapsing.
I’ve spent a few days researching digital asset management systems, collaboration systems, task managers and the likes. Everything has been evaluated from linking Excel files together to combining services like Basecamp, Teambox, Redmine with file sharing systems. And I’ve also considered dedicated services for film production like Shotgun. My ideal choice would be something that works now while having the potential to scale without a hefty price tag.
Using a main Excel document with links to sub-documents was the low-hanging fruit option to get something going right away. I created a simple system like that to evaluate, which actually turned out okay. It would work perfect for now. But the minute someone else joins me on this journey and by that we’ll need painless collaboration, the Excel option would crash and burn immediately! I definitely need to come up with a pipeline that scales properly, and that excludes Excel, so I don’t hit a wall and fall down hard somewhere along the production.
Leaving the low-hanging fruit behind, I went to the next level and signed up for a few popular collaboration sites. Teambox was the one I really liked, simple GUI and easy to work with. But at the end of the day, it’s not designed for film production. I started to come up with ideas of how I could shoehorn my needs into these systems, but soon I realized that shoehorning would be an on-going task if I went this route, and by that, I deleted these generic systems from my list of options.
The remaining option was to consider using a dedicated film collaboration and tracking system, Shotgun being my preferred choice. While awesome and living up to all my requirements and needs, it would kill my shoestring budget. As long as it’s just me and if I went with the lite option, it’s a mere $19/month. That’s fine. But I’m pretty sure I’m going to need API access down the road considering how I want my pipeline to work, and then we’re talking about $89/month instead for the studio option. And that cost is per user and month. So when I get more people on board, that sum would rise to a level that is not sustainable for this project. So because of that, Shotgun is not something I can consider.
Back to square one, what should I go with? I had a fourth scenario in my original research notes. I had written a reminder next to it in capital bold letters, “Johan, don’t go down this road this time, use your time for production, and find something that works out of the box!”. But here I am, having decided to go down that road anyway, despite what the ~6-month-ago Johan told me. And that is baking my own asset tracking and collaboration system.
Dancing on my own
So after doing my homework on existing systems and solutions I’m now face to face with creating my own. Crazy, or not, before pursuing my life as an artist, I spent many years working as a coder, so maybe not that crazy after all, and also me still getting some mileage out of those years.
Again, I had to spend another half day making some new research, to decide how to best develop a solution covering my current and future film production needs. Once again I wanted to see if I could find any low hanging fruit, to save time, so I built a prototype on the WordPress system. Using Custom Post Types and extending the WordPress core by writing a model for many-to-many database relationships, I very quickly got something up and running that worked almost as intended, concerning having a web front-end. But that is the catch. It’s very tempting to go with a framework simply because you get some results right away that works almost like you want. Short development time tastes good. But then you keep fighting to tune that framework into exactly how you want it to be and keep running into dead ends, so in the long run, building it on top of something might not always be the best option depending on present and future requirements.
I came to the conclusion that going with that solution wouldn’t scale well and that it would add tons of work at the time I need to grow and connect it with other entities in the pipeline. I don’t want to risk painting myself into a corner, so I threw this prototype away.
This is were I decided that I’ll write the system from scratch. It will take me a bit longer, it will not show any cool results in the beginning, but it will give me a very solid foundation to add features on as the film progresses. And I get a system that works exactly like how I want it to work.
So after about a days worth of coding, I had a new prototype up and running. Here is a preview video of a working example. You have to excuse my tired voice. I recorded the video around 3:00 this morning after a whole day of marathon coding the different systems, so I probably sound a bit apathetic, especially towards the end. Anyhow, here it is…
This is a very simple test, but it validates the concept and the workings of the underlying server engine and its API, and demonstrates a working connection. It’s just a quick early glimpse of my first iteration. So far have almost all my efforts gone into writing the software for the server and designing the API and the database.
For the test in the video I pretty quickly wired together a simple and rough LightWave front-end plugin as well as a simple web front-end. Both are hooked up to the server via my API. The collaboration server is off-site and located in a virtual private cloud at Amazon (where incidentally I also run a render farm, you see, something might get hooked up there as well. Wink wink notch notch.)
Anyway, as simple as the preview was on a front-end level, I’m still quite satisfied of how far I got with this iteration of the system.
The plan now is not to start adding shiny, sexy, new front-end features. Instead I’ll continue working on the server software and API. To make sure I have a rock solid foundation to scale with the film production. As long as I have a solid framework that’s extendable combined with a powerful all-access API to safely store all data within, features to interact with it can be added when needed as the film progresses.
I’ve followed the most common conventions when designing the API to make it as easy to use as I possibly can. When authenticated it gives access to everything. Even though I did my test implementation with LightWave 3D, any application that has a SDK or a decent scripting engine can communicate with the API. The API is completely application neutral. Subversion for version control of assets is of course something that is on the top of my list to allow to take advantage of the API. I’ve previously written a SVN integration for LightWave that I’ll probably bake right into this.
In time I hope to make a few more integration plugins if needed for some of the other applications I use. modo and After Effects come first to mind. But maybe also a panel for Photoshop. Time is really the only limit of which apps I’ll hook directly in to the system. Perhaps Adobe Bridge could be a candidate. I haven’t checked out what you can do with the Bridge SDK, but maybe it can be made into a desktop client for the system. Concerning Bridge I don’t have a clue of what I’m talking about, I’m just making some brainstorming without knowing the limitations or possibilities of that particular application.
This is of course distracting me from the actual film production for a few more days, but once it’s, it’s done. And I believe that I’ll quickly get those days paid back in the terms of a more efficient and flexible workflow. Having a solid management and collaboration system for the film pipeline will with a bit of luck turn out to be worth its bytes in gold!
That’s it for this update.
Over and out!
Really cool! Sounds like something that, finally, will be open and extremely user friendly. Looking forward to see where this is heading…
Thanks! Appreciated! :)
And yes, open is the word. I of course forgot to mention it while rambling, I’ve not planned to hamster this but share it with the community in some form when it’s stable enough to take a stab at. That is when the it has left the “it’s not a bug, it’s a feature” stage. :)