Thanks To Blitzmax And Leadwerks

Miscellaneous Forums/General Discussion/Thanks To Blitzmax And Leadwerks

Thanks to Leadwerks and Blitzmax,

Just 1 year ago i use my computer only to create few 2d games (bad too), just 1 month later i decide to create a 3d game and i start working with blitz3d, i thinked it was just a beginning, now i use blitzmax and leadwerks, i had some problems for the first month (and i still have a few problems just now), i was worried about all the negative topics of this engine in blitz web site, but i bought it..

After several days of panic (many things doesn't work..), i start to thinking that maybe i am too noob for this engine.. Now i reach like 70% of my conversion work (from blitz3d to leadwerks) and i am really exalted.. I am truly happy with this choosen.

I am not tryng to say you "Hey you buy this program!", but i need to defend this "MY" engine from all the negative threads.

Yes maybe Josh has no many "patiente" (sorry Josh, don't ban me! ), but he is a great worker, if something wrong he correct it in a few days.. Don't you trust me? Than watch here
http://forum.leadwerks.com/viewforum.php?f=15
Here you can see in how many days he fix the problems

I read somewhere that there is a lack of support, i need to say my first questions was ignored but reading in the forum i find my answer and after that Lumorja, Josh, Moose o Death (i hope this is correct!) give me many suggestion and they help me a lot.. Thanks to you.

I don't think shader 3.0 (minimal request) it will a big problem (i mean for me is not a problem) i think to finish my project in 1 year and with any probability in this arch of time shader 3.0 it will the a normal thing..

The main problem is still the uncompatibility with consolle but for the moment i'll be happy to finish just a 3d game.. And i think Josh will do something about this problem

If you have some question about this engine just ask, i'll say only the truth about it.

I want finish it giving this link (my first in game image)
http://forum.leadwerks.com/viewtopic.php?f=6&t=292

And say a big Thanks to Leadwers and Blitzmax to gave me the possibility to live in a dream!
Thanks

Aza

Ps. Sorry for my english!! ( i still Italian)

None of your links go anywhere.

Opps... I'll edit it :)

I don't think shader 3.0 (minimal request) it will a big problem (i mean for me is not a problem) i think to finish my project in 1 year and with any probability in this arch of time shader 3.0 it will the a normal thing..
I'd want to be assured of a decent fall-back for low-spec machines before I got interested, to be honest, but the latest vids are most impressive.

I'm waiting patiently for CSG commands :P

CSG? what is it?

Aza

I don't think shader 3.0 (minimal request) it will a big problem
It won't be a problem. Vista requires a 2.0 card. 3.0 has been around for a while now and anybody in the target audience for a game made with the Leadwerks engine would definitely have a 3.0 capable graphics card.

CSG? what is it?

http://en.wikipedia.org/wiki/Constructive_solid_geometry

Do you understand? I am Italian we are famous to translate every word (names too).. Than if you use short letter i can't understand what is it!!
:)

Aza

By the way, the first link at the bottom of that wikipedia is a Leadwerks PDF :) I just noticed :P

http://www.leadwerks.com/files/csg.pdf

Could it be that I am misinformed and that Leadwerks engine supports CSG in realtime in the engine?

I don't know i'll ask to Josh and i'll post the answer here.

Aza

Yup, Leadwerks/Josh is a very talented guy, as many have said in the past. Good to see his engine is coming along well.

..Leadwerks looking nice, and i am thinking to have that engine too, in my collection..however, before that I would like to see what Mark going to fire out...

"I'd want to be assured of a decent fall-back for low-spec machines..."

Do low spec machines/users even download, play, etc, 3D games? Seems to me those are not your target demographic.

Leadwerks engine doesn't support CSG, i am sorry.

Aza

Do low spec machines/users even download, play, etc, 3D games? Seems to me those are not your target demographic.

3D games is not a target demographic. There are many demographics within 3D games, and some of them will include low spec machines and some don't. However, broadly speaking, yes, many, many people with low spec machines play 3D games. I wouldn't have gone to so much trouble to make a fixed-function fallback for my current game if people with low spec machines weren't playing my previous games.

EDIT: To be fair to the developer of the Leadwerks engine, it is bloody hard work though, so I can understand why anyone wouldn't want to do it.

@Azaratur There is no need to use CSG in the game engine, as everything is real-time and dynamic. CSG is only good for modelling, and 3DWS again supports CSG modelling, as well as Wings3D. Some older games like Quake 1 used CSG maps, as they didn't have real-time engines by that time.

