Wild Engine : Release 0.01

http://www.shellshockedgaming.com/gfx/wild/wildengine075.png

The Wild Engine is an engine designed for ( being designed for ) a top down Simple RPG experience in garrysmod. The Engine itself will provide the following upon completion

-Extensive Rendering System, Supports maps filled with 1000s of props
-A Character based system ( characters have their own inventory, health etc etc)
-Inventory System ( Simple 9 slot Inventory )
-Equipment System ( One primary weapon, secondary, and one gear slot)
-A gear slot could vary from backpacks to body armor
-RPG Effect system ( slows, snares, blinds, etc etc)
-Experience and Levels per character
-Skills ( Mining, yaddi yaddi yada )
-Fate System
+ This is a system where players passively earn points, the points they earn can be spent to buy back equipment and items lost ( only if they haven’t been looted ) off of their corpse.
+ This also will allow players to purchase characters ( their stats, experience and w.e )
+ points are passively earned through time played, much like earning money in darkRP
-Day/Night system
-Simple Weather ( rain, snow, fog, or all of the above)

This engine will be publicly released, updated and eventually I will get around to setting up and svn for it.
I’ll be posting a gamemode in the near future showing the engine off, and showing the potential for what it can do.

I welcome donations, as working a part time job takes away from my cherished development time :stuck_out_tongue:
https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif

Here is the current version
Download Version 0.75

Older version(s)
http://www.shellshockedgaming.com/releases/wild050.zip
http://www.shellshockedgaming.com/releases/wild025.zip
http://www.shellshockedgaming.com/releases/wild001.zip

Here is the map
http://www.shellshockedgaming.com/releases/wild_flatground_003.zip
vmf
http://www.shellshockedgaming.com/releases/wild_flatground_vmf.zip

Here is a video of me using the engine for a game I’m making

[HR][/HR]
**CAUTION THE AUDIO MIGHT BE LOUD
**
[HR][/HR]
Two videos demonstrating both systems.

Inventory

Effects

Developer Notes:
Props are added to the server in a different way than normal, obviously because of the rendering system.



    local pos = Vector(0, -200, 24)
    local ammotype = table.Random({0, 1, 2, 3, 4, 5, 8}) -- this just sets a random ammo type on a crate


    local crate = classRenderEntry.new() -- this will make a new renderEntry. This is used to render stuff clientside
    crate.setClass("item_ammo_crate") -- dur
    crate.setPos(pos) -- dur
    crate.setAngles(Angle(0, 90, 0)) -- dur
        crate.setHealth(100) --dur
        crate.setStatic(false) -- this is the base scenario, by setting it to true, the entity will update where it is to the players when it unsolidifes, useful for physics props that move around
    crate.setSolidDistance(800) -- this is how far away from a player this object will turn solid ( otherwise it doesnt exist )
    crate.createHook = function() -- this hook lets you modify the entity before it spawns. 
        local ent = crate.getEnt() -- this gets the entity, on clientside its a clientsideProp
        ent:SetKeyValue("AmmoType", ammotype)
        return true -- this makes it so that the system will continue the base case of spawning
                -- the base case of spawning is a static prop, it doesnt move or change. 
                -- if you return false, then you need to run crate.getEnt():Spawn(). this lets you override the regular spawning
    end
    world.data.addEntry(crate) -- This adds the entity into the render System


Npcs are supported in the rendering system. They are done similar to the above except they have one extra clause



    local npc = classAIDirector.newNpc()
    npc.setPos(pos)
    npc.setAngles( ang or Angle( 0, 0, 0))
    npc.setClass("npc_citizen")


    local kv = {additionalequipment = {"weapon_shotgun", "weapon_smg1", "weapon_ar2",}, citizentype = "3",}
    npc.setKeyValues(kv) -- this is just convience thing, since npcs need alot of keyvalues
    npc.setHealth(30) 


    npc.postCreateHook = function(ent) -- this lets you touch teh NPC after they are spawned ( remember only exists for npcs ) 
        ent:AddRelationship("player D_HT 999") -- this makes citizens hostile
    end


    world.data.addEntry(npc)
    npc.createEnt() -- this is called after the entity is added to the world just so the player doesnt have to go near it to make it solid


