I’m working with UE4 for several months. Vanilla blueprint library already contains hundreds useful functions, well-organized in categories.
But… every project still needs additional functions: math, logic, operations on material instance, flow control macros.
I’ve work several years in industry (LinkedIn), so I thought… why not to try build a community library of “snippets”?
Blueprint functions & macros, material functions and other reusable content that could be used in many different projects (if there’s to reuse Substance Designer project files, use it as a base for your own work - why not?).
For me this makes sense only if entire content would be moderated. Library with hundreds of random functions, every functions made by different person with different “coding style” and without organized categories… Well, it would be just one, big mess
My approach is:
Everybody is welcome to contribute, all stuff is stored in single location. Mega account, GitHub, Blueprintue (which could be really useful site one day) or whatever else. Not sure yet where to store this - what would most convenient for you?
Chosen content gonna be integrated like it would done by single team. Well-organized, easy to browse and understand. If dev sends some function operating on Integers, we should create similar functions for Floats, Vectors. All scripts in library would be reviewed/tweaked/redone to fit code formatting, categories and file structure.
Library should be universal - we don’t add huge custom systems (like RPG inventory which is always custom designed) or extremely specific content (i.e medieval Nazi zombie cow)
We could add some graphics/audio content for speeding up prototyping (like Shapes folder from Epic’s samples content), but nothing you could use as “final art”.
We shouldn’t try to gather as much scripts as possible - quality over “messed up, huge library”. We shouldn’t try to create big script systems for functionality that could be easily implemented in C++.
Everything should be update to the newest UE4.
Benefits:
minimize time spent on “reinventing the wheel” in our projects, speed up prototyping
provide nice placeholder content for level blockout (also by using procedural scripts)
I was also thinking on writing down best practices. Short articles/posts explaining philosophy behind system, showing way of good thinking, efficient implementation. It could wiki articles or tumblr blog. Whatever. What you think?
I am totally agree with you.
A sort of wiki/google for searching and indexing useful libraries/blueprints/assets/whatever will be awesome.
And I think it will be a good start for people who want to use Unreal Engine in Game Jam with a small experience (basic assets).
+1 pretty Nice idea. I also agree with The rules. Makes totally sense. But a good documentation is maybe The key for This.
Maybe i make something wrong, but its pretty hard sometimes to get into functions or shaders from someone else, cause everyone has is own workflow or sort-System. Maybe also add examples for some or all functions.
Wiki
Well, I’ve to admin initially I didn’t think about wiki documentation.
I’m always learning by doing, simply checking what functions do. This is major advantage of visual scripting.
Most of functions supposed to be really simple and self-explanatory. Documentation is fail-safe, if name, commentary and file structures fail to explain themselves
But you’re right. And simple docs with usage example doesn’t require lot of work if you already finished code/asset.
I’m familiar with wiki - especially MediaWiki, she’s everywhere
I allowed myself to create Blueprint functions sub-category.
Now… which approach suits you better?
A) 1 function = 1 wiki page. Could be easier to find some functions just be browsing category or googling, but sometimes you wouldn’t open maaaay tabs to find what you need.
B) 1 category of functions (like Math) = 1 wiki page. Easy to scroll through tens of functions and it would reflect file structure of function library (creating separate file for every function isn’t good workflow). But the list could be really long.
GitHub?
I’m testing GitHub for storing project. Yes, project It will contain function libraries, prototype assets - everything what’s gonna be described on wiki. You’ll able to download/sync single function library, procedural script or entire project (which is useful for rapid prototyping). I’m also planning to make it multi-mode project, so you can easily switch between First Person, Third Person, Isometric (and few other standard modes).
I put there minimal content. Used materials and textures from StarterContent, but I would remove part of this and add some generic/universal materials in future. https://github.com/GamedevGems/UnrealGems
It looks like the most valuable thing to do would be simple “posting” functions/macros Blueprintue (when browsing throu categories will be possible).
Wiki is fine, by posting screenshots of complex graphs is cumbersome, copy-pasting code is much easier at Blueprintue
There are few problems with packing functions to binary files:
difficult to browse if you just need 1 small function - you don’t want to download big library, searching wiki is much faster
difficult to merge (if I’d keep all functions from category in single file) or incredibly messy (if I’d create new file for every single function)
it would be messy to place mutations/examples of functions in library, but it’s very easy to do this at wiki
Also:
Epic introduces Content and Feature packs, there’s no need of providing multi-mode project anymore
it would be hard to manager “placeholder content” one my projects will mature, still I could post some procedural scripts in future