There is no need to use CSG in the game engine, as everything is real-time and dynamic.
That's nonsense. Like saying there is no need to use physics, or lights in the game engine, as everything is real-time and dynamic.

Whether there is a reason for using CSG in a game would depend primarily on what game we're talking about.

Some older games like Quake 1 used CSG maps, as they didn't have real-time engines by that time.
What do you mean by a "real-time" engine, and why isn't Quake 1 one of them? Besides Quake 1 did not use CSG maps. Games like Red Faction appeaerntly did use CSG (or some similar technology), at least for the parts of the maps you could destroy.

There is no need to use CSG in the game engine, as everything is real-time and dynamic.


Without CSG, how will you...
- Pierce holes in a concrete wall?
- Blow up the ground and make craters?
- Create breakable glass?
- Rip a model's limbs a part?
- etc etc...

- Rip a model's limbs a part?


going from naiomi cambles past results id say the model is the one doing the limb ripping ;)

You can change change/add/remove vertices from any mesh.

You can change change/add/remove vertices from any mesh.

Blitz3D also. What's your point?

@_33 Isn't that the same as using CSG to pierce holes inwalls, cut trees in pieces, etc...

You just have more freedom when you can access each vertex seperately, than just using solid objects. Of course you can also make a function which works with solid objects, like cutting a round hole into a wall using a terminator movie teleport ball.

I'm not saying you can't do anything without CSG, just that CSG makes a lot of things more accessible from a programming standpoint. At the base CSG is used in map building applications, CAD, and other modeling tools. But slowly, it will get up to the level for a realtime 3D API, just like physics got to the performance level that realtime applications require. I personally need CSG for my 3D game project.

Horray, i've learnt something new in this thread.

@_33 I don't say that CSG is bad, especially if it works dynamically. But if an engine has ONLY CSG, that's bad. I think a good engine should have both full dynamic handling and CSG of all objects. Anyway, I'm working with a team now on a next-gen OOP interface for LE2, and I think CSG operations will also be part of it, as they are very useful.

What really bothers me is that the engine is SM3 only. How do you justify that your Indie or Hobbyist game only runs on high end hardware when you don't have high end content to fill into the engine?

If you don't have high end content, what's the point in using a high end engine at all? Even if it did have fallback for lower end hardware, why use anything more advanced than Blitz3D if you don't have the media/content to take advantage of it?

Without CSG, how will you...
- Pierce holes in a concrete wall?
- Blow up the ground and make craters?
- Create breakable glass?
- Rip a model's limbs a part?
- etc etc...

Hahaha, when was the last time you played a game that did any of that, except for fake effects that do NOT calculate the breakage in real-time?

You actually can move terrain points in real-time and it is fast enough to use for a game.

CSG is useful as a modeling technique, and you can load in 3D World Studio maps directly, but it just gets converted into a regular mesh like anything else. The reason CSG was good in games was lightmapping and BSP, but hardware advances have nullified both those advantages, so we don't focus on it so much anymore. It simplified the engine a lot because there is only one kind of mesh geometry, and a house or a person just get rendered through the same geometry pipeline.

I was as big a fan of CSG as anyone, but it has outlived its usefulness in games. It's now only useful as an architecture modeling technique.

I was as big a fan of CSG as anyone, but it has outlived its usefulness in games.

CSG hasn't had it's chance for gaming YET. I need it for my game project because the game's playfield is in constant evolution, and it is not a "terrain". Shutting the door to CSG is just like saying "I don't need you buying Leadwerks engine".

I'm comfortable with that. It will be many years before what you describe is possible, as it is fundamentally contrary to the nature of the GPU.

I like Leadwerks Engine 2 as it is somewhat familiar to a Blitzer.

I am going to stick with version 2.0 rather than the new 2.1 just to get comfortable with it.

"halo" has clearly put considerable time into making his video tutorials, which have an accompanying PDF. I am sure there are more of them to come. His video tutorials are actually well explained and great for a complete novice to follow.

Although it doesn't ship with loads of examples (as it is not a programming language), it has two main demos - an internal FPS-type level demo and an external Far-Cry-ish terrain demo that come with code/scripts.

I do think it possible that the Leadwerks Engine will become a major player and I can envisage development teams licensing it - perhaps as a cheaper alternative to some of the big-boy engines. Some people will criticise the hardware requirements, but anybody looking to commercially develop with this engine probably will not (considering hardware requirements can increase before a project is complete - which is often a reason why games are delayed - baring in mind a game can spend a couple of years in development). In addition, the hardware requirements enable the forums to be somewhat professional development - so it works two ways.

