Windows Warp3D - Game Engine, Level Editor & Model Editor

Joe Ellis

Member
Yeah I've been designing it on paper for the last year or so, and I'm just starting to make stuff for it now,
Its called "Lavaman" and it's gonna be a first person adventure platformer, in low poly ps1 style graphics, I'm gonna make a thread for it once I've got more pics and stuff done. I'm really excited about making it cus I've been wanting to do it for so long
 

Joe Ellis

Member

I've been working on the particle system, which will work with "emitter" objects.
It only uses 1 vertex buffer per emitter, so its the same as rendering a single model.

Each emitter has properties:

Type - (the type of vbuffer) pointlist, linelist, sprites, or meshes
(each mesh type will use a simple "builder" script, for instance a long triangular pyramid respresenting the rain drops.
So this means you can create your own mesh types)

Size of area it covers (random placement) (x1, y1, z1, x2, y2, z2) (or spherical placement (radius))

Direction (in which the particles travel) (can have randomization, for things like smoke)

Speed

Length (if using lines)

Max distance (Distance fading)


Also the shaders used can have randomization, to make the loop different every time,
(and building\rebuilding the vbuffer is fast enough to do without any lag (tested with 2048 particles))
I'm hoping to implement some types of non-linear travelling along the route from start to end, like waves and spirals (which would be good for magic)

I'm also gonna make a collision option, so that rain lands on rooves and wont end up indoors.

I will also release a "stand-alone" version of this, that doesnt require Warp3D and you can add into your own projects without Warp3D.

-The video quality on youtube doesn't really do it justice, here's a link of the higher quality video:
https://drive.google.com/open?id=1VQRxQG8UgZM94BQHa0IHhLO0bqsbjHuY
 
Last edited:

Joe Ellis

Member

I've tried to make a cartoony water wave effect, using normalmaps to offset the texture coords,
I'm quite happy with this result, and its a cheaper alternative to water with refraction and reflections, cus they need multiple surfaces,
but for liquids that arent transparent or reflective I think this gives a nice effect
 

Joe Ellis

Member
I was gonna wait until I had a better animation example, but that could be some time due to my lack of animation experience,
so heres a clip of the animation editor, showing some of the features like copying & pasting frames and reordering them:


The animation itself obviously looks terrible, cus I've never done any skeletal animation before,
but I'm hoping to get better the more I use it.


Rigging & animation with actual models coming soon!

Anim Editor 16.png
 

Rayek

Member
While I am quite impressed by the project and your developing skills, I have to ask: why choose this over a fully integrated 3d workflow like the ones in Unity, Godot, or Unreal? Aside from staying in Gamemaker, wouldn't the render quality and overall workflow be much more sophisticated and convenient in a game engine that is built up from the ground with 3d games in mind? With lots of documentation and community support?

Not trying to spoil things, of course, and I have the deepest respect for your coding prowess. You seem to have a lot of fun working on this project as well, and that is more important than anything else. I just can't quite fathom the benefits yet over any of the established 3d game engines.

Unless it is a matter of wanting to stick with GM no matter what, of course.
 

Joe Ellis

Member
While I am quite impressed by the project and your developing skills, I have to ask: why choose this over a fully integrated 3d workflow like the ones in Unity, Godot, or Unreal? Aside from staying in Gamemaker, wouldn't the render quality and overall workflow be much more sophisticated and convenient in a game engine that is built up from the ground with 3d games in mind? With lots of documentation and community support?

Not trying to spoil things, of course, and I have the deepest respect for your coding prowess. You seem to have a lot of fun working on this project as well, and that is more important than anything else. I just can't quite fathom the benefits yet over any of the established 3d game engines.

Unless it is a matter of wanting to stick with GM no matter what, of course.
I think its a combination of these reasons:

1. I can't find a 3d game engine or modelling program that I like using and need one to make my games.

2. I really like coding with gml and want to still use it to make my 3d games.

3. I want a better version of the room editor that lets you edit each instance's variables and create things like triggers & sequences which perform specific events without code
 
When it comes to creating a certain room, is this engine helpful for simply creating a room out of a random PNG image, making certain borders and walls to where it seems manageable and also will it help with camera movement and make camera viewings at least pixel-by-pixel kind of like Undertale how movement is by pixel by pixel in-game and not some kind of smooth, 60fps camera view like many of the undertale fangames?
 

Joe Ellis

Member
When it comes to creating a certain room, is this engine helpful for simply creating a room out of a random PNG image, making certain borders and walls to where it seems manageable and also will it help with camera movement and make camera viewings at least pixel-by-pixel kind of like Undertale how movement is by pixel by pixel in-game and not some kind of smooth, 60fps camera view like many of the undertale fangames?
No but I'll make a process that does this at some point. I am planning on making a few easy tools like:

