Jump to content

Josh

Staff
  • Posts

    23,354
  • Joined

  • Last visited

Posts posted by Josh

  1. A long time ago, a third party made a plugin for 3D World Studio that compiled the Torque equivalent of BSP maps. At some point I decided this functionality should be built into 3D World Studio, so I just added it in and effectively cut him out. This was a mistake because all the sales I was getting from Torque users dried up, because I no longer had that third party actively promoting me.

     

    That's sort of how I think of this kind of thing. If I integrate it directly into Leadwerks, I am effectively killing any possible third-party innovation, because no one will want to compete with a built-in solution that costs nothing extra.

     

    I hope that through the Steam Workshop we can devise a way to support third-party authors so they can publish their own C++ programming libraries and make them work with Leadwerks. Even if they are only tidying up a third-party lib they didn't necessarily write, like this one.

  2. We use a uniform lighting model which means surfaces are always self-shadowing. There are no tricks or gimmicks, just natural lighting everything. The reason you screenshot looks bad above is because the normals are messed up. Try calculating the normals in the model editor using the angular threshold algorithm, setting the threshold to a low value, like 15 degrees.

  3. We use mipmapping right now...but I think what you are suggesting is different settings for the mip filter downsampling. That's interesting, because you are basically trying to offset the downsampled info with an increase in contrast. It's subtle, but might make a nice improvement.

  4. So LE3 should have the ability to split a map in chuncks, make group of chuncks, import and replace group of chuncks map.

    UDK uses Perforce and can work with their streaming system also :

    http://udn.epicgames.com/Three/LevelStreamingHome.html

    The reason they do that is because of the severe memory limitations of the last generation of consoles. And the minute you have a button on one side of a map that interacts with an object somewhere else, the whole thing breaks down.

     

    Valve makes Left 4 Dead maps and doesn't have any problems. Binary data cannot be merged. Even a text-based map format cannot be merged, because objects reference other objects. The map isn't just a list of self-contained objects. This is like complaining that two people can't work on a 3ds max character model at the same time.

     

    My point with Unreal is they have a half-solution that still doesn't solve the problem, but it does successfully create more complexity and confusion. I think the normal mode of work should be open your map, make your changes, save it, and commit your changes. If you plan on having it unusable for long periods of time, do a lock on the file so no one else can modify it.

     

    Anyway, we've totally hijacked this thread. -_-

  5. Two things are coming up:

    • The FBX convert is going to start auto-generating material files from the texture data in the FBX.
    • The model editor is going to display surfaces and allow you to right-click, select a menu item, and choose a material file for that surface.

     

    During testing, once interesting thing that has come up is that drag and drop is often unintuitive, because it doesn't involve any visual hint of what to do.

    • Upvote 2
  6. It does sound like you may overestimate the difficulty of map design. With the example map in Leadwerks 3.1, for example, the map itself was probably 1/10th of the art production time. I literally drew the whole thing in 15 minutes, and then Rich dug out that elevator shaft in the main room. Using SVN locks can prevent team members from stepping on each others' toes.

     

    If you are using a modeling program then your props and scene are all one big mash of geometry, but with the CSG approach you have props that can be reloaded any time. I remember in LCP1 you guys found out the subway was too narrow and you had to wait for the artist to send another copy. If you had CSG modeling available at that time, any of you could have easily just stretched the hallway out a bit, then checked the map back in to your repository; like a five minute job instead of waiting an extra week.

  7. I still think level design is a different beast. The programming and modeling is pretty much well separated so that you can have many different people working on their specific thing and not have to know about what each other are working on. However, with level design that's much harder to do. Only 1 person can be modifying the map in LE at a time so you have to have 1 person do the level design or else you run into issues. This creates a big bottleneck because level design can be big and take a long time. That breaks the small task idea. I would love to have multiple people in a map editing it at the same time and able to see each others edits. This is obviously a large task to get something like that going, but it would allow breaking out the level (that hopefully is on paper first) between multiple people, limiting that bottleneck.

     

    I guess one way to do something like this would be to have each level designer work on their own map making only their small section and having them save all that as a prefab, that can be assembled into the final map by the LCP lead. As long as they understand the dimensions for the connection areas this should work. I guess I never thought of that before but that would help break it out and might work.

     

    That might work really well actually as when they save their level section prefab each time, the final level that has them all combined should reflect this on open. No refresh needed. This is how I should have structured level design.

    I break level design up into props and then map design. You're right that maps don't work as a collaborative thing very easily. This is because objects in maps reference other objects, and there is no clean way to separate them. Even if the Leadwerks map format was ASCII and you merged two versions on SVN, you would have so many errors that would break map logic. Unreal tries to solve this by basically grouping objects into self-contained "worlds" that can't relate to one another, but it's still not really a solution. I remember you guys were using Blender for LCP, and there was a lot of waiting for small things that could have easily be fixed by anyone using CSG brushes. (Of course, LE2 did not have this.)

     

    If we're talking about a large outdoor scene, then perhaps storing separate buildings and areas as prefabs is the way to go. But the people working on those sections would lose the ability to easily playtest their work.

     

    I think by the time the mapper starts, their job should be pretty easy because they are just sketching out walls and placing pre-made detail props. That's always been the stage that I really enjoy, and it's the only one I can actually participate in with my limited artistic skills. (I did most of the CSG brush design in the AI and Events tutorial map.)

     

    3D notations you can use to communicate with other team members are something we've thought about implementing for a while, but of course there are other priorities right now.

  8. Not that it replaces team projects, but some of the problems described here are things I am trying to solve with this: http://www.leadwerks.com/werkspace/blog/1/entry-1176-building-a-collaborative-content-production-pipeline-part-one/

     

    The idea is to break the entire "value chain" down into bite-sized pieces through the use derivative works. If I provide the right environment, I think people will just spontaneously self-assemble into working groups based on merit. Even if they never communicate or even realize they are working together.

     

    It will be interesting since this is completely different from looking at things on an individual user basis.

  9. Power of perlin noise, calculated in real time on the gpu using Leadwerks 3. (big *** picture)

     

    lava11.png

    That's actually brilliant. You don't have to worry about texture resolution at all and always have perfect resolution, regardless of how close you are to the surface.
    • Upvote 2
  10. I did find something significant. It didn't make sense to me that a 1x MSAA texture would perform any differently than a

    regular 2D texture, so I looked more carefully at where they were being created. There are some textures being allocated and deleted in real-time, which is bad. Once I fixed that, performance was comparable to what you would see in Leadwerks 2. Thanks for bringing this to my attention.

    • Upvote 13
  11. Some simple testing revealed the following:

    Presently, Leadwerks is calling the Lua garbage collector every frame. There are two ways you can manage this. One is to constantly call the collector, the other is to let it automatically run on its own when it feels like. I like the constant collection for testing memory allocations, but the automatic is more performant; it just lets memory collect until a certain quota is reached, and then it performs a collection. (This can make it appear that the application has a memory leak when it does not.)

     

    Before: 170 FPS

    After: 220 FPS

     

    Another thing I checked is the speed of a 1x Multisample texture verses a conventional 2D texture. Theoretically they should be exactly the same, but the Nvidia driver performs faster with a conventional 2D texture. I would classify this as a driver bug and am contacting Nvidia about it. The current edition does not have lighting shaders for conventional 2D textures, but I easily modified them and will provide that in the next update. So instead of using 1x multisampling, and using a multisample texture by default, the next update will use 0 for the default multisample value, and use a conventional 2D image.

     

    Before: 220 FPS

    After: 306 FPS

     

    So those two quick tests that took less than an hour nearly doubled the framerate. That's why I wouldn't be too concerned with performance right now; it's a process of building, using, and evaluating. It doesn't take a lot of time to optimize, but it needs to be spread over a period of time so we have that usage->evaluation->update cycle going.

    • Upvote 6
  12. The C++ add-on for Visual Studio 2013 and Code::Blocks (on Linux) will be available soon.

     

    Steam has an offline mode, but I don't know for sure how long it can run before it needs to reconnect again, so that might not be the right route for schools. I can provide a standalone, or do something fancier with a site installer...I don't really know how those work, but have friends that do that kind of thing.

    • Upvote 1
  13. That's true, the installer EXE the editor exports does show our logo. I forgot about that, but if you want you can just repackage the files in your own installer.

     

    I thought about adding a dialog to change the installer image, but it was sort of low priority and didn't get done. I don't have any objection to people making their own installer to bypass that.

×
×
  • Create New...