I haven't fully played with the engine - I only installed it a couple of days ago, so I cannot vouch for how complete or stable it is. However, it certainly seems to be constant work-in-progress (like all the other engines out there). I can't imagine that "halo" would just give up on it, etc - I think he is somewhat driven by improving it and he probably sees it as an engine for commercial developers.

You have to take into account you will also need Ultimate Unwrap, etc to import your models/meshes in to the gmf format.

This is what the BMax code looks like for the FPS-like level - the one featured in the video - http://www.youtube.com/watch?v=cmN7OLy6yUY

The video is the Sandbox editor in action - the BMax code is to basically walk through the level (in a FPS spectator-style). Unfortunatley, the video doesn't show the large rotating fan-blades which have a light behind them - casting moody, Doom 3-like, shadows up a corridor. You'll have to buy the engine for that.

Strict

Framework leadwerks.engine
Import "AppSettings.bmx"

AppLogMode 0

RegisterAbstractPath("../")

AppTitle=StripAll(AppFile)

SetGraphicsDriver GLGraphicsDriver(),GRAPHICS_BACKBUFFER|GRAPHICS_DEPTHBUFFER
If Not Graphics(Int(AppSetting("GFXWidth","1024")),Int(AppSetting("GFXHeight","768")))
	Notify "Failed to initialize graphics window.",1
	End
EndIf

Local lightquality=Int(AppSetting("LightQuality","2"))

If Not CreateWorld()
	Notify "Failed to create world.",1
	End
EndIf

Local spectator:TBody=CreateBodySphere(0.45)
PositionEntity spectator,Vec3(2,4,-4)
SetBodyGravity spectator,0
SetBodyMass spectator,1.0
SetBodyDamping spectator,1.0,0.0
EntityType spectator,1

EntityType LoadBody("abstract::room.phy"),1

Collisions 1,1,1

Local cam:TCamera=CreateCamera()
cam.clsmode=CLS_DEPTH
cam.clscolor=Vec4(0,0,1,1)
CameraRange cam,0.1,40' always use the shortest camera range possible in indoor scenes

AFilter 4
TFilter 1

Local scene:TMesh
scene=LoadMesh("abstract::room.gmf")
HideEntity FindChild(scene,"cardboard")' this object doesn't have a material assigned so I will just hide it.

Local vsync=0
Local camspeed#=5.0
Local mx#,my#,camrotation:TVec3

Local light1:TLight
light1=CreatePointLight(3,FindChild(scene,"light1"))
EntityColor light1,Vec4(1,0.5,0.0,3)
EntityViewRange light1,15,15
LightRange light1,5
If LightQuality=3 SetShadowMapSize light1,256

Local corona:TCorona
Local light2:TLight
light2=CreateSpotLight(8,FindChild(scene,"corona2"))
LightConeAngles light2,45,55
LightRange light2,5
RotateEntity light2,Vec3(90,0,0)
EntityViewRange light2,15,15
If LightQuality=3 SetShadowMapSize light2,256

Local light3:TLight
light3=CreateSpotLight(8,FindChild(scene,"fanlight"))
LightConeAngles light3,15,20
LightRange light3,25
EntityColor light3,Vec4(1,1,1,8)
corona=CreateCorona(light3)
corona.paint loadmaterial("abstract::flare1.mat")
SetCoronaRadius corona,3,3
EntityViewRange corona,17,20
If LightQuality=3 SetShadowMapSize light3,256

Local light4:TLight
light4=CreateSpotLight(8,FindChild(scene,"light4"))
LightConeAngles light4,45,55
LightRange light4,5
RotateEntity light4,Vec3(35,0,0)
EntityColor light4,Vec4(1,0.5,0.0,3)
EntityViewRange light4,30,30
If LightQuality=3 SetShadowMapSize light4,256

Local light5:TLight
light5=CreatePointLight(4,FindChild(scene,"light5"))
EntityColor light5,Vec4(1,0.5,0.0,3)
EntityViewRange light5,10,10
If LightQuality=3 SetShadowMapSize light5,256

Local fan:TEntity=FindChild(scene,"Fanblades")

corona=CreateCorona(FindChild(scene,"corona1"))
EntityViewRange corona,8,10
PaintEntity corona,loadmaterial("abstract::flare1.mat")

corona=CreateCorona(FindChild(scene,"corona2"))
EntityViewRange corona,8,10
PaintEntity corona,loadmaterial("abstract::flare1.mat")