make a voxel model out of an image
tomb raider \ minecraft style modelling tool
Build\Doom style sector editor
Terrain from a heightmap

The thing about the camera, that can be done quite easily, either by rounding the camera's coordinates so its never in-between pixels, or make the app surface low res and stretched to fit the screen.
 

JaimitoEs

Member
I think its a combination of these reasons:

1. I can't find a 3d game engine or modelling program that I like using and need one to make my games.

2. I really like coding with gml and want to still use it to make my 3d games.

3. I want a better version of the room editor that lets you edit each instance's variables and create things like triggers & sequences which perform specific events without code
Your engine looks extremely powerful, i really like your window interface.. you give a good answer to Rayek, working with a 3d enviroment in gml it´s a dream for people...Basically is a mix of easy coding and exportation combined with a good 3d level editor.
Keep working on this wonder, it looks very solid and professional, I´m in love with the tool to create terrains and walls... Great Job!
 
Yeah. I bet you can simply do that type of thing in GMS 2 by itself.

But if not, do you know any kind of engine that actually does that type of thing?
 

Joe Ellis

Member

Been testing rolling ball physics and spot shadows, I'll be testing this rolling ball in a spyro level soon
with a collision hull on the level and precise spherical collisions for the ball :D


Yeah. I bet you can simply do that type of thing in GMS 2 by itself.

But if not, do you know any kind of engine that actually does that type of thing?
Sorry for the late reply,
I'm not sure, but I'd have a look on the marketplace, there's probably something that does this.
Is the png to level thing your on about 2d or 3d? I could maybe make a few scripts for you that does it in 2d


Your engine looks extremely powerful, i really like your window interface.. you give a good answer to Rayek, working with a 3d enviroment in gml it´s a dream for people...Basically is a mix of easy coding and exportation combined with a good 3d level editor.
Keep working on this wonder, it looks very solid and professional, I´m in love with the tool to create terrains and walls... Great Job!
Thanks! I really appreciate it, its nice for someone doing a similar thing to comment and say its good
 
I have a PNG image that I'm trying to convert into a 2D room and seriously all that I have done to be safe is press "add room" and leave it be. I nailed the sprites, the character animation and I'll handle the character movement but if you have any scripts or engine recommendations that have to deal with applying a room that you can spare, I would love that.

Maybe if you have any tips and tricks on making walls and borders on a 2d map to limit the character's areas it can move to...that'll be fine as well.
 

Joe Ellis

Member
I have a PNG image that I'm trying to convert into a 2D room and seriously all that I have done to be safe is press "add room" and leave it be. I nailed the sprites, the character animation and I'll handle the character movement but if you have any scripts or engine recommendations that have to deal with applying a room that you can spare, I would love that.

Maybe if you have any tips and tricks on making walls and borders on a 2d map to limit the character's areas it can move to...that'll be fine as well.
Yeah I know a few things that could help, I'll pm you tomorrow :)

What system do you use for your spot-light shadows?
All I did was use a uniform vec3 for the position of the ball and darken the pixel by the closeness it is to this position, and offset it by the sun normal.xy * the z distance from the varying pixel world pos, its not 100% accurate but works when the sun is mostly pointing downwards
 

lolslayer

Member
All I did was use a uniform vec3 for the position of the ball and darken the pixel by the closeness it is to this position, and offset it by the sun normal.xy * the z distance from the varying pixel world pos, its not 100% accurate but works when the sun is mostly pointing downwards
Cheecky, good stuff :p
 

Joe Ellis

Member
This looks great. I can't tell if this is for GMS 1 or 2, or both.

Your marketplace link for this seems to be dead.
It's going to be for both, but I'm making it in 1.4 cus I started making it before gms2 came out. When it's finished I'll hopefully be able to port it straight across, there could be a few complications which slow it down, mostly to do with the dlls, one of them needs to be rewritten to work with dx11, but it should be quite simple to do and I'll hopefully get that sorted before version 1 comes out.
I removed the marketplace link for now cus it was stressing me out how people could get the beta version, cus I've improved it alot since then, so I'll probably just upload version 1 when its ready now.
 
S

SinglePotato

Guest
That's some great effort put into the engine. Would love to see how it's doing once you've released it.
 

Joe Ellis

Member
Update -

I've made undo\redo history! Every change you make to any object gets logged and you can undo\redo using ctrl z\y or open the history window,
Where it shows each change with the object name and the variable.


I've made a folder tree system for the world editor,
which will be very good for organizing all the objects,

