BlenderForge Academy

Master Blender Python automation and Unity 2D platformer development. Hands-on coaching that takes you from scripting basics to shipping pol...
Cebu City, PH
Created byProfile picturetruetramp
2 joined
Profile picture
@truetrampProfile pictureJun 5
Pinned post

Welcome to BlenderForge Academy — Start Here

Welcome to Blender Python × Unity 2D Mastery. Here's how to get the most out of your membership.


Your Learning Path


The course is structured in 6 modules that build on each other:


  1. Blender Python Fundamentals — Get comfortable with bpy, the scripting console, and writing reusable add-ons

  2. Automating Asset Creation & Export — Procedural meshes, automated materials, and batch export pipelines

  3. Unity 2D Setup & Tilemaps — Project configuration, Rule Tiles, parallax scrolling

  4. Player Controller & 2D Physics — Tight movement, wall mechanics, gravity tuning

  5. Advanced Platformer Mechanics — Moving platforms, hazards, checkpoints, animation juice

  6. Pipeline Integration & Shipping — Wire Blender → Unity into one command, profile, polish, and publish


Go through the lessons in order. Each one builds directly on the last, and every lesson includes working code you can copy into your own project.


What You Get


  • 📚 18 in-depth lessons with full code examples, architecture diagrams, and assignments

  • 💬 Members Chat — Ask questions, share progress, get feedback

  • 📦 Updates & Resources — New content, script templates, and workflow tips


Getting Started


  1. Head to the Course Library and start Module 1, Lesson 1

  2. Set up Blender 3.6+ and Unity 2022.3 LTS on your machine

  3. Introduce yourself in the Members Chat


Every lesson has an assignment. Do them. The students who ship games are the ones who write code, not just read it.


Let's build.

Profile picture
@truetrampProfile pictureJun 5

5 Blender Python Scripts That Save Me Hours Every Week

I automate Blender workflows for game dev. Here are 5 scripts I use constantly — all under 30 lines each. Copy them into Blender's scripting tab and run.


---


1. Batch Rename Objects by Type


Tired of Cube.001, Cube.002? This renames all selected objects with a clean prefix + index:


import bpy

prefix = "Platform"  # Change this
selected = bpy.context.selected_objects
selected.sort(key=lambda o: o.location.x)

for i, obj in enumerate(selected):
    obj.name = f"{prefix}_{i:03d}"

print(f"Renamed {len(selected)} objects")


Select your objects, change the prefix, run. Objects are sorted left-to-right by X position so the numbering makes spatial sense.


---


2. Auto-Apply All Modifiers on Selected Objects


Before exporting to Unity, you usually need to apply modifiers. Doing it one-by-one is painful:


import bpy

for obj in bpy.context.selected_objects:
    if obj.type != 'MESH':
        continue
    bpy.context.view_layer.objects.active = obj
    for mod in obj.modifiers:
        try:
            bpy.ops.object.modifier_apply(modifier=mod.name)
        except:
            print(f"Skipped {mod.name} on {obj.name}")

print("All modifiers applied")


This handles errors gracefully — if a modifier can't be applied (like an armature on a mesh with shape keys), it skips and tells you.


---


3. Export Each Selected Object as Individual FBX


Instead of exporting one big file, this exports each object separately — perfect for Unity prefabs:


import bpy
import os

output = "//exports/"  # Relative to .blend file
os.makedirs(bpy.path.abspath(output), exist_ok=True)

for obj in bpy.context.selected_objects:
    bpy.ops.object.select_all(action='DESELECT')
    obj.select_set(True)
    bpy.context.view_layer.objects.active = obj
    
    path = os.path.join(bpy.path.abspath(output), f"{obj.name}.fbx")
    bpy.ops.export_scene.fbx(
        filepath=path,
        use_selection=True,
        apply_scale_options='FBX_SCALE_ALL',
        axis_forward='-Z',
        axis_up='Y'
    )
    print(f"Exported: {obj.name}")


The axis settings (-Z forward, Y up) match Unity's coordinate system so your models import without rotation issues.


---


4. Generate a Grid of Duplicates


Need 50 platforms arranged in a grid for a level prototype? Don't place them by hand:


import bpy

source = bpy.context.active_object
cols, rows = 10, 5
spacing = 2.5  # Units between each copy

for row in range(rows):
    for col in range(cols):
        if row == 0 and col == 0:
            continue
        copy = source.copy()
        copy.data = source.data.copy()
        copy.location.x = col * spacing
        copy.location.y = row * spacing
        bpy.context.collection.objects.link(copy)

print(f"Created {cols * rows - 1} duplicates")


---


5. Quick Vertex Count Report


Before you export, check if anything is too heavy:


import bpy

report = []
for obj in bpy.context.selected_objects:
    if obj.type == 'MESH':
        verts = len(obj.data.vertices)
        tris = sum(len(p.vertices) - 2 for p in obj.data.polygons)
        flag = " ⚠️" if tris > 10000 else ""
        report.append((obj.name, verts, tris, flag))

report.sort(key=lambda x: -x[2])

print(f"{'Object':<25} {'Verts':>8} {'Tris':>8}")
print("-" * 45)
for name, verts, tris, flag in report:
    print(f"{name:<25} {verts:>8,} {tris:>8,}{flag}")

total_tris = sum(r[2] for r in report)
print(f"\nTotal: {total_tris:,} triangles across {len(report)} objects")


Objects over 10k tris get a ⚠️ flag. For 2D games with pre-rendered sprites, you usually want to stay under 5k per object.


---


These are snippets from my full automation toolkit. I teach the complete pipeline — from scripting Blender to shipping polished Unity 2D platformers — inside BlenderForge Academy.