Nice work, Noob. You never fail to impress me with your work.

Very nice work, Noob. Excellent framework. I can’t wait to start using this on my next project!

What about map sizes? Would it be possible to make like multiple servers and going to certain points on the map will make you join another server with the new map? For example you could do quests from npcs that might lead 4-5 maps down into the dungeonmap? How hard is it to make maps for this gamemode? I assume it’s easier than making regular maps due to the top-down. Would it be possible to make more complex maps with traps, lootrooms etc or would it hit the entity limit too fast?

Yeah, got a bit carried away with the questions but this is a very nice idea.

@ paradise, glad you like it, if you need any extensive help feel free to PM me.

This supports any map size ( As far as i know ) my system allows for props to be added at coordinates (10000000,1000000,0) or (0,0,0).

As far as interconnecting servers it would be as doable as in any gamemode, that just takes a lot of work. In a top down view its much easier because you don’t really have to render other portions of the map, just transport players back and forth between them. I’ve definitely considered a game of that magnitude

Making a map for the gamemode is as simple as adding a box with target names, Here i’ll upload the vmf for the testing map.

Be wary of buildings.

I recommend for buildings that you make the ceilings an entity of sorts, currently I have models for the building and they will come in a future release.

What about multi-floored buildings? And does the ground have to be super flat everywhere ?

No it doesn’t have to be flat, I just have other things in mind for my game, that is why it is.

As of now the render system increases view distance based on vertical distance from 0. This isn’t a perfect solution to elevation but it works for most cases.

Doing multiple floored buildings requires props right now. Its possible but the more floors the harder it is to see the ground floor. Eventually I will design this engine to really flourish when it comes to having multi-floored buildings and supporting stuff like that. Just stay tuned! :slight_smile:

The multi-floored thing can create some very interesting trapdungeons, you fall down into the water and have to fight your way back up.

Stupid request, can you make it so the map association is “wild_” and not “wild”? I have two maps with wild in the name and they are pulled in that category. I fixed it myself already, but I just decided to request it for everyone else :stuck_out_tongue:

Of course.

Little bit of an update,

I just finished a map loading sytem ( really brute and simple )
have a working RPG Effect system ( only have a slow currently )
have a working inventory / equipement system ( Only can have one weapon equipped right now. )

I’ll be releasing these changes in the coming 0.25 Update

Thanks man, just my OCD kicking in

Amazing.

Wow pretty cool

Nice one Noob.

Is this a joke?

Oh wait no I understand. At first I thought this was a joke, I only saw a different camera view for your player and thought that wasn’t an “engine” (You can’t create engines for GMod, only “Frameworks” the engine runs the game, and is written in C++. This is all Lua, all the time.) Then I realized the absurd amount of props and the building you started in, and realized you create a framework that randomly generates large environments that can handle 1000s of props, truly incredible stuff. Good job!

Nice job, hope this goes far.

troll is obvious

Woah this is fantastic!

Okay So I just released a new update. This includes

  • Minor bug fixes.
  • An Inventory/Equipment System ( as of now only one weapon can be equipped )
  • An Effect System ( along with two effects, slow and bleed )
    +Bleed can be applied to anything.
    +Slows only work on players
  • Added Generics ( Most HL2 npcs that can be spawned really easy THEY ARE HOOKED INTO THE RENDER SYSTEM )
  • Added Support for physics/Moving props.
    [HR][/HR]
    **CAUTION THE AUDIO MIGHT BE LOUD
    **

[HR][/HR]
Two videos demonstrating both systems.

Inventory

Effects

download here
http://www.shellshockedgaming.com/releases/wild025.zip

New Update :

http://www.shellshockedgaming.com/gfx/wild/wildengine050.png

-Introduces a main menu
-Introduces Text based saving and loading. ( Its all saved as one string so shouldn’t be hard to convert to SQL, but if you don’t to convert it yourself and update is coming for that )
-Introduces Character Creation
-Introduces the Fate Bank, a Cloud storage system in which you can move items from one character to another.
-Bug Fixes/Performance changes

Here are a few Images for you, if you want more they are here http://imgur.com/a/Mw5b3

release can be found here!
http://www.shellshockedgaming.com/releases/wild050.zip