I’m looking for a bit of guidance on starting out in tools development, both overall and additionally in how procedural content generation can play a role. I’m interested by the breadth of this topic. The idea of empowering artists to do their best work is really exciting to me. I’m a student studying architecture, but I’ve done a little bit of tinkering with game engines and software development on the side. That being said, I’m certainly still a beginner with grasping programming languages.
It seems like many of the GDC talks and other online resources related to tools development and proceduralism are really high-level and advanced, which is understandable with the complexity of the topic and the fact that (form my understanding) a lot of this work isn’t done by entry or junior-level individuals.
I’m willing to do the work, and I totally understand that there’s a fair bit of bootstrapping and piecing together your own trajectory in something like tech art. I’ve gathered that a good place to start is to find a weakness or redundancy in the pipeline and create something to optimize it— but as a beginner, it’s a bit difficult to find those weak points without more extensive knowledge of the pipeline itself. Anyway, if anyone has any guidance on good starting projects, software, programming languages, best practices, or other resources for beginners, it’d be greatly appreciated!
Proceduralism is a very broad term.
Python, Houdini or Substance Designer can be used to make some procedural stuff in very different ways for instance.
I’m pretty sure that any Tech Art position whose description includes “procedural” directly means Houdini expertise.
As for general Tool stuff:
I just wrapped up work on a Maya UI wrapper for a tool created by our Houdini guy. It involved :
General Python
Maya Python
PyQt /Pyside 2
Qt Designer
wrapping mel commands from the Houdini plugin in python
Json data write/read
For the tool side, each DCC app will have its own UI paradigm. But with many tools adapting Python, then implanting UIs in PyQt /Pyside is something that can apply across multiple DCCs.
Read up on Model View Controller pattern for a general approach to UI coding. Briefly, you split your code into 3 parts, with specific roles:
Model: a code object that holds the Data and fns to manipulate the data
View: a code object or resource file that holds the UI elements
Controller: a code object that connects the UI to the Model
how this looks practically speaking , in my recent work :
Model is a python module (a .py file) with all the functions and data classes I need to manipulate Maya
View is literally a .ui file save form Qt Designer
Controller is a separate Python module with a UI class that reads the .ui file and fires off the Model functions in response
The Model is usually the first thing to code, it must be able to perform all the tools ‘output’ requirements with discreet , testable function and method calls. Then I lay out the View in Qt Designer, and connect it with the Controller class. When changes need to be made it starts with the Model
But the MVC pattern need not match this exactly. I can be implemented in a single code file for simple stuff, doesn’t have to be QT . etc. I do always sperate the work & data code from the UI code.
There are many threads at TAO goin back years with useful discussion on UI. Search around.
Your first tools do not need to start large. And there are multiple ways to make them with minimal coding, but learning Python would go a long way.
Think about what artist might want to do and what would help them achieve that. This would require you to probably know a DCC application or an Engine at least on some level since all of them have their quirks and it would be easier for you to come up with ideas for improving artist workflow. You can also reach out to any artist you know and ask if they have ideas.
You said that you study architecture, so you could maybe do a script that would select small geometry, e.g. bolts, and ask if you want to remove them before exporting to an engine for optimization.
You can make a small helper tool that does a renaming of several objects at once
Or a tool that quickly spawns selected object when artist clicks on a grid.
You can implement a procedural tool where artist draws a curve and a fence is spawned. All of the projects could be done with Blueprints, which is a more visual way to code.
For procedural tools, try creating something in Houdini or another procedural tool of your choice. For example, here is my small project for creating a column.
You could make a tool that improves your workflow in Houdini, for example maybe on the right click on the HDA node you could open its definition location in explorer.
There are a lot of tools you can make, and you don’t need to learn everything at once - personally I found Maya to be the easiest to start with since you can first do actions manually and read what functions it used in the log, and then automate that. Good luck on your TA journey!