Jump to content

VeTaL

Members
  • Posts

    1,272
  • Joined

  • Last visited

Posts posted by VeTaL

  1. Hey, guys!
    It was like 5 or 6 years since i had last visited this forum. I'm super happy to see it healthy and growing :) 
    I've also picked Leadwerks 4.4 on Steam (the last version i had was 3.something? Or probably 4.0 beta).

    I also noted that Leadwers got a marketplace - that's amazing! Currently i have a small startup, we're focusing on producing sounds - can that be interesting for our community?

    https://www.assetstore.unity3d.com/en/#!/search/page=1/sortby=relevance/query=skaia

    PS: also, i try to update my email in the profile, but i'm getting error with Error code: EX0. Is there a dedicated support, or is Josh still fixing all the things by himself? :P

  2. Well, nica idea, Rick.. but actually, unit selection is not needed for gameplay, as i'm counting on indirect control.

    I planned to show some historical pages from wiki, while clicking on bots.

     

    Looking like i need either to play with scale (make peoples almost the same size as building, like in Majesty) and make large bounding boxes/spheres, or drop this idea with clicking

    1323082773-clip-75kb.jpg

    red is the size of the unit, blue is the size of the door :rolleyes:

  3. Well, actually i found that clicking exactly on entities from far distances is not too useable (like here).

    Its hard to click exactly on the tree or on solider (what is even harder, because bots are smaller and they are moving).

     

    So, i got an idea of creation kinda invisible sphere around each entity, so it would be easier for user to select something. But at first, i'm wondering if there already exists working solution :rolleyes:

  4. Just a fast question.

    Is there a simple way to make bounding box tracing?

     

    I know, i can create spheres/bodies, parent them to entities and set trace filter to catch them... but maybe it exists something like AdvancedTrace, which has a parameter for bounding box tracing?

  5. Well.. i didnt test exactly that software yet, but i had some experience with Quest 3d. I think, its horrbile - to represent code as some visual components. It is kinda simple and funny from the very begining, but as project grows - it transfers nto nightmare.

     

    Thats only mine opinion and only about "visual programming" :)

    I'll check TiViPE

  6. 1322087737-clip-45kb.jpg

    Version 0.45

     

    Added "thoughts"

    All buttons on form works now

    Improved AI: now bots should never be in water or far from building.

     

     

    Sharing experience:

    In previous version, in case of interruption, bot turned at related random angle. Sometimes some sh*t happened and rotation function called twice or more times. So, but turns left, then once more time left, then - right. In worst case, he continued running from building.

    Now i understood, that i need to give bot not related, but absolute angle. Now it is working in such way:

    before:
    TurnAtAngle(Rnd(80, 110) * randomInt)
    
    now:
    TurnToAngle(GetPlayerBulidingAngle() + Rnd(60) - 30)
    
    
    Method GetPlayerBulidingAngle:Int()
    closestPlayersBuilding = GetClosestPlayersBuildingModel(model)
    PointEntity(scanPivot, closestPlayersBuilding)
    Local retVec:Tvec3 = EntityRotation(scanPivot, 1)
    DebugLog "[!!!] Returning angle: " + retVec.y
    Return retVec.y
    EndMethod
    

     

    So, i'm pointing scanner (anyway he do nothing except raytracing down, it is not depends on scanner's rotation) at players building, getting it new angle and pointing player that direction +- 30 degrees. That looks mush better.

     

    Just replace exe file.

     

    Edited: found out, why some strings are still shown on the screen with the strange behavior: some bots are falling from terrain.

    0.45.zip

  7. Okay, so... Serious game - is a game, where player learn/study something.

    The main problem is to combine gameplay and learning in such a way, when player actually doesn't feel that he is stydying in common way.

     

    Classic examples are different realistic game simulators.

    Quite good example (as for me) is "Call of Duty: Black Ops" - after playing this common FPS, i went to wiki and read lot of stuff about Cold War - because of this game. So, actually, it can be counted as Serious game.

    Also, Civilisation is quite nice example: they have their own civilipedia to provide some historical information.

     

    Nowadays, serious games are very potential: lots of schools/colledges/universities are trying to combine learnin with playing and get successfull results.

     

    This project is just "unfinished proof-of-concept". Gameplay is planned to be a "realtime historical strategy with undirect control"(Settlers/Majesty). As the main idea, I took nice small game, Breaking The Tower, which was written by Notch (hello, minecraft funs) for a contest in two days.

    My thoughts was "game with undirect control are quite slow" -> "if i merge slow gameplay with some kind of civilopedia, that would give a player some time on learning" -> "why not to use wiki?" -> "why not to use LE+Blitzmax, as it provides render internet pages on the same form, where game can be rendered"

     

    I spent all previous weekend on this project (+ some additional evenings... actually, not too much time: also, i opened about a half of map in Skyrim :) )

    This is what i have now:

    1321977572-clip-117kb.jpg

     

    The main questions to all of the guys, who would decide to test it:

    - fps. Btw, I was impressed by fps increasing in release version: i had about 40 fps in debug version and about 100 fps in release. There are 20 bots on level now.

    - UI. Do you have any ideas/recommendations with UI placement? I also tried to place wiki undre the render window, but it also seems to be bad.

    - Camera control. Any ideas are wellcome. I'm not actually satisfied with this camera. Of cource, it needs collision detection, but it proof-of-concept. I'm not satisfied by camera's behaviour: its hard to make some accurate movements when the camera is close to central pivot.

    - AI. Bots are just running through the island in random direction. But they have 3 interrupters: by time (after Rnd(80, 120) they change their direction), by distance from main player's building, and by water (if the scanner "feels" water, they should turn back)

    - Explorer component. What can be done with that nasty error?

     

     

    The main logic function is

    Method UpdateLogic()
    UpdateWalkers()
    timer.Update()
    
    AvoidWater() ' if pick.y < 3, set isInterrupted =1, interruptionDetails = pick.y
    AvoidLost() ' if distance to building is > 30, set isInterrupted =2, interruptionDetails  = dist
    
    If timer.IsRinging()
    	isInterrupted = 2 ' time to change direction, once per Rnd(80, 120) 
    End If
    
    If (isInterrupted > 0)
    
            rndRes = Rnd(0, 2) ' generates 0 or 1
            randomInt:Int = (rndRes * 2) - 1 ' generates -1 or 1
    
    	Select isInterrupted
    		Case 1 'water ahead
    			TurnAtAngle(Rnd(80, 110) * randomInt)
    			DebugLog "[@] Interruption by water(1). Scanner height is " + interruptionDetails
    		Case 2 'timer interruption				
    			TurnAtAngle(Rnd(45, 135))
    			DebugLog "[@] Interruption by timer(2)."
    		Case 3 'too far from buildings
    			TurnAtAngle(Rnd(160, 200))
    			DebugLog "[@] Interruption by distance(3). Dist is " + interruptionDetails
    	End Select
    
    	isInterrupted = 0
    EndIf
    End Method
    

  8. Looking like equations of vector are equation of their adresses..

    pickFrom = EntityPosition(scanPivot, True)
    pickFrom.y:-1
    
    pickTo = pickFrom
    pickTo.y:-20
    

    DebugLog:pickFrom pos: 7.00000000 0.776861191 101.641525

    DebugLog: pickTo pos: 7.00000000 0.776861191 101.641525

    DebugLog:pickFrom pos: 7.00000000 0.698457718 101.693985

    DebugLog: pickTo pos: 7.00000000 0.698457718 101.693985

     

    Solution is simple:

    pickFrom = EntityPosition(scanPivot, True)
    pickFrom.y:-1	
    
    pickTo = EntityPosition(scanPivot, True)
    pickTo.y:-21
    

    DebugLog:pickFrom pos: 7.00000000 21.1097164 101.152794

    DebugLog: pickTo pos: 7.00000000 1.10971642 101.152794

    DebugLog:pickFrom pos: 7.00000000 21.1096268 101.199188

    DebugLog: pickTo pos: 7.00000000 1.10962677 101.199188

  9. Okay, throwing out TNodeWalker.UpdateWalkersList()

     

    Trying to call this one returns compilation error

    Repeat
    ***
    For n:TNodeWalker = EachIn nodesWalkers
           n.UpdateWalkers()
    Next
    ***
    

     

     

    This compiles, but output is still wrong

    Repeat
    ***
    For n:TNodeWalker = EachIn TNodeWalker.nodesWalkers
    n.UpdateWalkers()
    Next
    ***
    

     

    PS: nodesWalkers is global list

    Type TNodeWalker Extends TNode
    Global nodesWalkers:TList = CreateList()
    

  10. Faced the similar problem as Function/Method - maybe i'm missing something again?

     

    1) I have a type/class of walker, it has a field scanPivot

    Type TNodeWalker Extends TNode
    
    Global nodesWalkers:TList = CreateList()
    Field scanPivot:TEntity
    

     

    TNode is base class, it consists of mesh and nodes list... but i decided to create also additional list nodesWalkers to search walkers faster

     

    2) In constructor, i create scanner node

    ListAddLast(nodesWalkers, Self)
    
    scanPivot = CreateCube()
    Local scanPos:TVec3 = EntityPosition(mesh)
    scanPos.y:+16
    scanPos.z:-10
    PositionEntity(scanPivot, scanPos)
    EntityParent(scanPivot, mesh)
    

     

    Actually, at this point everything works fine, as planned: bot running forward, scanner flys before bot

    1321908804-clip-23kb.jpg

     

    Now, i'm calling from the main loop

    Repeat
    ***
    TNodeWalker.UpdateWalkersList()
    ***
    

     

    This function is declared inside TNodeWalker and it is running throguh all walkers and call their UpdateWalkers()

    Function UpdateWalkersList()
    For n:TNodeWalker = EachIn nodesWalkers
    	n.UpdateWalkers()
    Next
    EndFunction
    

     

    in UpdateWalkers() i have:

    Method UpdateWalkers()
    pickFrom = EntityPosition(scanPivot)
    DebugLog "scanPivot pos: " + pickFrom.x + " " + pickFrom.y + " " + pickFrom.z
    EndMethod
    

     

    The problem is that debugger shows

    DebugLog:scanPivot pos: 0.000000000 -5.00000000 -10.0000000

    DebugLog:scanPivot pos: 0.000000000 -5.00000000 -10.0000000

    DebugLog:scanPivot pos: 0.000000000 -5.00000000 -10.0000000

    DebugLog:scanPivot pos: 0.000000000 -5.00000000 -10.0000000

    DebugLog:scanPivot pos: 0.000000000 -5.00000000 -10.0000000

    DebugLog:scanPivot pos: 0.000000000 -5.00000000 -10.0000000

    DebugLog:scanPivot pos: 0.000000000 -5.00000000 -10.0000000

     

    So, looking like method cannot access class field ?

  11. SendEntityMessage(mesh, "Jump")
    SendEntityMessage(mesh, "SetMovement=MOVE_FORWARD")
    

    Now he is moving forward and jumping :)

     

    SendEntityMessage(mesh, "Jump")
    SendEntityMessage(mesh, "SetMovement=MOVE_FORWARD")
    SendEntityMessage(mesh, "SetHeading=" + angle)
    angle:+1
    

    Running and jumping and turning left :)

  12. Well, looking like yes

     

    While Not KeyHit(KEY_ESCAPE)
    
    AddBodyForce body,vec3(KeyDown(KEY_RIGHT)-KeyDown(KEY_LEFT),0,KeyDown(KEY_UP)-KeyDown(KEY_DOWN))
    
    UpdateWorld()
    RenderWorld()
    DrawText "Use the arrow keys to move the body.",0,0
    Flip()	
    Wend
    

     

    But afaik, in pure Newton, it can be called only from callbacks.

  13. Omg... Sorry to hear that. Try to open your src file with another text editor.

    Well, i highly recommend to use some kind of version control software. Now i'm using Hg for my small project and i'm quite happy.

    1321864588-clip-47kb.png

  14. Got an error "you need Glide Plus to generate own databases" while selecting leadwerks module.

    Anyway, tried to "Document modules" after it and restarted Blide - still no effect.

     

    But its nice to know that it is theoretically possible, thanks :)

  15. Well, intellisense doesnt understand LE syntax, but maybe its possible in settings.

    But the posibility of selecting entry script and running project by pressing F5 is priceless! :)

     

     

    Looking like its a part of a plan: to keep MaxIde so ugly, that every person, who would see Blide after MaxIde, would run and buy Blide :)

×
×
  • Create New...