Local buffer:TBuffer=CreateBuffer(GraphicsWidth(),GraphicsHeight())

Global tanks:TEntity=scene.findchild("tanks")

Local postfilter:TShader=LoadShader("abstract::postfilter.vert","abstract::postfilter_ssao.frag")
SetShader postfilter
SetUniform2f GetUniform("screensize"),GraphicsWidth(),GraphicsHeight()
SetUniform2f GetUniform("camerarange"),cam.nearrange,cam.farrange
AmbientLight Vec3(0.3)

'Pre-cache shaders
For Local light:TLight=EachIn CurrentWorld().lights
	PositionEntity cam,EntityPosition(light,1)
	MoveEntity cam,Vec3(0,0,-0.5)
	RotateEntity cam,Vec3(90,0,0)
	RenderWorld()
	RotateEntity cam,Vec3(-90,0,0)
	RenderWorld()
	RotateEntity cam,Vec3(0,90,0)
	RenderWorld()
	RotateEntity cam,Vec3(0,-90,0)
	RenderWorld()
	RotateEntity cam,Vec3(180,0,0)
	RenderWorld()
	RotateEntity cam,Vec3(0,0,0)
	RenderWorld()
Next

Local playerstart:TEntity=FindChild(scene,"playerstart")
If playerstart
	PositionEntity spectator,playerstart.position
	RotateEntity cam,playerstart.rotation
EndIf

HideMouse()
MoveMouse BufferWidth(BackBuffer())/2,BufferHeight(BackBuffer())/2

SceneGraphMode 1
ShadowQuaLITY lightquality
occlusionculling 1

PositionEntity cam,spectator.position

While Not KeyHit(KEY_ESCAPE)
	
	TurnEntity light4,Vec3(0,AppSpeed()*3.0,0)
	If fan fan.turn Vec3(AppSpeed()*2.0,0,0)
	
	mx=Curve(MouseX()-BufferWidth(BackBuffer())/2,mx,4.0/AppSpeed())
	my=Curve(MouseY()-BufferHeight(BackBuffer())/2,my,4.0/AppSpeed())
	MoveMouse BufferWidth(BackBuffer())/2,BufferHeight(BackBuffer())/2
	
	camrotation=EntityRotation(cam)
	camrotation.x:+my*0.1
	camrotation.y:-mx*0.1
	RotateEntity cam,camrotation
	
	AddBodyForce spectator,TFormVector(Vec3((KeyDown(KEY_D)-KeyDown(KEY_A))*camspeed*AppSpeed(),0,(KeyDown(KEY_W)-KeyDown(KEY_S))*camspeed*AppSpeed()),cam,Null)
	
	UpdateWorld()
	
	PositionEntity cam,Vec3(Curve(spectator.position.x,cam.position.x,4),Curve(spectator.position.y,cam.position.y,4),Curve(spectator.position.z,cam.position.z,4))
	
	SetBuffer buffer
	RenderWorld()
	
	setbuffer backbuffer()
	SetShader postfilter
	buffer.depthbuffer.bind(1)
	DrawImage buffer.colorbuffer,0,0
	SetShader Null
	
	SetBlend BLEND_ALPHA
	DrawText "FPS: "+UPS(),0,0
	DrawText cam.LightDrawQueue.count()+" lights",0,20
	DrawText TrisRendered()+" polys",0,40
	DrawText CurrentWorld().shadowsdrawn+" shadows updated",0,60
	SetBlend 0
	Flip 0
Wend

EndRender()
End


The videos look good but theres doesnt seem to be a demo or anything.

There's one official demo:
http://www.leadwerks.com/ccount/click.php?id=49
and a couple of user made demos.

I was thinking more of a demo of the actual language, It's no good showing compiled samples...for all i know it took more work than writing it in c++ directx.
*The 2 little sample source codes look reasonable but i'd still prefer some sort of watermarked demo that lets me test out the language*

I am working on a demo for version 2.1 right now. You should wait until that is available if you are not in a hurry.

@smilertoo: The Wiki has some code examples of the actual languages BlitzMax and C++, but of course it's impossible to makes demos of all 300+ languages it supports:
http://www.leadwerks.com/wiki/index.php?title=Getting_Started

2.4 has an updated demo.

If you buy the engine, you can play the demo. However, please note the hardware requirements before deciding to purchase.

Also, ponder this:
Subsurface up-scattering.

Interesting isn't it? What is it?

Sausages.

Puki, where the hell you been?