Folder Tree.png

Actions & Triggers

Create action objects which contain a script and choose the arguments it uses.
Create triggers with a collision mask and choose the actions it will perform when a certain object collides with it.
You can also choose whether the actions are performed either when the object enters it, leaves it, or does it
constantly while the object is inside it's mask,
and you can also choose the delay\recharge time for how often it will perform the actions.
Actions can also be attatched to specific triangles in a static model, and triggered when an object collides with the triangles.
This allows you to make certain surface types like water, harmful, conveyor belts, bounce pads, slippery, climbable\ladders, teleports and many more.


Weighted color blending

Where vertices can blend between multiple colors (up to 8) and have a separate weight per color, (which you can paint on with the brush tool)
so the blending ends up non-linear and allows you to do alot more than standard vertex coloring,
the 8 colors are handled via a uniform, so the vertex buffer only needs one extra vec4 attribute
(for weights 5-8)

Weighted Colors 1.png

Weighted Colors 2.png

Weighted Colors 3.png

Automatic stretch uv mapping

It automatically finds the most square uvs and takes into account whether the faces are floors or walls
and maps them correctly with left to right, top to bottom orientation,
This makes it alot simpler to do affine ps1 style mapping.
The uvs can also be flipped, rotated and moved manually afterwards with the uv tool.



Prism tool

click and drag to make a polygon and then choose how tall you want it and instantly make a prism
with any number of sides





Topdown\2d camera mode

Warp3d is going to be able to make 2d games aswell, and you can make use of the modelling tools to make 2d models,
vector sprites(with skeletal animation) & invisible collision polygons for precise vector collisions.

2d View.png
 
Last edited:

Joe Ellis

Member
@Misty Yeah I just used spyro world viewer and imported it with the fbx importer
I sure hope so, I've been designing all the tools with making levels like this as the priority

@YanBG Thanks, I did release the beta version but I took it off cus it was stressing me out, cus it had too many bugs and unfinished stuff. I'm just gonna release it when its done now
 

Joe Ellis

Member
I've recently updated the shadows to use depth mapping instead of id mapping, id mapping was faster but it was a hell of alot more complicated to set up and not really worth it, every object needed a unique id, and they also didn't self shadow, now with depth mapping they do and everything is automatic.
I think I'll upload this as a separate asset on the marketplace soon when I've neatened the project up, I could see it being really useful for alot of people.

 

Joe Ellis

Member
I've hardly got anything to show this week but here's a few pics of what I've been doing lately:



Isometric view, for super cool games the look like dungeon keeper, I don't really know any other games that have done 3d models in isometric, so there's a whole niche right there!


These are all the different object types you can make inside a model, I've tried to fill every possibility, there's probably some really complicated things that it can't do, but I've covered most things with these, the extrusion object is particularly useful for making roads, you select an edge(or several) and choose the angle they rotate or move each step, you choose how long(how many steps\segments) it goes on for, and you can make several parts\layers per extrusion
The voxel map is what I'm really excited about, that will basically be like minecraft, but be able to have wobbelyness like dungeon keeper, I'm looking forward to making levels with this, it'll be really easy to map them out roughly, then I can convert them to a standard model to add more detail or bend them into different shapes
 

Joe Ellis

Member
It's all in gm with sprites haha, I draw it in paint, then copy and paste in sprites and program the coordinates
The actual functionality was the hardest part though, I'm still refining it now
It's weird the amount of things that are built into windows that you just take for granted, and they're actually really well designed, I've tried to imitate most things - at least the parts that are useful, and then I've come up with a few other parts that are more useful for this program, like dragging and dropping say a script into an object's variable, when the variable is a script it uses, like it's state or something
 
Last edited:

Joe Ellis

Member
Good job! Looks surprisingly 'native'. :)
Ah Thanks! That is a really good complement, cus I wanted to feel comfortable in it and that I'm in a normal windows program, I'm not sure how everyone else will like it cus everything has a new gui recently, but I figured this look has been around for ages and is probably better than making it modern, cus it'll look out of date in 2 years if I make it modern
 

Lonewolff

Member
Ah Thanks! That is a really good complement, cus I wanted to feel comfortable in it and that I'm in a normal windows program, I'm not sure how everyone else will like it cus everything has a new gui recently, but I figured this look has been around for ages and is probably better than making it modern, cus it'll look out of date in 2 years if I make it modern
That's he thing isn't it? So many new takes on modern Windows GUI's, and which one will last? At least the tried and true 'win32' style will always feel normal to people.
 

Joe Ellis

