Jump to content

Paul Thomas

Members
  • Posts

    339
  • Joined

  • Last visited

Everything posted by Paul Thomas

  1. Been a while since I've done much with LE, but I remember this part: Local myMaterial:tmaterial = LoadMaterial(FILE) SetShaderVec3(myMaterial.reference.shader, "ShaderVariableName", vec3(0,0,0)) ' SetShaderVec4 ' SetShaderFloat Not sure if that's what you meant exactly, but there you go.
  2. Very useful, and impressive, Masterxilo. Thanks for this.
  3. By "full fledged" and what I had in mind for at least the management part is software like some of these: A Roundup for "Developers, Developers, Developers..." Edit: BaseCamp for one of those examples
  4. Yeah, if you expect it to be completed in several months. A full fledge game project manager with at least the functionality of all the software I had mentioned would take a single programmer months to complete, especially if you expect something of decent quality, and practically no bugs. That is, of course, if you meant building the whole system from the ground up and not just injecting into existing software.
  5. Definitely agreed about the management software available. I really dislike MediaWiki for one. I like it's concepts but it's actual control management is horrible and the only way to get beyond that is to use yet another third party program to make that program better. There are a ton of project management programs available, most worth while you have to purchase, sometimes pay monthly, but they're all geared towards standard project management. There isn't anything geared towards game development with all the features required. If you could link between real financing and the community I think it would have a huge impact. It would also give projects something to aim for and that would be to gain the financial interests of a financier. Not to mention make it much easier to gain access to financiers that are willing to find game development projects to invest in.
  6. It would be fantastic to have immediate access to individuals/groups who were willing to invest or even donate for projects like what everyone here is involved with and attempting to complete. I'm sure everyone knows the dire need for funds and it becomes more of an issue the further you progress. I have a few individuals lined up that are ready to invest but they're waiting for something to actually interact with and experience before deciding to take the risk. A ton of screen-shots of assets, characters, or in-game screens won't really influence investors that plan to take a large risk; however at the same time an impressive prototype is hard to make without those funds. There are plenty of places to find modelers, artists, programmers, but I have yet to find a place to find investors; and you probably won't ever find such a place. At least in terms of real financing instead of a few hundred here or there. Of course, that few hundred here or there is still a nice option, especially if it's a donation. One of the inventors I was speaking of is merely interested in investing into something different, instead of their normal routines such as stocks, and to be involved in a gaming/entertainment project without actually doing any work, but giving the financial support that the project requires to succeed. To change the subject up a bit, after rereading your original post, something caught my attention. Team management. Everyone knows that when you're forming a team together, and it's formed, you have to use a ton of third party programs to help keep everything in synchronization. MediaWiki for design documents, SVN for repository or easy file sharing, some sort of bug tracker, communication programs like a forum, project management programs for task lists, and so forth. It's a whole other job to get everything setup, maintained, while working on a game project, and it's just an unnecessary hassle. After using a forum, for example, for several weeks in a row, getting used to the flow when adding new members and I go back to add a member to our design documents, I forget exactly what I had to do (stupid MediaWiki) and have to spend time looking through help files just to add a new user. Don't even get me started on when one of the dozens of programs has an update. I had a plan once I was done my project to start a project to put all of these third party programs together as an all-in-one package or to start on that solution from the ground up. Either way it would take a lot of time hence why I'd have to wait until my project was completed. It would be great if there was a team that would take up this task, committed to it, and kept up with the project (for updates, bugs, feature requests, etc). Basically a manager built specifically for game project management with no intention to skip specific features because it's predicted that the whole team are on-site employees.
  7. My team has become fairly large by this time. The most limiting part of the team building was indeed money to spend for development. At times I'd find people with an incredible portfolio but I simply couldn't afford the prices they've quoted. There are those talented individuals that require a large salary that will work with your own financial limitations, but more often they simply couldn't because they're searching for full time (full salary) jobs. Which is of course an understandable situation. Other than the financial issues it's incredibly hard to find animators, which also could have been solved with proper finances. This whole time I've only been able to find two that have a decent portfolio and have the experience. You can find assets that are already animated, but as someone else has pointed out, they won't have all the required animations. Also depending on your project you could require custom animations, so you're basically still stuck at square one when you went on the search for assets that are animated. Each project will have it's own limitations so it would be fairly hard to pin-point. I think majority of them could be solved with proper financing. Financing is still a battle I have yet to complete, so I couldn't give any input on that portion yet. I just know it's a difficult battle.
  8. Within "DrawEffectSSAO" gbuffer.depthbuffer.Clamp() gbuffer.depthbuffer.SetFilter(TEXFILTER_PIXEL) gbuffer.depthbuffer.bind(1) texture_noise.bind(10) depthtexture.bind(1) Can be changed to depthtexture.clamp() depthtexture.setfilter(TEXFILTER_PIXEL) depthtexture.bind(1) texture_noise.bind(10)
  9. Yeah it's best to recreate the controller. But, you can indeed scale it, lol.
  10. function Player() local player = {} player.activeHeight = 1.8 player.height = 1.8 player.crouch = 0.8 player.radius = 0.45 player.stepHeight = 0.25 player.maxSlope = 45.0 player.mass = 10.0 player.iteractions = 45.0 player.jump = 0.0 player.jumpHeight = 6.0 function player:Create() player.controller = CreateController(player.height, player.radius, player.stepHeight, player.maxSlope, player.iteractions) player.controller:SetCollisionType(COLLISION_CHARACTER, 0) player.controller:SetMass(player.mass) player.controller:SetPosition(fw.main.camera.position) end function player:Free() player.controller:Free() end return player end player = Player() player:Create() while KeyHit(KEY_ESCAPE) == 0 do if KeyHit(KEY_C) == 1 then if player.crouching == true then player.crouching = false player.controller:SetScale(Vec3(player.controller.scale.x, player.height / 2, player.controller.scale.z)) player.activeHeight = player.height else player.crouching = true player.controller:SetScale(Vec3(player.controller.scale.x, player.crouch / 2, player.controller.scale.z)) player.activeHeight = player.crouch end end player.controller:Update(yaw, move, strafe, jump, 40, 10) end You'll have to fill in the rest. I had retyped this so I apologize for any mistakes. Setting the controller scale works for me. At least it looks like it
  11. This script is virtually useless because the additional added tree's won't save with the scene and it won't add the tree's to scene object list. However, it was just for a challenge to learn Lua, and it works. Place down a tree, right-click -> properties, mark "Create Batch" true, set how many additional tree's ("Batches"), hit Apply and then Ok. Then translate the tree. require("scripts/class") local class = CreateClass(...) function class:InitDialog(grid) --self.super:InitDialog(grid) groups = grid:AddGroup("Groups") groups:AddProperty("batching", PROPERTY_BOOL, "0", "Batch Creation") groups:AddProperty("batches", PROPERTY_INTEGER, "5", "Batches") groups:Expand(1) group=grid:AddGroup("Positioning") group:AddProperty("Rotation", PROPERTY_VEC3) group:AddProperty("randomize", PROPERTY_BOOL, "0", "Random Rotation") group:Expand(1) end function class:CreateObject(model) local object = self.super:CreateObject(model) object.batches = 5 object.model:SetKey("batches", "5") object.randomize = "1" object.model:SetKey("randomize", "1") object.batching = "0" object.model:SetKey("batching", "0") object.batched = {} object.batchCreated = 0 function object:Reset() if object.randomize == "1" then object:randomRotate() end end function object:UpdateMatrix() if object.batching == "1" then if object.batchCreated == 1 then for i = 0, tonumber(object.batches) do if object.batched[i].xt == 1 then object.batched[i].model:SetPosition(Vec3(object.model.position.x + object.batched[i].x, object.model.position.y, 0)) else object.batched[i].model:SetPosition(Vec3(object.model.position.x - object.batched[i].x, object.model.position.y, 0)) end if object.batched[i].zt == 1 then object.batched[i].model:SetPosition(Vec3(object.batched[i].model.position.x, object.model.position.y, object.model.position.z + object.batched[i].z)) else object.batched[i].model:SetPosition(Vec3(object.batched[i].model.position.x, object.model.position.y, object.model.position.z - object.batched[i].z)) end if object.randomize == "1" then object.batched[i].model:SetRotation(Vec3(0, math.random(0, 359), 0),1) else object.batched[i].model.rotation.y = object.model.rotation.y end end else object:batch() end end end function object:SetKey(key, value) if key == "randomize" then object.randomize = value if value == "1" then object:randomRotate() end elseif key == "batches" then object.batches = tonumber(value) elseif key == "batching" then object.batching = value else return self.super:SetKey(key, value) end return 1 end function object:GetKey(key, value) if key == "randomize" then return object.randomize elseif key == "batches" then return tonumber(object.batches) elseif key == "batching" then return object.batching else return self.super:GetKey(key, value) end return 1 end function object:batch() for i = 0, tonumber(object.batches) do object.batched[i] = {} local bx = {} local bz = {} bx.t = math.random(1, 2) bx.r = math.random(2, tonumber(object.batches)) bz.t = math.random(1, 2) bz.r = math.random(2, tonumber(object.batches)) object.batched[i].x = bx.r object.batched[i].xt = bx.t object.batched[i].z = bz.r object.batched[i].zt = bz.t object.batched[i].model = LoadModel(class.modelreference.path) if bx.t == 1 then object.batched[i].model:SetRotation(Vec3(object.model.position.x + bx.r, object.model.position.y, 0), 1) else object.batched[i].model:SetRotation(Vec3(object.model.position.x - bx.r, object.model.position.y, 0), 1) end if bz.t == 1 then object.batched[i].model:SetRotation(Vec3(object.batched[i].model.position.x, object.model.position.y, object.model.position.z + bz.r), 1) else object.batched[i].model:SetRotation(Vec3(object.batched[i].model.position.x, object.model.position.y, object.model.position.z - bz.r), 1) end end object.batchCreated = 1 end function object:randomRotate() object.model:SetRotation(Vec3(0, math.random(0, 359), 0), 1) end function object:Free(model) self.super:Free() for i = 0, tonumber(object.batches) do if object.batched[i] ~= nil then FreeEntity(object.batched[i].model) object.batched[i] = nil end end end end Again, was just for a learning experience. If anyone knows of the correct way to force create the same model correctly, please let me know. I couldn't figure out a way.
  12. The above was edited again because if the object was selected to not randomize it wouldn't save the rotation once you've saved the scene. Multiple attempt to fix this lead to "C stack overflow" errors including when attempting to use; object.model:Fix(). Not exactly sure what the deal with that is.
  13. Edited Again: Thanks to macklebee for adding to this. Edit: Code revised Here is a script to do just that, with a property grid. Thanks to macklebee for the help with my confusion. My second day of learning Lua after-all, lol. require("scripts/class") local class = CreateClass(...) function class:InitDialog(grid) --self.super:InitDialog(grid) group=grid:AddGroup("Positioning") group:AddProperty("Rotation", PROPERTY_VEC3) group:AddProperty("randomize", PROPERTY_BOOL, "0", "Random Rotation") group:Expand(1) end function class:CreateObject(model) local object = self.super:CreateObject(model) object.randomize = "1" object.model:SetKey("randomize", "1") function object:Reset() if object.randomize == "1" then object:randomRotate() end end function object:SetKey(key, value) if key == "randomize" then object.randomize = value if value == "1" then object:randomRotate() end else return self.super:SetKey(key, value) end return 1 end function object:GetKey(key, value) if key == "randomize" then return object.randomize else return self.super:GetKey(key, value) end return 1 end function object:randomRotate() object.model:SetRotation(Vec3(0, math.random(0, 359), 0), 1) end function object:Free(model) self.super:Free() end end I have this with all my tree models. However, you may have to set default values for collision, mass, and so forth.
  14. Was posting this in a locked topic right when it was locked. Not sure if it'll help anyone but you can randomly set the rotation of the tree's when the object is created, with Lua. The only flaw is that the rotation will always rotate whenever it's loaded. Probably not always wanted but you could easily make a property grid for a "Random Rotation: True/False" if you wanted. function class:CreateObject(model) local object = self.super:CreateObject(model) object.model:SetRotation(Vec3(0, math.random(0, 359), 0), 1) end I just found it annoying to change the rotation each time I placed down a tree or any other vegetation. Not as easy as painting the tree's but figured I'd share anyways.
  15. Just taking a shot, I think it would be like; function Lights() local light = {} light.spot = CreateSpotLight(100) function light:Update() light:Movef(0,1,0) end return light end lights = Lights() lights:Update() I'm still new to Lua but that's what I've gathered in my day of learning by trial and error. If you mean to automatically update then maybe you'd make it an added hook?
  16. If your fw.renderer.DrawShadowText() isn't exposed to Lua (remove {hidden} for lugi.generator) and you want to use this function just add this (a fairly simple copy): function DrawShadowText(text, x, y) SetColor(Vec4(0, 0, 0, 1)) DrawText(text, x+1, y+1) SetColor(Vec4(1, 1, 1, 1)) DrawText(text, x, y) SetColor(Vec4(1, 1, 1, 1)) end I also added these lines within "constants/engine_const.lua" --Blending BLEND_NONE=0 BLEND_ALPHA=1 BLEND_LIGHT=2 BLEND_SHADE=3 BLEND_MOD2X=4 Didn't see it in any other Lua file.
  17. Not sure if anyone else had a problem but I couldn't hide the waterplane. I tend to set the waterplane first and then paint terrain. Extremely difficult to do with the underwater effect once I had finished painting around the water. I fixed this by changing a few things in the environment_waterplane.lua file: Remove "fw.renderer:SetWater(1)" from the object:Refresh() portion and place the "fw.renderer:SetWater(1)" under "object.model:SetKey("wavespeed","1.0") (or anywhere, just out of object:Refresh() but you can't remove it completely). Within object:SetKey(key,value) add this before "else": elseif key == "hidden" then if value == "1" then fw.renderer:SetWater(0) elseif value == "0" then fw.renderer:SetWater(1) end Hope this helps anyone. At the moment I'm unsure if the property grid changes the text to lowercase, else you may have to change it to "Hidden." I had changed my default property grid so I don't exactly remember how it was before. My default property grid for "Hidden" is: group:AddProperty("hidden", PROPERTY_BOOL, "", "Hide") I have to refresh the editor after changing the default property grid or it doesn't show up after saving. Not sure if it's just me or not.
  18. This is sort of an old post but I get this type of error all the time. Once it happened when I loaded the editor for the first time, as well as the script editor, hit tab, and I got the error. I don't think it's a Lua error. Not exactly sure what it is, but I'm going to switch over to Notepad++ until anything with this is fixed. I also tried the in-editor and standalone Lua editor, both do this, computer specs are always in my signature (Windows XP):
  19. Yeah, I figured that out when I was doing my testing, and of course that would have been time saved if I had read that post, lol. Just curious what the point of the "commands.bmx" file is for, which is included at the end of "framework.bmx." It's almost like it's an old file meant for everything to work before he made the update to Lua, changing it to single state. I have no idea, but my project now works as it always did, but now with Lua, so I'm happy about that.
  20. What is this file used for? The forum post http://leadwerks.com/werkspace/index.php?/topic/1089-lua-and-framework/page__gopid__10112entry10112 is about a project of mine that failed when trying to make my framework a lua global object. Once this file (commands.bmx) was removed, lugi.generator regenerated, everything worked fine. So, I'm just curious what this file is for, as it doesn't seem very important. Everything works. The fire pit. Water. Everything as far as I can tell. Thanks.
  21. This issue has been solved and I'm attempting to figure out how exactly. I had rebuilt the whole project adding file by file attempting to find the problem. I first started with a simple program that did nothing but quickly setup the abstract path, graphics, and the loop. I added the "setobjectscript()" functions as well. I first included the framework files that I had in the last project, made them a Lua global, recreated the lugi.generator generated file and bam; worked fine without a problem. I eventually erased the quickly added code and slowly added file by file determined to find what the issue was. I added the last file and still no error. The only difference is that I didn't use lugi.generator with the file "framework/commands.bmx" included. This is the only difference between the two projects. Within the lugi.generator generated bmx file, there is no TFrameworkCommands and everything works perfectly fine. Thanks everyone for your help. In these forum replies as well as in PM's.
  22. Hmm, I'll try some tests then. Thanks, Mika.
×
×
  • Create New...