Jump to content

Phodex Games

  • Content Count

  • Joined

  • Last visited

Everything posted by Phodex Games

  1. Well, I think I didnt 100% get what you explained, but the problem is how to just draw part of the map. So I have my whole map as an image file. But Leadwerks just offer the "DrawImage" function, how should I hide some part of the map? With this I should apply the "scrolling" of the minimap, that the map knows where the player currently is?
  2. Yes, but I think you dont have that much of drawn objects at the same time, this could maybe appear on a super huge open world map, and for a minimap you can just show nearby object. That question is how to make my map look like a minimap, and how to just show a part of the map. I dont know how this should be possible...
  3. I am not 100% sure if this is a bug, but the Transform:Point() function has a weird behavior for me. If it is my mistake then I am sorry and would also be glad if it can be sovled easily. This is the code I have: local direction = Transform:Point(0, 0, 10, self.entity:FindChild(0), nil) I use it for an NPC, that he is able to pick objects in the world. But my code didnt work so I tried to find the problem. After placing a small box at the "direction" vector I found out that it isnt at the transformed point, other than this it remains at the entity it should be transformed to (the "self.entity:FindChild(0)"). After that I tired to make the "Transform" function work seperatly from my npc, for testing purpose. I created a pivot and an other pivot attached to the first one. The parent pivot has the following script: function Script:Start() local direction = Transform:Point(0, 0, 10, self.entity:GetChild(0), nil) local model = Model:Box(0.05,0.05, 0.05) model:SetPosition(direction) end The direction seems to be the same as the entitys position, no matter what Vector I set in the "Transform" function (for example: local direction = Transform:Point(964, 0, 66, self.entity:GetChild(0), nil)). It does not move, but if I put the exact same code, and pivots into another project it works?? And the raycasting of my player, which is in the same scene and project, works as well. However, I also tried it creating a new map in my project but doesnt seem to work. The player has the following code for the direction: local direction = Transform:Point(0, 0, self.useDistance, self.entity:GetChild(0), nil) --self.entity:GetChild(0) is the "player eye" a pivot infront of the player Sorry if it is my fault, but I just dont know why it doesnt work, without reason??? EDIT: After some more testing I found out that setting the Transform option to the following: Transform:Point(Vec3(0, 0, 999999), self.entity:GetChild(0), nil) just works. The local space of the object seems to be extemley "sensitive". But why is this? EDIT2 (Solution): After like hours of finding the error I found it -.- I was because my npc models scale was 0.001 and not 1.0, I didnt collapsed the model in the model editor. And the Eye pivots scale was 0.001 as well. I am not sure if this is a bug or not? But I guess the local position of an object should not change, depending of its scale or am I wrong???
  4. Does anybody else has an idea for an minimap/map mechanic? And what do you think of my method?
  5. Yes I know this method as well. But it is much more ressource heavy because you need to render everything twice. I also dont like that the minimap looks like ingame graphic. You also have the disadvantage that you only can create square maps. I would like to have my minimap in a specific, editable design.
  6. Hi community, I would like to talk about how to create a minimap. I made myself some thoughts latley how to realise a minimap. And I would like to collect some useful toughts here. I actually found a solution, so tell me what you think of it. It currently just works as a normal map, not as a minimap... Maybe it is very complicated what I do but thats why I created this post. Ok so I will start explaining. First of all I took a screenshot from the topview of my map. Out of this I made a simple Map, by exporting the shot to gimp or something similar. The important thing is that the map has the same propotions than the real map size. The main idea is to grab the players 3D Position and convert it to a 2D position fitting to the map size and displaying a rect at the converted 2D Position. The conversion works like this: I tell my script the real map size (you can find it out in the viewports) and the pixel size of my map. Because my map and the real map size are propotional, I can calculate a "minimap multiplier" by doing this calculation: real map size X / map size X = multiplier. Thats the first part of the puzzle I need. Second I would like to know where to draw the player start position on the minimap. Because I have nothing I can relate to, I create a "minimap origin" pivot in the scene setting it to the zero-point of our map (not the origin of the viewport!!). To convert the player start position to a 2D Vector we do the following trick explained by this code: self.playerPos = self.entity:GetPosition() local myPos = self.mapOrigin:GetPosition() self.mapOrigin:SetPosition(myPos.x, self.playerPos.y, self.playerPos.z) self.playerStartPos.x = self.mapOrigin:GetDistance(self.entity:GetParent()) self.mapOrigin:SetPosition(self.playerPos.x, self.playerPos.y, myPos.z) self.playerStartPos.y = self.mapOrigin:GetDistance(self.entity:GetParent()) self.mapOrigin:SetPosition(myPos) As you can see I move the map Origin to get the correct X and Y values for the needed 2D Vector. If you didnt forget to also tell the script where the map origin of the 2D Map is in screen space, then you can now draw the player start position correctly on your map. To calculate the movement of the player, better said his current position I do the following: self.playerOffset = Vec2((playerStartPos.x - currentPlayerPos.x) * self.minimapMultiplier, (currentPlayerPos.z - playerStartPos.z) * self.minimapMultiplier) Now you can correctly draw a rect on your map on the correct player position: local minimapOriginX = context:GetWidth() * 0.5 - (self.mapSize.x / 2) + 50 local minimapOriginY = context:GetHeight() * 0.5 + (self.mapSize.y / 2) - 10 local playerX = (minimapOriginX + (playerStartPos.x * self.minimapMultiplier) + self.playerOffset.x) local playerY = (minimapOriginY - (playerStartPos.y * self.minimapMultiplier) + self.playerOffset.y) context:SetColor(Vec4(0,0,0,255)) context:DrawRect(playerX, playerY, 10, 10) Tell me what you think of this method? If you have ideas how to improve my script just let me know. After I was recieving some help from the community I wanted to give something back. However I you think this is a very bad solution, I would be glad to know what other methods there are, I am just an amateur coder
  7. Ah ok, I previously tried an IO function and was wondering why it didnt work. Thanks to both of you I will try it it now.
  8. I know that my code was wrong, it was just for visualization purpose. However the code you sent me, didnt work, it says stream is a nil value. That was what I wrote before, FileSystem:WriteFile() doesnt seem to work... However System:SetProperty() works fine and thats more what I searched for, but I would also like to know how to save new file, because I maybe would like to have various save files in the future...
  9. Hello, Because I made myself some thoughts about a saving mechanic for my current project, I searched the web and especially the Leadwerks site for how to save simple game data, like the players health or position. The only kind of useful thing I found which works for LUA was this: http://www.leadwerks.com/werkspace/topic/2103-save-data-to-lua-syntax-as-textcompressed/page__hl__save+data and this: http://www.leadwerks.com/werkspace/topic/1853-howto-using-lua-script-as-data-file/ I actually was able to create a data file and read it into my code with "dofile". However I didnt find out how to create/save a file with lua yet. I searched the Leadwerks API and found the Stream and FileSystem Class. So I tried the following code: function Script:Start() local gamedata = FileSystem:WriteFile("Test.txt") end It didnt work, and I also dont know how it works. Where has the file been created? I searched my PC and the Projectsfolder but couldnt find such a file and I also dont get any kind of error message. I guess this is completely wrong, but I was just playing around, because I don't have that much experience with Lua and Leadwerks. The file you can download in the first thread I posted ("TStoreData.lua") doesnt work anymore and I cant find where he saves data. That you clearly undersand what I want. I would like to do something like this: function Script:Start() local gamedata = {} gamedata.playerHealth = 100 gamedata.playerWeapon = "Sword" gamedata.playerPos = Vec3(10, 100, 53) FileSystem:WriteFile("gamedata.lua", gamedata) end This is just some code that you know what I mean. I know this doesnt work xD. So could you please help me out a little bit . PS.: I kind of understood what AndyGFX wrote in his post, I just couldnt find anything how to save a file.
  10. Thank you Rick it worked very well just tested it out.
  11. I will give that a try. I also could try to get some scripting logic out of Hankinators UI after downloading it. Thank you guys. I will reply again if I tried it out.
  12. Hi, I was wondering that I couldn't find any tutorial about creating simple UI elements. I searched the web and the forum for a while, and because I couldnt find anything useful I started this thread. The problem is I dont get how to check whether my mouse cursor is hovering over an element or not. To give you an more exact example: I just finished a simple inventory generation system where you can choose how many columns and slots it has and some other stuff. This works very well. However now I want to implement that, if you click on one of the items collected and shown in the inventory, that they get used/activated. The method I know from previous game developing experience is that you cast a ray from your camera origin through the mouse position and grab the UI elements which get intersected. My questions so far: Info: I only code in LUA. - How to check if my mouse hovers an context object (for example an image drawn with context:DrawImage()) - How to unlock my mouse so that I can move it around freely You would do me a great favor, if you tell me how this works in Leadwerks. Phoenix
  13. UPDATE: I merged all the models and made a single house model and it runs waaays smoother now. I am not done with the texturing yet, but I think the merging helped a lot. I attached a pic with much more houses than before and runs with smooth 60 FPS even in debug mode, thats awesome.
  14. Ok thanks for all the help I think this will fix my problem. I once read that CSG brushes are better for performance than Models. Thats why I created a mixture of both. CSG brushes and some props I add to the Brushes. Well will try that out. I actually prefer to make a house just as a single model, this makes it easier for me . Thank you all again. P.S.: Stupid Question: How to disable Vsync in Leadwerks?
  15. @Josh That is what my log says: Syncing Workshop Items... Initializing OpenGL4 graphics driver... OpenGL version 450 GLSL version 450 Device: GeForce GTX 960/PCIe/SSE2 So I think my GTX 960 is the active graphic device. I think what Crazycarpet wrote fixed my problem. I am not 100 % sure if the performance is alright now. In the first 10 - 20 seconds after I run my project I still get some fps drops and lagging but after a while I have constant 60 FPS. This is great , but I still am a bit sceptic. Maybe my eyes fool me but I seem to see micro framedrops, this may happen because my project was lagging all the time and I just think it lags... Well the future will show, when I added more assets and build a real small town. But what was the exact problem now?? I will also post a link where you can download my project, containing my "city". Because I would like to see if it runs smooth on other systems aswell now. Grab it here: https://www.dropbox.com/s/kp5079mxejfmwse/ShareProject.zip?dl=0 P.S.: I dont know if it is normal but in Debug mode I only get 20 - 30 FPS. The 60 FPS I was talking about are in normal Run mode.
  16. First of all thank you for your replies . So after my last post I was able to fix some issues myself, but I still have problems with the performance. In my playerscript the multisamlpe mode was set to 16, decreasing it to 1 fixed my problem with the high video memory usage. Now I just have 70+ MB and it also improved my performance. With a single house I get my 60 FPS. But If I build, like 16 houses, I get massive FPS drops, lags an bad performance at all . I also tried to decrease my poly count but this didnt brought a improvement aswell. I will add some more screenshots. @cassius I have a maximum of 10 active pointlights in the town scene. My textures for the brushes are 512 x 512 and most textures for models are 1024 x 1024. @Thirsty Panther Thank you will give that a try if I have some time. @Josh I will create a project I can share with the others, but it can take a few days. @reepblue Thank you aswell will take a look at it So that is my current state. Furthermore I want to ask what the limitations of leadwerks are. Maybe you can tell me Josh. I you do everything right, are you able to build a city as big as in games like Skyrim or Oblivion? Whats the limit? I am very interested in this how capable Leadwerks is. Thank you all for your help.
  17. Hi there, I am wondering if I am doing something wrong, or if I expect too much from Leadwerks... I built a small medivial house, just to play around. Soon I recognized that I got trouble with perfromance, very low FPS in Debug and normal run mode. So I started testing Leadwerks Performance a bit. I dont have experience with other engines, Leadwerks is the first I get my hands on. Well to move on, I rebuilt the whole house, creating models with less polygons and I also disabled most of the shadows. I posted a view screenshots where you can see my poly count and fps rate. I dont really understand why its lagging. Even if I just place a single house I get only 30 FPS. Ok the textures need some optimization but about 500 MB memory usage in summary isnt that much, even if its much for those few houses. I am a bit disappointed. How should I ever create a livley city when the performance is that bad? I searched the web for what poly counts are common and found out that 10k polygons are ok for a detailed character, for a prop its suggested to be 500 -1.5k. So 7k for a whole house really isnt much. So am I doing something wrong? Because I cannot believe Leadwerks performance is that bad. I need to add that if I decrease the resolution of my project to standart (something like 1024 x 768) it runs smoother, but for the city map I still get FPS drops and a maximum of 30 - 40 FPS which is not optimal. But still it needs to run smooth on a 1920 x 1080 resolution! I also want to add that If I activate static shadows for all the props build around the house (Planks, Lamp, Windows, etc.) the framerate is like hell. I dont think I can do something so wrong with just a single house and some textures, but I am glad if I am wrong A few more Infos: - I dont use any extra shaders - there are two point lights per house - I set the screen resolution to 1920 x 1080 - even if I export the game and run it I get 20 - 30 FPS (for the "city" map) - My specs: Intel Core i5-3570K CPU @ 3.40 GHz, 8 GB Ram, Windows 7 64 Bit, Nvidia Geforce GTX 960 4G (4 GB Vram) - I use specular and normalmaps for all textures - The houses dont have an interior I really appreciate if you are able to help me. If you need some more info please tell me. I just want to make a awesome game...
  • Create New...