Hello everyone! This is a very basic RPG that I’ve thrown together over the past week. Prior to this and a few small prototype files to remember what I was doing, I have not touched blender in over 3 years so go easy
As I try to show in the video, the basic FRAMEWORK to create a much larger scale game is there, it is very easy to add new weapons and enemies because all they need is the “rayobj” property with their name to technically work (including the prefab to pickup a weapon, it’s just the mesh with “rayobj -> itemname”.
I had really forgotten how enjoyable Python is to use, I am having a blast working on this.
So, here’s a quick rundown:
Menu system - Any mesh with property[rayobj] -> menu and atleast 1 property with “msg” in its name will trigger a menu when you press E and are within range. VERY basic, I had just thrown that together moments before the video was recorded, still needs input options but that’s a project for tomorrow. The menu code is shown the entire video if anyone is interested.
Animation object knows which weapon is equipped. As shown in the end of the video, they are not just “invisible children” to the player.
Item stats - range, damage, attack delay. Animation adjusts accordingly with delay.
Item pickup/swap - self explanatory. The tricky part was making the stats (attack speed, damage etc) persist through to the next level. Super easy to add new items to the world, just add a mesh with a property with the equipment name and it works, so long as the equipment in question actually exists in prefabs.
Armor system (not shown, still in progress, but it works in a basic form … thats what the random cube floating above scene1 is for)
Simple AI - No NEAR or RADAR sensors, it’s all handled by code and properties. Idle, alert (player is near), walk, and attack states/animations. I’ve mass-tested with 50 AI and there was no FPS decrease.
Spawn system - empty with simple spawn script to add enemies, change the property text to spawn a different object. Player is added in a similar way but there’s a quick check if stats exist already etc.
Multi-material objects - easy, seperated RGB channels with nodes and applied materials accordingly. This means multiple normal/specular maps per object work fine, just paint vertex R G B.
Persistent stats/player/etc - Everything relevant to the player persists no matter where you go in the world
Easily add new levels - I show this at the end. Technically all a level needs to work is the scriptInitializer object and a respawn point.
I probably missed some stuff, there’s so much small stuff I’ve been working on I tend to forget what’s already done
Everything in the game is script handled, otherwise I’d have more gameplay to show off… polishing scripts takes time
My end goal is a Morrowind inspired game.
Here’s the video
Textures are from Poliigon and models are created by myself and my cousin.
I really wanted to add “entry points” to the levels before I recorded (if you go back to an old level you’d spawn near the correct door) but I got lazy. It could’ve been done in the time I typed all this, just a quick variable check in the init script