Jump to content
  • entries
    943
  • comments
    5,899
  • views
    924,353

S-M-R-T


Josh

8,697 views

 Share

I've made more progress on the model editor. I needed it to be able to resave models after making changes. First, I started with an Entity::Save function that would save all entities in the GMF format. "But wait", I thought, "I can save all entities in the GMF format!" Then I thought, even better, I can simply write a Serialize() virtual class function in the base object and extend it for each class, so that instead of writing this:

stream->WriteFloat(position.x);
stream->WriteFloat(position.y);
stream->WriteFloat(position.z);

I can simply write this:

position.Serialize(stream);

"I am so smart! I am so smart! S-M-R-T!"

 

Wait a minute, if I write a World::Serialize function, I could save an entire world with all entities in a single file, so that another person can just open the file and recreate everything that was happening! Amazing! :huh:

 

Of course, serializing every instance of every texture would be terribly wasteful. Should assets still be loaded from files? What if they were missing? What about models that were loaded and then modified? Can I use this for sending entities over the network? How does this all fit together?

 

It was around that time my conscience started kicking in, or whatever that feeling you get when you know you're doing something dumb is. So I stopped what I was doing, imported the GMFSDK code into the editor, and wrote a SaveModel() function, which is all I needed in the first place. <_<

 

I changed the default background color to dark gray (0.25). It makes thumbnails more easily visible, and is dark enough to not kill your ability to see dark pixels. The thumbnail generation uses the last rotation you had in the model editor, so it's very easy to adjust the thumbnail. The thumbnail renders use an orthographic view, which makes it easier to make better use of the available pixel space, and seems to look good. Thumbnail renders for materials and models use 2x antialiasing, which looks great blended against the background color.

 

The thumbnail icon view we use for assets is one of my favorite parts of the editor. Having used this and a few alternatives for a while, I think this gives you much faster and easier access to all your files.

 

blogentry-1-0-20523500-1325041579_thumb.jpg

 Share

35 Comments


Recommended Comments



HA! Thats exactly what I did in first LEO-versions (or did I ever send them? ), those which were rejected because they did not follow the C-API exactly. Well, thats history and its a great way of storing and loading thigs. Good reading

Link to comment

Looks great! Is the editor going to resemble something that of Unity or Shiva?!

 

It would be great if the actual editor was extensible via LUA so community members could extend/enhance the tools

Link to comment

Looks great! Is the editor going to resemble something that of Unity or Shiva?

No, it will look like Leadwerks. <_<

 

perspective view was definitely the way to go... looks good.

The thumbnails are rendered with an orthographic perspective. It's at an angle, but there is still no depth perspective.

 

It would be great if the actual editor was extensible via LUA so community members could extend/enhance the tools

It's kind of frightening to me that people are already unsatisfied with a tool that isn't even done. What needs to be fixed?

Link to comment

i like it too, and there is enough space for more icons for more controls.

 

hopefully we get to choose whether working on global or local space & maybe screen space [x/y of screen] & pick coordinate system from other entities. snaps would be a bonus

 

personally i like to use keyboard shortcuts [the single key types, not the CTRL+, or SHIFT+], with software like this, one hand can practically be at the keyboard at all times. with this in mind have others here used 'sticky' keys as implemented in Softimage - it really speeds up workflow.

 

Dozz

[ +1 for customisation ]

Link to comment
It would be great if the actual editor was extensible via LUA so community members could extend/enhance the tools

It's kind of frightening to me that people are already unsatisfied with a tool that isn't even done. What needs to be fixed?

 

As you know, I'm a big fan of both LE and Unity. As I see it there's a few reasons why Unity has gained popularity.

 

1) Multi-platform deployment. LE3 takes care of this, and if it's all included in the base license then it's even better than Unity which charges separately for Android and iPhone/iPad deployment licenses. Only thing missing is web deployment in LE but it's not a huge deal to me.

 

2) Component based programming. LUA scripting in LE does this and it's great for making reusable and share-able components.

 

3) Excellent art pipeline. LE3 is addressing this and looks really promising. This is a huge one for me.

 

4) Being able to script and extend the editor. This has been instrumental in the huge ecosystem of 3rd party plugins available for Unity. It's not what we think is missing right now, but what we may find to be missing later. You'll always be behind feature-wise if you try and do everything yourself. While I agree with your earlier post about small dev teams being more agile than big teams, neither can really compete with crowd sourcing when everyone is trying to scratch their own particular itch in their area of expertise. A quick example:

 

