Jump to content

DudeAwesome

Members
  • Posts

    541
  • Joined

  • Last visited

Posts posted by DudeAwesome

  1. I created a Light with

     

    self.light = DirectionalLight:Create()

    self.light:SetRotation(25,25,0)

     

     

    how can I increase the quality of the shadows the light drop behind models? my shadows looks very bad. I also have a simple DaynNight System that just rotate my Lights x and y in the mainloop like

     

     

    function App:UpdateDaynNight()

    self.lightx = (self.lightx+0.009) % 360

    self.lighty = (self.lighty+0.005) % 360

    self.light:SetRotation(self.lightx, self.lighty, self.lightz)

    end

     

     

    but my shadows are not smooth. they are shaking a little bit

     

     

     

    https://www.dropbox.com/s/p2ftgo6jhves3j5/Screenshot%202014-01-16%2000.39.26.png

  2. It would be awesome when the engine allow us to prepare and change the map when we want to do it, to create some kind of background loading. (when using threads)

     

    For now a map will be loaded and changed with

     

    Map:Load()

     

    thats not optimal in my opinion because the map will be prepared and loaded with one function.

     

     

     

    But

     

    I would like to have a api function that allow me to trigger a prepareLoad() function that stores the mapfile in the RAM and a api function like Map:PushChangeMap() that allow me to do the mapload once the map was prepared.

     

     

    That would be great so we can use a CollisionTrigger (Like the last room in the Level) to do a Map:PrepareLoad(). And the Player dont know that the map is loaded in the Background. With an other CollisionTrigger (Like the last door in the room that give access to next level) I wanna push the Mapload (obviously the map was prepared before) with Map:PushChangeMap(). I think this would increase the mapload a lot and give the player an other game experience than always see a loading screen.

    • Upvote 2
  3. really cant wait for c++ and thread support and writing a nice while loading animation smile.png

     

    is it possible to change the map and control the point of Loading/Changing?

     

    like:

     

    -pushing prepare load by a trigger -> map will be loaded into RAM (but not changed only prepared)

     

    -pushing changemap by a trigger ->map is already in RAM so it will do a fast level switch

     

     

    when I use threads for it the player dont have to wait that long because there is a prepare function that only load the map triggered by a collision (some area near the end of the level) and when I reach the end of the level it gives an OK to change the map.

     

     

    in the LE3 API the Map:Load function will do both. loading and changing.

    is there a way or maybe some hope to split this?

     

    I would like to code a changelevel function that do everything in the background because I dont like normal loadingscreens^^

  4. ok I agree. I dont know something like content culling but how can the compiler detect something like this:

     

    When I have a Textbox where I have to type in the Modelname as String? (sure its a bad coding technique but I think the compiler cant know it because there is no relationship or reference)

     

     

     

    $model = ""; //string

    function getModelNameFromTextInputBox(){ //function returns my string from the textbox where I write the String in runtime (like in a browser textbox)

     

    return ValueFromTheTextBox;

    }

     

    $model = getModelNameFromTextInputBox(); // e.g. "test.mdl"

     

    Model:Load(getModelNameFromTextInputBox()); //load my model "test.mdl"

  5. hey rick.

     

    in the same time I wrote also a mapload script. The Mapload works nice when I call the mapload from the App:Start() or the App:Loop() my Idea was to use another lua script to Push that mapload but it will not work when mycollisiontrigger will push the mapload. There is a error msg like:

     

    attempt to index global 'Script' (a nil value)

     

     

    this is my app.lua

     

    --This function will be called once when the program starts
    function App:Start()
    --screensettings
    self.screenWidth = 600    --x
    self.screenHeight= 400	 --y
    self.contextMsaa = 0    --msaa
    --mapsettings
    self.startMap = "level_01.map" -- map which will be loaded first
    self.currentMap = ""    -- currentmap which is loaded
    
    --Create a window
    self.window=Window:Create("MyTestArea", 0, 0, App:getScreenWidth(), App:getScreenHeight(), Window.Titlebar)
    self.window:HideMouse()
    
    --Create the graphics context
    self.context=Context:Create(self.window, App:getContextMsaa())
    if self.context==nil then return false end
    
    --Create a world
    self.world=World:Create()
    
    -- load startmap
    App:LoadMap(self.startMap)
    return true
    end
    --This is our main program loop and will be called continuously until the program ends
    function App:Loop()
    
    --If window has been closed, end the program
    if self.window:Closed() or self.window:KeyDown(Key.Escape) then return false end
    
    --mapchangetest
    if self.window:KeyDown(Key.H) then
    App:LoadMap("level_02.map")
    end
    --Update the app timing
    Time:Update()
    
    --Update the world
    self.world:Update()
    
    --Render the world
    self.world:Render()
    --Render statistics
    self.context:SetBlendMode(Blend.Alpha)
    if DEBUG then
     self.context:SetColor(1,0,0,1)
     self.context:DrawText("DEBUG MODE",2,2)
     self.context:SetColor(1,1,1,1)
     self.context:DrawText("Map: "..App:getCurrentMap(),2,22)
     self.context:DrawText(App:getScreenWidth() .." x " .. App:getScreenHeight() .. " - msaa: " ..App:getContextMsaa(),2,42)
     self.context:DrawText("Memory usage: "..System:GetMemoryUsage(),2,62)
     self.context:SetColor(1,1,1,1)
     self.context:DrawStats(2,102)
     self.context:SetBlendMode(Blend.Solid)
    else
     self.context:SetColor(1,1,1,1)
     self.context:DrawText("FPS: "..Math:Round(Time:UPS()),2,2)
    end
    
    --Refresh the screen
    self.context:Sync(false)
    
    --Returning true tells the main program to keep looping
    return true
    end
    --this function will load a mapfile located in the Maps folder
    function App:LoadMap(_mapfile)
    --loading msg
    self.context:SetBlendMode(Blend.Alpha)
    self.context:SetColor(1,1,1,1)
    self.context:DrawText("Loading...",App:getScreenWidth()/2, App:getScreenHeight()/2)
    self.context:Sync(false)
    
    self.world:Release()
    self.world=World:Create()
    --Load map
    local mapfile = System:GetProperty("map","Maps/".. _mapfile)
    if Map:Load(mapfile)==false then
     Debug:Error("cant find or load mapfile: Maps/".. _mapfile)
     return false
    else
     System:Print(_mapfile .. " successful loaded!")
    
     App:setCurrentMap(_mapfile)
     return true
    end
    end
    
    --Getter/Setter functions
    function App:getScreenWidth()
    return self.screenWidth
    end
    function App:getScreenHeight()
    return self.screenHeight
    end
    function App:getCurrentMap()
    return self.currentMap
    end
    function App:setCurrentMap(_mapfile)
     self.currentMap = _mapfile
    end
    function App:getContextMsaa()
    return self.contextMsaa
    end
    

     

     

     

    this is my trigger

     

    --[[
    This script will make any entity act as a collision trigger. It works best when you set the
    entity's collision type to "Trigger". This will continuously detect collisions without causing
    any physical reaction.
    ]]--
    Script.nextMap = "" --path "next Map" "Map (*.map):map|Maps"
    function Script:Start()
    self.enabled=true
    end
    function Script:Collision(entity, position, normal, speed)
    if self.enabled then
    self.component:CallOutputs("Collision")
    end
    System:Print("MAPLOAD PUSH")
    App:LoadMap(Script.nextMap)
    end
    function Script:Enable()--in
    if self.enabled==false then
    self.enabled=true
    self:CallOutputs("Enable")
    end
    end
    function Script:Disable()--in
    if self.enabled then
    self.enabled=false
    self:CallOutputs("Disable")
    end
    end
    

     

    is this not possible cause I call it in the level? I dont like that "always checking to change level option"

  6. When I create models in Code it will be something like:

     

    cube = new Cube(3)

     

    it will create for e.g. a cube with n=3 and I can use cube.setSomething() to use a private function of the Object Cube()

     

     

    but how I can access models (like a door) that Ive created in the editor?

     

     

    its a little bit confusing. when I create something in the editor, I have no code from it.

     

    When I create a cube with some lines of code. I see it in the GameRun but not in the Editor.

  7. Everything what is into your project folder will be compiled I guess. When you dont need some assets in your game than you should not integrate them. I think an engine couldnt know which assets the software will be using @runtime when the code will be compiled.

     

    When I have a game and there is a choosePlayerModel() function (like male/female) than you need 2 models but only 1 is really used. The engine doesnt know which model you need at runtime so it have to compile the worst case -> compile everything.

×
×
  • Create New...