Member
Exactly :)
I think it's actually a really perfect formula for gui, its hard or impossible to improve that exact look
But they did actually copy it off this gui designer program that was on mac, I can't remember the exact program but I found it a while ago, It was basically a program that made really nice gui, and microsoft just copied all the best bits and put it in windows 3.1
 
Last edited:

Joe Ellis

Member
A few more stragglers, may aswell post them


You can view a script by clicking on it in the asset brower


Material Editor (For editing materials)


Lookin pretty cool, reminds me of rayman 2 (oogh)
 

hambo245

Member
I myself am only a barebones novice but know enough to see this looks incredible. Really look forward to getting my grubby little mits on the final piece and tinkering around.

You can do the final stretch gogogogo!
 

Joe Ellis

Member
I've got hardly anything to update about besides this:



It looks really terrible but its the start of multitextured terrain, I've just gotta work out how to make a tool that selects which texture you want and makes the blending happen around it,
The 162.71 is the real framerate, while it's constantly rebuilding 4 vertex buffers of terrain, so that means its fast enough to change in realtime, like populous! yaay
 

Joe Ellis

Member
I've got some good news, I started making an obj importer\exporter!
So all the models you make will be interchangeable with blender etc. There's an Fbx importer aswell, the same one that's in SMF, I gave it to snidr, but it doesn't work properly with animated models, (I didn't write it, I got another guy to make it will a dll, and it's kind of slow) so I thought, why not make an obj importer in standard gml that loads gradually,
It's kind of weird, I didn't realize how simple the obj format is, and I made most of the scripts in about half an hour earlier on,
(not bragging) I just i think I overlooked it before cus I was that busy focusing on really complicated things.
So hopefully I'll upload the obj importer soon, It'll be free, partly cus there's many others and also cus its not actually that useful on its own, but it'll also be a feature in Warp3D and fully exportable (in case you fall in love with the model editor and want to use it for your unity\unreal\cryengine game hehe :oops:)

I've also got good news on the actual game engine side, pretty much all of it is finalized and really close to running like clockwork,
I know I've been saying this for the past year or so, in fact in my family it's become a catch phrase "uh yeah, its almost finished" then everyone laughs,
but I keep making it better, that's the important thing, and all the loose ends are tying up, I've even got it so you can edit a model inside a level,
so say you're placing enemies in a level and think "oh that corridor should be a little bit wider" you can just right click and "edit model here"
and then it goes into model editing mode while all the other stuff in the level is there!
I always wanted that to be a feature, but I never knew whether I could get it to work
 

Joe Ellis

Member
I've improved the block tool to work in a minecraft voxel kind of way, but it has the advantage of not storing empty blocks and isn't confined to a grid, it just checks if a vertex exists at a position where its about to create one, and if it does it uses that vertex instead, so the blocks share the same vertices and get joined together, it also automatically deletes hidden faces, so the meshes end up hollow, which is most of the time what you want, -there is the option to disable this if you need the blocks to not be joined together.

 

Joe Ellis

Member
Holy crap! It's all up and running, I can't believe it. Now I need to make template things like different types of player objects, fps, platformer, sidewinder(pandemonium), topdown, rpg, also the rolling boulder, which was on the spot shadows video, I'm gonna use that and put it in a spyro level!, I can't wait for the next load of stuff I'm gonna show you all
 

Amon

Member
Cool. I'm waiting for the initial release. I don't paying now if it will give me access to it. PM me if this is possible. Cheers.
 

inertias

Member
Holy crap! It's all up and running, I can't believe it. Now I need to make template things like different types of player objects, fps, platformer, sidewinder(pandemonium), topdown, rpg, also the rolling boulder, which was on the spot shadows video, I'm gonna use that and put it in a spyro level!, I can't wait for the next load of stuff I'm gonna show you all
Awesome stuff! I will definitely be buying this once it's released. Two questions though: Will you be supporting this after release? (Future patches with bugfixes, etc.) and will there be any documentation included?

edit: Oh and forgot this isn't GMS2. Will be waiting for a port if that's possible.
 
Last edited:

Joe Ellis

Member
Awesome stuff! I will definitely be buying this once it's released. Two questions though: Will you be supporting this after release? (Future patches with bugfixes, etc.) and will there be any documentation included?

edit: Oh and forgot this isn't GMS2. Will be waiting for a port if that's possible.
Sorry for the late reply,
Yeah, I'll be supporting this fully after the release, I'm hoping for it to be active and continually in development for many years to come. I actually have a roadmap which I'll be showing soon, the next major step is porting it to gms2, and there will also be a complete rewrite using the new gml update.
It will be fully documented, I started writing the manual the other day and I'm gonna make sure it's included in the 1st release.
 
Top