Unity terrain sucks, so I wrote a mesh terrain painting system and shader set. I have a giant multi-million poly mesh terrain with cave entrances and overhangs, wrote a Blender script to break it into smaller chunks to stay under the 64k vert limit of Unity and allow frustum and occlusion culling to be of use, then import them all. I then need to assign the same material to hundreds or thousands of chunks. I can either spend a ton of time dragging materials onto each chunk, or write a quick editor script that allows me shift select all the chunks and pick my "Multi Object Material Assigner" menu item, pick the material and have the script assign the material to all the selected objects at edit time. I also write an asset postprocessing script that looks at the name of the object being imported and sets it up to create colliders, not import animations and not create materials for anything with "chunk" in the asset name, as well as scale the import. It's very specific to my needs, so it's not really something I would expect in the general editor, but it saves me many hours of tedious work and makes me happy. The "Multi Object Material Assigner" script is general enough to be usable elsewhere, so I often drop it into other projects where it's needed and instantly have a menu item for it.

 

For the same system, I need to average the vertex normals of the edge verts so there isn't a visible seam between chunks. The number of verts to be modified isn't that many, but searching through them to find those that need to be does take a while (many minutes on a medium sized terrain). So doing it at runtime isn't an option, instead I have an editor script that searches through them, records the object, vert index, calculated normal and tangent in a file I specify, then at runtime I can just load that file and apply it in less than a second.

 

TL;DR - Being able to customize the editor to make it have features specific to your project is a really good thing.

Link to comment

It's kind of frightening to me that people are already unsatisfied with a tool that isn't even done. What needs to be fixed?

 

I think some people might be able to turn that around on you and say it frightens them that you would think you can give them everything they want, because it's not realistic. Like any other piece of software having the ability to extend it yourself is a very powerful and attractive feature. That's just the reality in today's world.

Link to comment

Most new people don't know how skilled and fast Josh is, because in the last few years he has been too busy with the website and developing the next generation of Leadwerks Engine. However, I think that once LE3 is out, we will see amazingly fast bug fixes and new request implementations, since he has then nothing else to take his time. I don't see any reason for LE4 yet, which would be probably voxel based, because there is no real GPU support for voxel based engines yet. Maybe it starts when idTech6 comes out.

Link to comment

However, I think that once LE3 is out, we will see amazingly fast bug fixes and new request implementations, since he has then nothing else to take his time. I don't see any reason for LE4 yet, which would be probably voxel based, because there is no real GPU support for voxel based engines yet. Maybe it starts when idTech6 comes out.

 

..all that + maintenance of LE2.x what still has bugs to be fixed for ages ?? Man, I like your enthusiasm..really..

Link to comment
I think that once LE3 is out, we will see amazingly fast bug fixes and new request implementations, since he has then nothing else to take his time.

Ha, doesn't he wish! He posted in a status update that he is interested in making a game but couldn't get around to it for probably two years.

Link to comment

Josh, you shouldn't take offense to community asking for extendability, you should take it in a positive note... We support you enough that we don't want you to have to do everything... <_< It seems you take this as a slap against you. Its not, at least that's how I take it... Most just see what downfalls there are in LE2 and don't want to see them in LE3.. The editor being one of them...

Link to comment

Josh, you shouldn't take offense to community asking for extendability, you should take it in a positive note... We support you enough that we don't want you to have to do everything... <_< It seems you take this as a slap against you. Its not, at least that's how I take it... Most just see what downfalls there are in LE2 and don't want to see them in LE3.. The editor being one of them...

So you're saying the community assumes the new editor won't meet their needs, and it's their responsibility to fix it? If that turns out to be the case when it is released, I shouldn't be in business.

 

I think some people might be able to turn that around on you and say it frightens them that you would think you can give them everything they want, because it's not realistic. Like any other piece of software having the ability to extend it yourself is a very powerful and attractive feature. That's just the reality in today's world.

I haven't heard anyone name a single thing they want to extend the editor to do, except you mentioned you wanted to create a pathfinding system as an alternative to the built-in one.

Link to comment

There's no way you can account for every possible use case in the general release editor, and even trying would result in an unusable mess with a bunch of features that most people have no use for.

 

Say I want to select a bunch of empty game objects, either exported from my modeling program or manually placed. I want to select an arbitrary number of models and have it randomly place one of those models at each of the empty positions, as a child of that empty, based on a seed value I provide, deleting any existing children. It should then randomly rotate each of these models about an axis I specify, scale them between a min and max value I provide, and then drop them onto the ground using either physics or a raycast. These should be placed at edit time, not runtime, so that I can use that as a base and then manually tweak them.

 

The LUA script to do this isn't difficult at all, but having some way to run this script on demand (a menu item or button I can click) and an API so I can create an interface where I can select the empties I want to use, the models I want to use, the random seed, the axis of rotation and the min/max scale factors to use, and finally a "Run" button is what makes it powerful and painless to use.

 

