Jump to content

Canardia

Developers
  • Posts

    4,127
  • Joined

  • Last visited

Everything posted by Canardia

  1. No, it's just a dummy model with no polygons, that's the way thingoids are done, where the Lua script is the actual content.
  2. The whole idea of voxels is the simple mathematics to cull non visible entities, and the simple mathematics to calculate raytracing where the smallest unit is one voxel. There are no textures or shadowmaps, it's all just vertex colors, actually even just face colors. Josh is aware of this, and we will see some meaningful applications for voxels where it makes sense.
  3. Oh yes, I agree 100% with darrenc182. All standard libraries should be just drag&drop to the game, and not hardcoded as some stone old version into the engine. Leadwerks Engine should only do what no other library does, and be seamlessly integratable with any industrial standard libraries. I like that Purelight is an optional add-on, since I wouldn't use it because it's not realtime, but also Newton should be optional, since real game developers want some better physics engines also, like Bullet/PhysX/Havok, as each have their own benefits for certain purposes.
  4. I have made 2 3D particle classes for the next version of gamelib: physics particles (bit slow, but good for upstreams (like smoke hitting a ceiling)) and raycast particles (fast, but only good for downstreams (like rain hitting a ceiling)).
  5. You can request some thingoids for Editor from the community. I did once a compass thingoid for Editor because someone needed it, and it can be found in the download page. Thingoids are little Lua scripts with some model, which you can drag and drop into the Editor scene. That way all the features of Editor can be expanded, even to a full game. The Werkspace community is a official and supported part of Leadwerks Engine, it's the same as when you buy CryENGINE, you don't just buy the product but also a service and support from the CryTek people. Official means that at least Josh is obliqued to give an answer (not necessarily a handmade solution though), but in practice many other people will help out too (including Leadwerks Staff people). Official also means that you get access to all the Werkspace pages with loads of forums, assets, tools, examples, and many new coming things. Usually it goes like this, when you ask for support in the forums: 1) Solution already exists and you get a link to the example 2) It's a new feature, but it's useful for everyone, so someone will most probably make it for free (he gets honor points, a new idea from me...) 3) It's a specific feature, and only useful for specific games and apps, so someone might offer to make it for a small fee (1-10€ is quite common, but if it's a bigger job, it may be worth more). Counter services are used perhaps even more often than money (at least from my experience). Especially artists have a good service value (because you can never have enough assets, as each game needs its own too), so if they request something, they can easily pay by making some nice texture or model for the programmer.
  6. Yes, it's possible. See the CreateCustomBuffer() command example in the Wiki. http://www.leadwerks.com/wiki/index.php?title=Buffers#CreateCustomBuffer
  7. FBX to GMF converter comes with the full version, and it works even from Blender (and of course with the outdated programs like 3DSMax and Maya too)
  8. Nice music, and I am very critical towards music since it's my life, and I got gnostic experiences via music too. The foggy road is damn nice too, I hope you can keep up this feeling throughout the game. The GUI click sound seems to be made via beatbox?
  9. Use gamelib It has the AddEntityTag() function which creates a sprite which always faces the camera. And like always, you don't have to use gamelib, you can just copy and modify the code you need from it.
  10. The grouping feature exists and is alive, but it has been used very sparsely, if at all yet. I think it will come to use when more heavily assetted games are being developed, so it's the secret weapon to get maximum FPS. Not even Editor has an interface to access the grouping feature, so it is currently only managed by code. To setup a sky dome, it's really only 3 commands: CreateSphere (or LoadMesh a geosphere mesh), then FlipMesh to make it inside out faces, and then PaintEntity with the texture you want. But talking in code terms to an artists is always not very exact science, so you'd better ask for a code example in the forums, there are hundreds of users who are waiting to answer and help 24/7
  11. LE has groups, which are culled when none of the group members are visible Shadow color comes from the ambient light and/or any close by light sources, unless you use transparent textures, then the shadow color comes also from the texture color The skybox (or dome) is just a simple sphere or box, and you can change the texture and vertex colors on the fly, but that needs a few lines of code
  12. I have tested them with the native demos which come with each physics engine, and looking at the code it seems very simple to get the rigid cube data to be used for mesh positioning. Each physics demo uses somekind of simple OpenGL rendering "engine" (basically just raw OpenGL commands) also, which is then not needed with LE.
  13. When you start to get moire-effects with cubes, you know you have quite a lot of cubes Next, if you want to make a minecraft for LE game, you should also use physics. Newton can handle around 1000 cubes with decent FPS. Bullet can handle about 4000. PhysX can handle about 8000. Havok can handle probably more than PhysX, but I haven't tested that yet (I have tested all the other physics engines though). It's not too hard to use another physics engine with LE, as you can just leave the newton world empty, since you need to call UpdateWorld or UpdateFramework anyway (due to memory eating issues (they might be caused by newton though)). And so you only need to write your own UpdateWorld function which positions all cubes according to the cube position, scale and rotation of Bullet/PhysX/Havok. You don't need anything else than cubes, so it's quite easy.
  14. It doesn't need any programming experience, but you would need a demo program which you can just copy and paste. Basically the FPSdemo.lua which comes with the engine could be used for that, but it needs one or two lines of code to be added to work as standalone exe and not only from Editor. I'm planning to make an Wiki article how to make a distributable standalone game with Lua.
  15. No, the Lua main loop doesn't even take 1 FPS (1 FPS = 15ms) time. But I can try it to be sure.
  16. You can't make standalone games with the trial version. With the full version there are various ways to make an game.exe.
  17. More stats: CreateCube version: initial pos: 10 FPS moving backwards until most cubes are culled away due to view distance: 150 FPS moving backwards until all cubes are culled away due to view distance: 700 FPS CopyEntity version: initial pos: 62 FPS moving backwards until most cubes are culled away due to view distance: 550 FPS moving backwards until all cubes are culled away due to view distance: 700 FPS
  18. 62 FPS is only the starting camera position. When you move around you get FPS like 100, 400, 700, etc... So it's rather a classic level design issue, that the artist has to block polygons from the view (for example by putting a big wall in the scene) if there are too many polygons in one view angle.
  19. I just tested it, and I get 10 FPS with the CreateCube version, and 62 FPS with the CopyEntity version. Here's the CopyEntity version: require "scripts/constants/engine_const.lua" RegisterAbstractPath(".") Graphics(800,600) fw = CreateFramework() camera =fw.main.camera camera:SetPosition(Vec3(0,20,-20)) light = CreateDirectionalLight() light:SetRotation(Vec3(45,45,0)) camRotation=Vec3(0,0,0) MoveMouse(GraphicsWidth()/2,GraphicsHeight()/2) HideMouse(1) prevPos = Vec3(0) cube = {} cube1 = {} cube2 = {} --main function gx=0 gy=0 cub=CreateCube() while KeyHit(KEY_ESCAPE)==0 do if KeyHit (KEY_SPACE)==1 then for a = 0, 50, 1 do for b = 0, 100, 1 do cube[b] = CopyEntity(cub) cube[b]:SetPosition(Vec3(prevPos.x + 1,prevPos.y + 1,prevPos.z)) prevPos = cube[b]:GetPosition() end prevPos = Vec3(0,0,prevPos.z + 2) end prevPos = Vec3(0) for a = 0, 50, 1 do for b = 0, 100, 1 do cube[b] = CopyEntity(cub) cube[b]:SetPosition(Vec3(prevPos.x - 1,prevPos.y + 1,prevPos.z)) prevPos = cube[b]:GetPosition() end prevPos = Vec3(0,0,prevPos.z + 2) end end --Camera look gx=Curve(MouseX()- GraphicsWidth()/2,gx,10) gy=Curve(MouseY()- GraphicsHeight()/2,gy,10) MoveMouse(GraphicsWidth()/2,GraphicsHeight()/2) camRotation.x = camRotation.x+gy /10 camRotation.y = camRotation.y-gx /10 camera:SetRotation(camRotation,1) --keys move = Curve(KeyDown(KEY_W)-KeyDown(KEY_S),move,10) strafe = Curve(KeyDown(KEY_D)-KeyDown(KEY_A),strafe,10) camera:Move(Vec3(strafe ,0,move)) fw:Update() fw:Render() Flip(0) end
  20. I think GPU instancing means that they use the VBO of the GPU, so it's handled completely different by the GPU than a big amount of polys.
  21. There is no overhead in rendering with Lua, it's actually faster than C# because it does unwanted GC all the time for no apparent reason. With 10000 CreateCubes you have to render 10000 times more stuff than with CopyEntity, but since there is some overhead in the instancing on the GPU, it's only 1000 times faster.
  22. Use CopyEntity instead of CreateCube, it should be 1000 times faster.
  23. The old ocean water is found in LE 2.23 The Byoancy commands are listed under the Body commands Lua is fully supported, the Wiki might not have been fully updated yet. Usually the members update the Wiki. You can use SDL directly in LE (drag and drop the SDL.lib into your VS project), that way I have done Joystick and PS3 SixAxis support in my game. It's basically only 3 lines of code (SDLInit, JoystickInit, ReadJoyAxis).
  24. Can you specify more specific what you mean with specifications? There is a feature list, and there is a command reference in the Wiki. I don't think it's needed to explain how things work internally, as they might change anyway. As long the commands do what they are supposed to do, it should be sufficient. What could be done however, is a list of known limits. I made something similar earlier, but about key features: http://siipi.com/public/mika.nsf/blogs/2AAC3EECC888AC57C22575F7004ADC16 The lake water waves are physics based, so all objects sway on the water, although it might be solely the boyancy effect too. However, in the old ocean water objects were also moved by the waves, which was also physics based. You could probably use the old ocean water still, or wait until you get the new ocean water in LE3.
×
×
  • Create New...