This might or might not be useful enough to be included in the general editor, but I don't want to wait for you to implement it (no matter how fast you are) when I could spend 5 minutes and do it myself. And what if I didn't want to select the empties myself, but just have it select any object with a name that starts with "PH1"? Being able to customize the editor to fit the needs of a particular project is a MASSIVE workflow enhancer. On any given project I usually have a half dozen or so editor scripts that are unique to that project and would be totally useless in any other project, but save me a ton of time on that particular project. Anything from automatically assigning materials to characters based on name to automatically assigning scripts to game objects based on name or some other criteria.

 

I love the LE engine. But I don't really use it due to workflow issues. LE3 is addressing the biggest of these (asset importing), but editor scripting is right up there with it.

Link to comment
Josh, you shouldn't take offense to community asking for extendability, you should take it in a positive note... We support you enough that we don't want you to have to do everything... <_< It seems you take this as a slap against you. Its not, at least that's how I take it... Most just see what downfalls there are in LE2 and don't want to see them in LE3.. The editor being one of them...
So you're saying the community assumes the new editor won't meet their needs, and it's their responsibility to fix it? If that turns out to be the case when it is released, I shouldn't be in business.
I think some people might be able to turn that around on you and say it frightens them that you would think you can give them everything they want, because it's not realistic. Like any other piece of software having the ability to extend it yourself is a very powerful and attractive feature. That's just the reality in today's world.
I haven't heard anyone name a single thing they want to extend the editor to do, except you mentioned you wanted to create a pathfinding system as an alternative to the built-in one.

 

Nooo Josh, completely misinterpreted.

 

What if I'm writing a specific type of game and I want the editor to reflect it to make development just that much quicker and easier.

 

For example.. What if someone was creating a FPS game and wanted the Editor to reflect something that of the FPS Creator interface

 

All I'm saying is this could be a good opportunity to make the editor more flexible, not to mention you could sell "editor modules" FPS Module, RTS Module, RPG Module etc

 

It's about taking something great, and enabling users to make it better.

Link to comment

So you're saying the community assumes the new editor won't meet their needs, and it's their responsibility to fix it? If that turns out to be the case when it is released, I shouldn't be in business.

 

Not to fix it, enhance it to meet their needs in a timely fashion.

 

The only argument that would make sense to not do this would be if you fear that it could eat away at your income because adding features and such and making a new version and charging for that version is how you make your money then I can understand that, but if you truly think your product will solve everyone's needs/wants then I think that's misguided.

Link to comment

MaxScript is an example of script that is useful in an editor. You can add little tools, exporters, and dialogs. However, it is my hope that when Leadwerks3D comes out people will be focused on making their games rather than reworking the tools.

Link to comment

MaxScript is an example of script that is useful in an editor. You can add little tools, exporters, and dialogs. However, it is my hope that when Leadwerks3D comes out people will be focused on making their games rather than reworking the tools.

 

 

..E..X..A..C..T..L..Y.. 100%

Link to comment

NA correct me if I'm wrong but you didn't use LE's editor in making your games right? I assume that meant you created tools, exporters, and dialog's of your own? This isn't a bad thing but trying to make the point that the one person who is the farthest in selling a game using LE didn't use LE's tools. How much easier would it have been for you if LE's tools were extendable? Do you think you would have extended then instead of creating your own and would that have saved you time and money?

 

However, it is my hope that when Leadwerks3D comes out people will be focused on making their games rather than reworking the tools.

 

This is a nice thought but if the tools aren't sufficient then most people won't be able to make their games. Which seems to be the consensus with LE2. Sure you'll have a couple people like NA finish their games but the idea is to reach the majority of people. When you allow your tools to be extended it gives you a better chance to reach the majority because now you have 1000+ programmers potentially helping you make community tools which has more potential to make something useful for others to reach their goal of making a game easier.

Link to comment

This is a nice thought but if the tools aren't sufficient then most people won't be able to make their games. Which seems to be the consensus with LE2. Sure you'll have a couple people like NA finish their games but the idea is to reach the majority of people. When you allow your tools to be extended it gives you a better chance to reach the majority because now you have 1000+ programmers potentially helping you make community tools which has more potential to make something useful for others to reach their goal of making a game easier.

 

Spot on.

 

From a business stand point, if you think the effort in making the editor extendable is going to generate profits that were worth the effort then do it.

 

Maybe make a poll.

 

"Would having an extendable editor be a feature you would use?"

 

There are a lot of untapped niche markets Leadwerks could slam if it had this feature.

Link to comment

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...