Pragma - A 3D multiplayer sandbox engine with Lua-integration, based on Vulkan and bullet physics
379 replies, posted
Fixed up and improved my old glowmap implementation:
[IMG_THUMB]http://sciolyte.com/sharex/weave_2016-02-12_10-54-41.png[/IMG_THUMB]
Works on particles as well:
[IMG_THUMB]http://sciolyte.com/sharex/sciolyte_2016-02-12_16-29-14.png[/IMG_THUMB][IMG_THUMB]http://sciolyte.com/sharex/sciolyte_2016-02-12_16-29-37.png[/IMG_THUMB][IMG_THUMB]http://sciolyte.com/sharex/sciolyte_2016-02-12_16-30-19.png[/IMG_THUMB]
(From left to right: No bloom, minor bloom, full-on eye cancer bloom.)
[QUOTE=Gamefreak2205;49719120]Could sphere mapping be a thing? I know it's old as hell and overshadowed by the superior cube mapping, but source apparently supported it at one point (judging by the vmt command $envmapsphere <bool>) and porting older models would be a bit easier.
Also, I could never figure out how to convert a spheremap to a cubemap :v:[/QUOTE]
Spheremaps for what exactly? Skybox? Reflections?
Latest changelog:
[CODE]
Sciolyte ChangeLog
Version 0.1
12 Feb 2016
- Added "bloom_scale" particle system base parameter
- Added "glow_scale", "glow_blend_diffuse_mode", "glow_blend_diffuse_scale" and "phong_scale" material parameters
- Fixed / Improved glow map implementation
- Implemented phong / specular maps
05 Feb 2016
- Added Entity:SetBodyGroup, Entity:GetBodyGroup and Model:LookupBodyGroup
- Added $bodygroup wmc-compiler option
- Fixed rare crash with friction surfaces
03 Feb 2016
- Fixed error with displacement shader
01 Feb 2016
- Added class "ModelSubMesh"
- Added ModelMesh:GetSubMeshes
- Removed class "NormalMesh"
- Cleaned up shaders
- Fixed model compiler not converting normals into sciolyte coordinate system when using smds
31 Jan 2016
- Added math.snap_to_grid and Vector:SnapToGrid
29 Jan 2016
- Implemented parallax mapping
- Fixed normalmapping not working
26 Jan 2016
- Fixed crash when reloading a map
24 Jan 2016
- Added Entity:GetRotatedCollisionBounds, PhysConstraint:GetSourceTransform, PhysConstraint:GetTargetTransform, PhysConstraint:GetSourcePosition, PhysConstraint:GetSourceRotation, PhysConstraint:GetTargetPosition, PhysConstraint:GetTargetRotation, Model:GetLocalBonePosition and Animation:GetBoneList
- Fixed crash when using Entity:DestroyPhysicsObject() on entity with jointed physics
23 Jan 2016
- Added experimental weapon "weapon_smg"
- Added experimental gamemode "deathmatch"
- Added sdk example model files for the player-model, view-model and smg
- Added Model:GetReferencePose, Entity:GetPhysJointConstraints, PhysConstraint:IsValid, PhysConstraint:Remove, PhysConstraint:GetSourceObject and PhysConstraint:GetTargetObject
- Fixed viewmodels not using view FOV
- Fixed 'softness', 'bias_factor' and 'relaxation_factor' parameters in 'jointconetwist' model compiler command having no effect
22 Jan 2016
- Added console commands "sv_tickrate" and "sv_acceleration"
- Added Player:GetActionInput, Player:SetActionInput, game.get_action_input and game.set_action_input
- Added several new models
- Changed default tickrate to 60
- Fixed "lua_compile" console command not closing file handle
- Fixed collision impact sounds being played twice
- Fixed some replicated serverside concommands not being transmitted to clients correctly
21 Jan 2016
- Added "renametexture" model compiler command
- Added "surfacematerial" model compiler option in the $collisionmesh-definition
- CCD (Continuous Collision Detection) is now enabled by default
- Fixed changing an entity's skin having no effect
- Fixed Entity:DropToFloor not taking collision mesh into account
- Fixed entity collision bounds being calculated incorrectly if a collision mesh has an origin offset
- Fixed TraceData:SetSource not accepting shapes as argument[/CODE]
// Edit:
Also added support for specular mapping / phong:
[video]https://youtu.be/QrAoicwzDyk[/video]
[IMG_THUMB]http://sciolyte.com/sharex/sciolyte_2016-02-12_23-22-52.png[/IMG_THUMB] [IMG_THUMB]http://sciolyte.com/sharex/sciolyte_2016-02-12_23-23-19.png[/IMG_THUMB]
(Left: No specular mapping; Right: Specular Mapping Enabled)
If you add .mdl support and make lighting sexy I'd totally end up using this.
Great job so far, by the way.
-snip nvm-
Sphere mapping is the outdated version of cube mapping. And cube mapping can be used in all the use cases sphere mapping was used for. There's absolutely no need to implement sphere mapping.
Isn't that "sphere mapping" same as mat-cap?
HDR Lighting is almost complete as well now, just need to tweak the settings a little:
[HD]https://youtu.be/EIVL_KjZCR0[/HD]
[IMG_THUMB]http://sciolyte.com/sharex/weave%202016-02-14%2015-47-34-950.jpg[/IMG_THUMB]
(The light sources in the video are also exceptionally bright to make the effect clearer, it usually wouldn't look quite that excessive.)
[QUOTE=Kemerd;49727284][...]and make lighting sexy I'd totally end up using this.[/QUOTE]
Working on it. :v:
[QUOTE=Gamefreak2205;49728968]
Something like that would be nice to have just for the sake of having it as an option. I struggle to get something like that to work in source with cubemaps.
I believe it shouldn't be hard to implement (then again I understand nothing about writing a custom engine so :pudge:)[/QUOTE]
Yeah, sorry, but I don't think that's gonna happen. Cubemaps are just superior in every way.
Improved the lighting some more, still a few things left to do on that, however.
Have a day-night cycle test for now:
[HD]https://youtu.be/i8Kw70dpa60[/HD]
Looks alright, as long as you don't overdo it...
[video]https://youtu.be/dLPcW7aWL7w[/video]
[QUOTE=AJ10017;49746534]im not sure if this is the proper place to ask, but when i click launch the launcher freezes. Do i need to specify some launch options in the launcher for it to actually launch? just in case its an issue with my system ill leave a dxdiag below[...][/QUOTE]
Your hardware and os are definitely fine.
Usually when you press launch for the first time, it'll try to install the vc redistributable x64 package, unless it's already installed.
If you don't have it installed, try running the "vc_redist.x64.exe" manually.
You could also try to launch with the "-console" launch parameter. It should open a separate console window with some messages, those might give me a better idea where that's coming from.
Does launching the "sciolyte_server.exe" freeze it as well?
Other than that, you could try to run it in compatibility mode for windows 8 or windows 7, although I doubt that'd help.
// EDIT:
In case anyone else has a similar issue, the freeze was caused by Avast. After updating it, the problem should be gone.
I'm getting this on launch.
[t]http://i.imgur.com/MpjGjbW.png[/t]
The console log shows a bunch of errors compiling shaders.
[URL="http://pastebin.com/nZyk54PJ"]http://pastebin.com/nZyk54PJ[/URL]
[QUOTE=KillerLUA;49748483]
The console log shows a bunch of errors compiling shaders.[/QUOTE]
What GPU do you have? Is it an Intel card?
Try downloading [URL=sciolyte.com/sharex/shaders_macro_fix.zip]this[/URL] and replace your "shaders" directory with the one from the archive.
Please let me know if that works or if the console output changes.
Will this engine become open source in the future?
Also out of curiosity how do you handle the physics and networking, I couldnt find any post where any information is given.
[QUOTE=DrogenViech;49766416]Will this engine become open source in the future?[/QUOTE]
Maybe, I don't know yet. Definitely not any time soon though (Not within the next 2 years at least).
[QUOTE=Zeh Matt;49767369]Also out of curiosity how do you handle the physics and networking, I couldnt find any post where any information is given.[/QUOTE]
What do you want to know specifically?
The core of the engine is split into a clientside, a serverside and a shared part. The clientside part only exists if you run the actual game, it doesn't exist if you run the dedicated server.
Every tick the server sends updated entity information to the clients, and clients send input information to the server. The tickrate can be changed using [i]sv_tickrate[/i] (The default is 60).
After starting the dedicated server with a map (Or loading a map in the actual game with a player count > 1, which will automatically start a listen server), it will connect to the master server and register itself so it can be found through the server browser. The server re-registers itself every 5 minutes or so to keep it alive in the browser (The [i]heartbeat[/i] command can be used to force it to re-register immediately.).
In lua you can use the [url=http://wiki.sciolyte.com/index.php?title=Net]net library[/url] to send messages between server and client. Alternatively, if you're dealing with entities, you can use either
• [url=http://wiki.sciolyte.com/index.php?title=BaseEntity_senddata]BaseEntity:SendData[/url] with [url=http://wiki.sciolyte.com/index.php?title=BaseEntity_receivedata]BaseEntity:ReceiveData[/url] to send/receive data when the entity spawns
• [url=http://wiki.sciolyte.com/index.php?title=Entity_sendnetevent]Entity:SendNetEvent[/url] with [url=http://wiki.sciolyte.com/index.php?title=BaseEntity_receivenetevent]BaseEntity:ReceiveNetEvent[/url] to send/receive events for a specific scripted entity after it has spawned
You can also disable synchronization between server and client for a specific entity using [url=http://wiki.sciolyte.com/index.php?title=Entity_setsynchronized]Entity:SetSynchronized[/url]. If set to false, the entity will be excluded from the heartbeat (No data will be send during ticks), but events are still transmitted (e.g. removal).
If you disable synchronization before an entity is spawned, it won't be send to clients at all and essentially just exists serverside. You can also create any entity entirely clientside as well.
If you want to go even further, you can use the [url=http://wiki.sciolyte.com/index.php?title=Socket]socket library[/url], which adds several new functions and classes to the mix. Both sockets and the regular net-functions use [url=http://wiki.sciolyte.com/index.php?title=NetPacket]NetPacket[/url]-objects for transmitting data.
As for physics:
Every physical entity has a [url=wiki.sciolyte.com/index.php?title=PhysObj]PhysObj[/url] attached to it. This [i]PhysObj[/i] is basically a container for all of the collision objects associated with the entity. To get the actual collision objects, you can use [url=wiki.sciolyte.com/index.php?title=PhysObj_getcollisionobjects]PhysObj:GetCollisionObjects[/url]. This returns a table of [url=http://wiki.sciolyte.com/index.php?title=PhysCollisionObj]PhysCollisionObj[/url] (for static objects) and [url=http://wiki.sciolyte.com/index.php?title=PhysRigidBody]PhysRigidBody[/url] (for dynamic objects).
Ragdolls are almost complete as well now, they're basically just animated entities with several rigid bodies that are connected via [url=wiki.sciolyte.com/index.php?title=Physenv_createconetwistconstraint]conetwist constraints[/url]. Constraints can be defined inside a model before the compilation, or ingame using the [url=http://wiki.sciolyte.com/index.php?title=Physenv]physenv library[/url].
[img_thumb]http://sciolyte.com/sharex/sciolyte_2016-02-17_16-52-19.png[/img_thumb] [img_thumb]http://sciolyte.com/sharex/sciolyte_2016-02-17_16-52-30.png[/img_thumb]
The player character is a [url=http://wiki.sciolyte.com/index.php?title=Physenv_createcharactercontroller]kinematic character controller[/url] with a [url=http://wiki.sciolyte.com/index.php?title=Physenv_createcapsuleshape]capsule shape[/url].
A [i]PhysObj[/i] can be destroyed using [url=http://wiki.sciolyte.com/index.php?title=Entity_destroyphysicsobject]Entity:DestroyPhysicsObject[/url] and created using [url=http://wiki.sciolyte.com/index.php?title=Entity_initializephysics]Entity:InitializePhysics[/url] (The latter can be used with specific shapes as well).
Physics interactions can be further controlled using:
• [url=http://wiki.sciolyte.com/index.php?title=BaseEntity_shouldcollide]BaseEntity:ShouldCollide[/url], [url=http://wiki.sciolyte.com/index.php?title=BaseEntity_ontrigger]BaseEntity:OnTrigger[/url], [url=http://wiki.sciolyte.com/index.php?title=BaseEntity_ontouch]BaseEntity:OnTouch[/url], [url=http://wiki.sciolyte.com/index.php?title=BaseEntity_onstarttouch]BaseEntity:OnStartTouch[/url], [url=http://wiki.sciolyte.com/index.php?title=BaseEntity_onendtouch]BaseEntity:OnEndTouch[/url], [url=http://wiki.sciolyte.com/index.php?title=BaseEntity_oncontact]BaseEntity:OnContact[/url] and [url=http://wiki.sciolyte.com/index.php?title=BaseEntity_cantrigger]BaseEntity:CanTrigger[/url]
• [url=http://wiki.sciolyte.com/index.php?title=Entity_setcollisionsenabled]Entity:SetCollisionsEnabled[/url], [url=http://wiki.sciolyte.com/index.php?title=Entity_setcollisionfiltermask]Entity:SetCollisionFilterMask[/url], [url=http://wiki.sciolyte.com/index.php?title=Entity_setcollisionfiltergroup]Entity:SetCollisionFilterGroup[/url], [url=http://wiki.sciolyte.com/index.php?title=Entity_setcollisioncontactreportenabled]Entity:SetCollisionContactReportEnabled[/url], [url=http://wiki.sciolyte.com/index.php?title=Entity_setcollisioncallbacksenabled]Entity:SetCollisionCallbacksEnabled[/url] and [url=http://wiki.sciolyte.com/index.php?title=Entity_setcollisionbounds]Entity:SetCollisionBounds[/url]
• For Vehicles: [url=http://wiki.sciolyte.com/index.php?title=Vehicle]Vehicle[/url] and [url=http://wiki.sciolyte.com/index.php?title=VHCWheel]VHCWheel[/url]
Static collision objects are only static in the sense that they don't move by themselves. In theory you can move and rotate the entire world around, there's nothing actually static anywhere.
Anyway, Vulkan came out a few days ago, so I'm currently experimenting with that. It might solve exactly the performance problems I've had with OpenGL, so I might switch completely soon. It's a fairly complicated API (And almost completely different to OpenGL), I'll need some time to get used to it, but it should be worth it.
[QUOTE=Silverlan;49770908]Maybe, I don't know yet. Definitely not any time soon though (Not within the next 2 years at least).
What do you want to know specifically?
The core of the engine is split into a clientside, a serverside and a shared part. The clientside part only exists if you run the actual game, it doesn't exist if you run the dedicated server.
Every tick the server sends updated entity information to the clients, and clients send input information to the server. The tickrate can be changed using [i]sv_tickrate[/i] (The default is 60).
After starting the dedicated server with a map (Or loading a map in the actual game with a player count > 1, which will automatically start a listen server), it will connect to the master server and register itself so it can be found through the server browser. The server re-registers itself every 5 minutes or so to keep it alive in the browser (The [i]heartbeat[/i] command can be used to force it to re-register immediately.).
In lua you can use the [url=http://wiki.sciolyte.com/index.php?title=Net]net library[/url] to send messages between server and client. Alternatively, if you're dealing with entities, you can use either
• [url=http://wiki.sciolyte.com/index.php?title=BaseEntity_senddata]BaseEntity:SendData[/url] with [url=http://wiki.sciolyte.com/index.php?title=BaseEntity_receivedata]BaseEntity:ReceiveData[/url] to send/receive data when the entity spawns
• [url=http://wiki.sciolyte.com/index.php?title=Entity_sendnetevent]Entity:SendNetEvent[/url] with [url=http://wiki.sciolyte.com/index.php?title=BaseEntity_receivenetevent]BaseEntity:ReceiveNetEvent[/url] to send/receive events for a specific scripted entity after it has spawned
You can also disable synchronization between server and client for a specific entity using [url=http://wiki.sciolyte.com/index.php?title=Entity_setsynchronized]Entity:SetSynchronized[/url]. If set to false, the entity will be excluded from the heartbeat (No data will be send during ticks), but events are still transmitted (e.g. removal).
If you disable synchronization before an entity is spawned, it won't be send to clients at all and essentially just exists serverside. You can also create any entity entirely clientside as well.
If you want to go even further, you can use the [url=http://wiki.sciolyte.com/index.php?title=Socket]socket library[/url], which adds several new functions and classes to the mix. Both sockets and the regular net-functions use [url=http://wiki.sciolyte.com/index.php?title=NetPacket]NetPacket[/url]-objects for transmitting data.
As for physics:
Every physical entity has a [url=wiki.sciolyte.com/index.php?title=PhysObj]PhysObj[/url] attached to it. This [i]PhysObj[/i] is basically a container for all of the collision objects associated with the entity. To get the actual collision objects, you can use [url=wiki.sciolyte.com/index.php?title=PhysObj_getcollisionobjects]PhysObj:GetCollisionObjects[/url]. This returns a table of [url=http://wiki.sciolyte.com/index.php?title=PhysCollisionObj]PhysCollisionObj[/url] (for static objects) and [url=http://wiki.sciolyte.com/index.php?title=PhysRigidBody]PhysRigidBody[/url] (for dynamic objects).
Ragdolls are almost complete as well now, they're basically just animated entities with several rigid bodies that are connected via [url=wiki.sciolyte.com/index.php?title=Physenv_createconetwistconstraint]conetwist constraints[/url]. Constraints can be defined inside a model before the compilation, or ingame using the [url=http://wiki.sciolyte.com/index.php?title=Physenv]physenv library[/url].
[img_thumb]http://sciolyte.com/sharex/sciolyte_2016-02-17_16-52-19.png[/img_thumb] [img_thumb]http://sciolyte.com/sharex/sciolyte_2016-02-17_16-52-30.png[/img_thumb]
The player character is a [url=http://wiki.sciolyte.com/index.php?title=Physenv_createcharactercontroller]kinematic character controller[/url] with a [url=http://wiki.sciolyte.com/index.php?title=Physenv_createcapsuleshape]capsule shape[/url].
A [i]PhysObj[/i] can be destroyed using [url=http://wiki.sciolyte.com/index.php?title=Entity_destroyphysicsobject]Entity:DestroyPhysicsObject[/url] and created using [url=http://wiki.sciolyte.com/index.php?title=Entity_initializephysics]Entity:InitializePhysics[/url] (The latter can be used with specific shapes as well).
Physics interactions can be further controlled using:
• [url=http://wiki.sciolyte.com/index.php?title=BaseEntity_shouldcollide]BaseEntity:ShouldCollide[/url], [url=http://wiki.sciolyte.com/index.php?title=BaseEntity_ontrigger]BaseEntity:OnTrigger[/url], [url=http://wiki.sciolyte.com/index.php?title=BaseEntity_ontouch]BaseEntity:OnTouch[/url], [url=http://wiki.sciolyte.com/index.php?title=BaseEntity_onstarttouch]BaseEntity:OnStartTouch[/url], [url=http://wiki.sciolyte.com/index.php?title=BaseEntity_onendtouch]BaseEntity:OnEndTouch[/url], [url=http://wiki.sciolyte.com/index.php?title=BaseEntity_oncontact]BaseEntity:OnContact[/url] and [url=http://wiki.sciolyte.com/index.php?title=BaseEntity_cantrigger]BaseEntity:CanTrigger[/url]
• [url=http://wiki.sciolyte.com/index.php?title=Entity_setcollisionsenabled]Entity:SetCollisionsEnabled[/url], [url=http://wiki.sciolyte.com/index.php?title=Entity_setcollisionfiltermask]Entity:SetCollisionFilterMask[/url], [url=http://wiki.sciolyte.com/index.php?title=Entity_setcollisionfiltergroup]Entity:SetCollisionFilterGroup[/url], [url=http://wiki.sciolyte.com/index.php?title=Entity_setcollisioncontactreportenabled]Entity:SetCollisionContactReportEnabled[/url], [url=http://wiki.sciolyte.com/index.php?title=Entity_setcollisioncallbacksenabled]Entity:SetCollisionCallbacksEnabled[/url] and [url=http://wiki.sciolyte.com/index.php?title=Entity_setcollisionbounds]Entity:SetCollisionBounds[/url]
• For Vehicles: [url=http://wiki.sciolyte.com/index.php?title=Vehicle]Vehicle[/url] and [url=http://wiki.sciolyte.com/index.php?title=VHCWheel]VHCWheel[/url]
Static collision objects are only static in the sense that they don't move by themselves. In theory you can move and rotate the entire world around, there's nothing actually static anywhere.
Anyway, Vulkan came out a few days ago, so I'm currently experimenting with that. It might solve exactly the performance problems I've had with OpenGL, so I might switch completely soon. It's a fairly complicated API (And almost completely different to OpenGL), I'll need some time to get used to it, but it should be worth it.[/QUOTE]
Well you did share quite some insight but what I'm really interested in is for example how do you encode the data, is it compressed if so how? Also how much bandwidth would it cost to have like 100 moving props and colliding with each other. After all latency is something important and the more data you send the higher the latency.
[QUOTE=Zeh Matt;49776051]Well you did share quite some insight but what I'm really interested in is for example how do you encode the data, is it compressed if so how? Also how much bandwidth would it cost to have like 100 moving props and colliding with each other. After all latency is something important and the more data you send the higher the latency.[/QUOTE]
The data isn't compressed. It's far more important to limit the data that's being sent to the client to only what's absolutely necessary. Collisions have 0 impact on the data being transmitted.
The actual throughput depends on the tickrate. If you're running a deathmatch gamemode, you'd probably want to have it around 60, but you're probably not dealing with a lot of props either.
For a sandbox gamemode, a tickrate of around 30 would probably be a better pick.
Either way, there's still plenty I can optimize with the networking, but there are a lot of more important things to be worked on first.
I'll do it when it's actually a problem. After all, don't forget the second rule of optimization ("Don't do it yet.").
If you can get this as big as Garry's Mod with a sizable playerbase, with the same features but better, me and many others I know would gladly switch to this. Looks good so far, but it's quite a beast to compete with something that's been a thing for over a decade.
what is the world editor?
and is there a low max map size like hammer's or is it actually decently large?
edit: also ive seen gm_fork in this engine so is it possible to easily run hammer maps in it then? or convert? and what about source's models and animations?
[QUOTE=RonanZer0;50074731]what is the world editor?[/QUOTE]
The engine doesn't have its own editor yet, for now you have to use hammer.
You can find more information about how to set hammer up for the engine [URL=wiki.sciolyte.com/index.php?title=Mapping]on the wiki[/URL].
[QUOTE=RonanZer0;50074731]and is there a low max map size like hammer's or is it actually decently large?[/QUOTE]
Technically there is no limit (It's been discussed a few pages back). Hammer throws a fit if you try to create maps larger than the grid size, so that's still a bit of a problem.
I was thinking of adding support for the source 2 hammer editor, if there's demand.
[QUOTE=RonanZer0;50074731]edit: also ive seen gm_fork in this engine so is it possible to easily run hammer maps in it then? or convert? and what about source's models and animations?[/QUOTE]
Porting maps is very [URL=http://wiki.sciolyte.com/index.php?title=Mapping]straight forward[/URL], however you'll also have to port the textures, materials and models. I've written a small tutorial on how to convert materials and textures from the source engine [URL=http://wiki.sciolyte.com/index.php?title=Convert_materials]here[/URL]. As for models, you can check out [URL=http://wiki.sciolyte.com/index.php?title=Convert_models]this page[/URL]. It's still pretty barebones, if you get stuck/need more information, let me know and I'll add it.
Anyway, I apologize for the lack of updates recently, I'm still working on porting the engine to Vulkan. I'm very close now, but there's still one major issue left (And some minor issues), which I'm unsure how to solve (And I've yet to test it on Nvidia hardware), so I'll probably need another week or two.
Small update news:
Still working on the Vulkan port, but I'm getting close.
The next version also has built-in support for .vtf- and .vmt-files (As well as .ktx-files), which should make porting a lot less of a pain (You basically just have to copy the materials and textures from the source engine over). I've written a tutorial for [URL=http://wiki.sciolyte.com/index.php?title=Convert_maps]porting maps[/URL] to that end.
In other news, I just found an Oculus DK1 for a very cheap price on ebay, so I went for it. (Can't afford the consumer version)
Will probably receive it some time next week, so VR-support will definitely be a thing.
Anyway, a few images and videos summarizing my long painful road to Vulkan (Ongoing):
[IMG_THUMB]http://sciolyte.com/sharex/tri_2016-02-18_14-00-26.png[/IMG_THUMB] [IMG_THUMB]http://sciolyte.com/sharex/triangle_demo_2016-02-29_15-08-46.png[/IMG_THUMB] [IMG_THUMB]http://sciolyte.com/sharex/2016-02-29_15-12-46.gif[/IMG_THUMB] [IMG_THUMB]http://sciolyte.com/sharex/triangle_demo_2016-03-09_08-00-06.png[/IMG_THUMB] [IMG_THUMB]http://sciolyte.com/sharex/triangle_demo_2016-03-09_13-02-44.png[/IMG_THUMB] [IMG_THUMB]http://sciolyte.com/sharex/triangle_demo_2016-03-10_11-19-42.png[/IMG_THUMB] [IMG_THUMB]http://sciolyte.com/sharex/triangle_demo_2016-03-11_13-20-33.png[/IMG_THUMB] [IMG_THUMB]http://sciolyte.com/sharex/weave_2016-03-12_20-10-50.png[/IMG_THUMB] [IMG_THUMB]http://sciolyte.com/sharex/cube_2016-03-22_18-05-44.png[/IMG_THUMB] [IMG_THUMB]http://sciolyte.com/sharex/weave_2016-03-17_15-03-10.png[/IMG_THUMB] [IMG_THUMB]http://sciolyte.com/sharex/weave_2016-03-26_18-31-48.png[/IMG_THUMB] [IMG_THUMB]http://sciolyte.com/sharex/weave_2016-03-27_11-27-45.png[/IMG_THUMB] [IMG_THUMB]http://sciolyte.com/sharex/weave_2016-03-29_11-37-27.png[/IMG_THUMB] [IMG_THUMB]http://sciolyte.com/sharex/sciolyte_2016-03-29_11-57-13.png[/IMG_THUMB] [IMG_THUMB]http://sciolyte.com/sharex/weave_2016-03-29_20-51-50.png[/IMG_THUMB] [IMG_THUMB]http://sciolyte.com/sharex/weave_2016-04-04_08-31-02.png[/IMG_THUMB] [IMG_THUMB]http://sciolyte.com/sharex/weave_2016-04-05_21-16-42.png[/IMG_THUMB] [IMG_THUMB]http://sciolyte.com/sharex/sciolyte_2016-04-08_09-57-23.png[/IMG_THUMB] [IMG_THUMB]http://sciolyte.com/sharex/weave_2016-04-09_12-35-17.png[/IMG_THUMB] [IMG_THUMB]http://sciolyte.com/sharex/weave_2016-04-13_10-39-06.png[/IMG_THUMB] [IMG_THUMB]http://sciolyte.com/sharex/weave_2016-04-21_12-09-01_thumb.png[/IMG_THUMB] [IMG_THUMB]http://sciolyte.com/sharex/2016-04-21_22-48-16.gif[/IMG_THUMB] [IMG_THUMB]http://sciolyte.com/sharex/2016-04-21_22-53-16.gif[/IMG_THUMB] [IMG_THUMB]http://sciolyte.com/sharex/2016-04-22_09-03-53.gif[/IMG_THUMB]
[video]https://youtu.be/CrzdVqDlvVA[/video] [video]https://youtu.be/BYAxkFHEDoE[/video] [video]https://youtu.be/M7bHPLChqPU[/video] [video]https://youtu.be/5bk3ZfNpaUE[/video]
What's your opinion on Vulkan so far?
[QUOTE=Frechetta93;50357680]What's your opinion on Vulkan so far?[/QUOTE]
Well, it's a fair bit more complex than OpenGL, so I wouldn't recommend it to anyone who's just starting to get into computer graphics.
It does, however, give you a [b]lot[/b] more control and allows you to minimize synchronization between CPU and GPU easily (Which was always one of the main bottlenecks in my case).
It won't make any difference at all with the actual graphics quality, but it provides a massive performance boost in general:
OpenGL:
[IMG]http://sciolyte.com/sharex/sciolyte_2016-05-22_10-29-30.png[/IMG]
(Frame time: Approximately 6ms)
Vulkan:
[IMG]http://sciolyte.com/sharex/sciolyte_2016-05-22_10-26-19.png[/IMG]
There's still a few minor issues I have to resolve, so I haven't been able to test it on any large maps yet (e.g. fork), but it should make a noticable difference.
All major issues are fixed, but I still need to test it on Nvidia hardware, compile and test it on Linux, optimize some code, etc. It took me a lot longer than I had originally planned, I still think it was worth it though.
More updates:
Vulkan is fully implemented (Public now as well), however there are still some issues left on Nvidia GPUs. I'll need some volunteers to fix those, so if anyone with a Nvidia GPU would like to help me with that, that'd be great.
Anyway, I've (finally) finished the ragdoll implementation now as well. Works like a charm:
[video]https://youtu.be/sPe0Vy0askc[/video]
Ragdolls aren't separate entities like in source. Instead, every entity with a valid ragdoll model can be turned into one at any time. As with most other entities, they can be created clientside-only, too.
I've also implemented particle beams with [URL=http://sciolyte.com/sharex/weave_2016-06-07_18-46-25.png]spline curves[/URL], but that's not quite finished yet.
[thumb]http://sciolyte.com/sharex/2016-06-08_20-04-10.gif[/thumb]
Some other new additions are:
• Direct support for .vtf, .tga and .ktx textures
• Direct support for .vmt-materials
• Support for HLSL shaders
• [URL=http://sciolyte.com/sharex/devenv_2016-06-05_11-53-57.jpg]Support for virtual reality[/URL] (Still WIP)
(Full changelog at the end of this post.)
Anyway, some plans for the near future:
I'll have to write a small level-editor for one of my university courses within the next few months, but that's more of a side-project. It's mostly GUI-related stuff, but I'll probably take that opportunity to implement some other modding-tools as well.
After that, I plan to primarily focus on AI for the next semester, got a lot of ideas floating around for that, so stay tuned!
[EDITLINE]-[/EDITLINE]
Latest Changelog (I was focusing mostly on Vulkan, so this one's fairly short in comparison):
[CODE]
Sciolyte ChangeLog
Version 0.2.1
12 June 2016
- Added Entity:IsClientsideOnly
- Improved crashdump system
11 June 2016
- Added Entity:GetOrigin
- Implemented ragdolls
09 June 2016
- Added vulkan.create_framebuffer and vulkan.create_render_pass
- Added ParticleSystem.SetNodeTarget, ParticleSystem.GetNodeCount, ParticleSystem.GetNodePosition and ParticleSystem.GetNodeTarget
- Added support for beam particle effects
- Fixed various particle effect rendering artifacts
06 June 2016
- Added console command "vk_dump_image_format_properties"
05 June 2016
- Added Model.GetMeshGroupCount, Model.GetMeshCount, Model.GetSubMeshCount, Model.GetCollisionMeshCount, Model.GetBodyGroupId and Model.GetBodyGroupCount
- Fixed light sources not fading out over distance properly if shader quality is set to high
- Fixed crash when glow effects are on screen
- Vulkan Release
04 June 2016
- Added intersect.sphere_with_cone
03 June 2016
- Added geometry.closest_point_on_line_to_point and geometry.closest_point_on_sphere_to_line
31 May 2016
- Added console command "debug_texture_mipmaps"
28 May 2016
- Added launch parameter "-vk_report_level <reportLevel>"
27 May 2016
- Added console commands "vk_dump_layers" and "vk_dump_extensions"
- Removed engine.get_view_camera and render.set_render_target
23 May 2016
- Added ConVar "cl_render_shader_quality"
- Renamed VKBuffer.GetUsage to VKBuffer.GetUsageFlags
21 May 2016
- Added console commands "debug_profiling_enabled" and "debug_profiling_print"
20 May 2016
-Added classes "VKTimestampQuery" and "VKTimerQuery"
19 May 2016
- Added console command "shader_list"
- Added support for TGA images
15 May 2016
- Added console command "fps"
- Added Color.Lerp
- Added support for HLSL shaders
14 May 2016
- Added console command "debug_light_depth"
11 May 2016
- Added class VKRenderTarget
- Added VKTexture.GetFormat
08 May 2016
- Added classes VKMesh and VKBuffer
- Added Model.GetMaterials, ModelMesh.GetBounds, ModelSubMesh.GetBounds, ModelSubMesh.GetVkMesh, VKTexture.Remove, VKImage.Remove, VKImageView.Remove, VKSampler.Remove, VKFramebuffer.Remove, VKRenderPass.Remove, VKEvent.Remove, VKFence.Remove, VKSemaphore.Remove, VKMemory.Remove, VKCommandBuffer.Remove and sound.find_by_type
- Renamed ModelSubMesh.GetTexture to ModelSubMesh.GetMaterial
- Renamed lua_openscript to lua_exec and lua_openscript_cl to lua_exec_cl
07 May 2016
- Added class "ModelMeshGroup"
- Added game.create_model, Model.AddMaterial, Model.AddCollisionMesh, Model.AddMeshGroup, Model.GetBaseMeshIds, Model.GetMeshGroupId, Model.GetMeshGroup, Model.GetMeshGroups, Model.UpdateCollisionBounds, Model.UpdateRenderBounds, Model.Update, Model.GetName, Model.GetMass, Model.SetMass, Model.GetBoneCount, Model.GetCollisionBounds, Model.GetRenderBounds, Model.SetCollisionBounds, Model.SetRenderBounds, ModelMesh.Create, ModelMesh.Update, ModelMesh.GetTriangleCount, ModelMesh.AddSubMesh, ModelSubMesh.Create, ModelSubMesh.Update, ModelSubMesh.AddVertex, ModelSubMesh.SetMaterial, ModelSubMesh.GetVertexCount, ModelSubMesh.GetTriangleVertexCount, ModelSubMesh.GetTriangleCount, CollisionMesh.Create, CollisionMesh.GetAABB, CollisionMesh.GetBoneParentId, CollisionMesh.GetOrigin, CollisionMesh.GetShape, CollisionMesh.GetSurfaceMaterialId, CollisionMesh.GetSurfaceMaterialIds, CollisionMesh.IntersectAABB, CollisionMesh.IsConvex, CollisionMesh.SetAABB, CollisionMesh.SetBoneParentId, CollisionMesh.SetConvex, CollisionMesh.SetOrigin, CollisionMesh.Update, CollisionMesh.AddVertex and CollisionMesh.SetSurfaceMaterialId
06 May 2016
- Added classes "Vertex" and "VertexWeight"
04 May 2016
- Added WITable.SetColumnWidth, WITable.AddRow, WITable.AddHeaderRow, WITable.GetRowCount, WITable.SetSortable, WITable.IsSortable, WITable.SetScrollable, WITable.IsScrollable, WITable.Clear, WITable.GetRow, WITable.GetSelectedRow, WITableRow.SetCellWidth, WITableRow.SetValue, WITableRow.InsertElement, WITableRow.GetCellCount, WITableRow.GetCell, WITableCell.GetFirstElement
03 May 2016
- Added libraries "locale" and "regex"
- Added class "RegexResult"
01 May 2016
- Added classes "VKFence", "VKSemaphore", "VKMemory" and "VKCommandBuffer"
- Added Vulkan.create_fence
- Added ConCommands "vk_dump_limits", "vk_dump_features" and "vk_dump_format_properties"
- Added VKImage.GetLayerCount, VKImage.GetSize, VKImage.IsCubemap, VKImage.GetMipmapWidth, VKImage.GetMipmapHeight, VKImage.GetMipmapSize, VKImage.GetMipmapLevels, VKImage.IsDepthImage, VKImage.IsCompressedImage, VKImage.IsUncompressedImage, VKImage.GetPixelCount, VKImage.GetAspectFlags, VKImage.GetLayout, VKImage.GenerateMipmaps, VKImage.GetMemory
30 Apr 2016
- Added supported for virtual reality
- Added module "wv_openvr"
27 Apr 2016
- Removed Entity:GetBrushMeshes
- Removed classes "BrushMesh" and "Side"
23 Apr 2016
- Removed WIShape:SetRenderMode
19 Apr 2016
- Added support for VMT materials
18 Apr 2016
- Added ConVar "debug_render_normals"
17 Apr 2016
- Added support for VTF images
16 Apr 2016
- Removed ConVar "render_debug_physics_enabled"
- Added ConCommand "cl_entities"
- Added all missing console command descriptions
10 Apr 2016
- Renamed shader "displacement" to "texturedalphatransition"
- Removed game.get_screen_vertex_buffer
- Added ConCommand "screenshot 1" to allow taking screenshots without GUI elements
07 Apr 2016
- Renamed library "debugoverlay" to "debugrenderer"
- Added debugrenderer.draw_points, debugrenderer.draw_lines and debugrenderer.draw_axis
03 Apr 2016
- Added ConVar "debug_render_depth_buffer"
30 Mar 2016
- Added support for KTX images
26 Mar 2016
- Added ConVar cl_show_fps
- Added classes "Vectori", "Vector2i" and "Vector4i"
- Added vulkan.create_image, vulkan.create_event, vulkan.calculate_mipmap_count, vulkan.calculate_mipmap_size, vulkan.result_to_string, vulkan.format_to_string, vulkan.shader_stage_to_string, vulkan.is_depth_format, vulkan.get_bit_size, vulkan.get_byte_size, VKSampler:Update, VKSampler:GetMagFilter, VKSampler:GetMinFilter, VKSampler:GetMipmapMode, VKSampler:GetAddressModeU, VKSampler:GetAddressModeV, VKSampler:GetAddressModeW, VKSampler:GetMipLodBias, VKSampler:GetAnisotropyEnabled, VKSampler:GetMaxAnisotropy, VKSampler:GetCompareEnabled, VKSampler:GetCompareOperation, VKSampler:GetMinLod, VKSampler:GetMaxLod, VKSampler:GetBorderColor, VKSampler:GetUnnormalizedCoordinates, VKSampler:SetMagFilter, VKSampler:SetMinFilter, VKSampler:SetMipmapMode, VKSampler:SetAddressModeU, VKSampler:SetAddressModeV, VKSampler:SetAddressModeW, VKSampler:SetMipLodBias, VKSampler:SetAnisotropyEnabled, VKSampler:SetMaxAnisotropy, VKSampler:SetCompareEnabled, VKSampler:SetCompareOperation, VKSampler:SetMinLod, VKSampler:SetMaxLod, VKSampler:SetBorderColor, VKSampler:SetUnnormalizedCoordinates
- Added enums VK_SAMPLER_MIPMAP_MODE, VK_SAMPLER_ADDRESS_MODE, VK_COMPARE_OP, VK_BORDER_COLOR
20 Mar 2016
- Removed ConVar "opengl_version"
12 Mar 2016
- Added class "VKEvent"
- Added vulkan.create_event and vulkan.create_gradient_texture
11 Mar 2016
- Added library "vulkan"
- Added classes "VKTexture", "VKImage", "VKImageView", "VKSampler", "VKFramebuffer", "VKRenderPass" and "VKContext"
- Changed overloads for WITexturedShape:SetTexture and WITexturedShape:GetTexture
10 Mar 2016
- Improved font rendering for large fonts
02 Mar 2016
- Removed convars "debug_opengl_enabled"
- Removed startup options "-gldebug", "-opengl" and "-shader"
21 Feb 2016
- Fixed collision object positions not changing if an entity with multiple collision objects was rotated using BaseEntity:SetAngles / BaseEntity:SetRotation
19 Feb 2016
- Added PhysRigidBody:GetBoneID and PhysRigidBody:SetBoneID
16 Feb 2016
- Fixed Entity:SetPlaybackRate having no effect
- Fixed "render_unlit" console command not working
- Updated french localizations (Thanks, Gedo789!)
15 Feb 2016
- Added Texture:GetSamplerID
- Added console command "cl_render_texture_quality"
- Added EnvDirectionalLight:GetAmbientColor and EnvDirectionalLight:SetAmbientColor
- Removed TextureInfo:GetSampler
- Removed "render_culling_enabled" console command
- Implemented "Texture Quality" setting
- Fixed crash when exiting the game with active timers which haven't been removed
- Fixed entity shadow positions not being updated if the entity casting the shadow is outside the view frustum
- Fixed world not being rendered anymore in certain cases after a particle effect was on screen
14 Feb 2016
- Renamed "env_light_directional" to "env_light_environment"
- Added "color_ambient" and "max_exposure" keyvalues for entity "env_light_environment"
- Added console command "render_hdr_max_exposure"
- Added "noclip" to key control options
- Added opengl.get_sampler_parameter, opengl.get_sampler_parameteri, opengl.set_sampler_parameter and opengl.set_sampler_parameteri
- Added enum GL_TEXTURE_MAX_ANISOTROPY
- Improved lighting effects
- Fixed texture filtering not working
- Implemented Anisotropic Texture Filtering
13 Feb 2016
- Implemented HDR Lighting, Bloom and Exposure effects
[/CODE]
[QUOTE=Silverlan;50508188]More updates:
Vulkan is fully implemented (Public now as well), however there are still some issues left on Nvidia GPUs. I'll need some volunteers to fix those, so if anyone with a Nvidia GPU would like to help me with that, that'd be great.
Anyway, I've (finally) finished the ragdoll implementation now as well. Works like a charm:
[video]https://youtu.be/sPe0Vy0askc[/video]
Ragdolls aren't separate entities like in source. Instead, every entity with a valid ragdoll model can be turned into one at any time. As with most other entities, they can be created clientside-only, too.
I've also implemented particle beams with [URL=http://sciolyte.com/sharex/weave_2016-06-07_18-46-25.png]spline curves[/URL], but that's not quite finished yet.
[thumb]http://sciolyte.com/sharex/2016-06-08_20-04-10.gif[/thumb]
Some other new additions are:
• Direct support for .vtf, .tga and .ktx textures
• Direct support for .vmt-materials
• Support for HLSL shaders
• [URL=http://sciolyte.com/sharex/devenv_2016-06-05_11-53-57.jpg]Support for virtual reality[/URL] (Still WIP)
(Full changelog at the end of this post.)
Anyway, some plans for the near future:
I'll have to write a small level-editor for one of my university courses within the next few months, but that's more of a side-project. It's mostly GUI-related stuff, but I'll probably take that opportunity to implement some other modding-tools as well.
After that, I plan to primarily focus on AI for the next semester, got a lot of ideas floating around for that, so stay tuned!
[EDITLINE]-[/EDITLINE]
Latest Changelog (I was focusing mostly on Vulkan, so this one's fairly short in comparison):
[CODE]
Sciolyte ChangeLog
Version 0.2.1
12 June 2016
- Added Entity:IsClientsideOnly
- Improved crashdump system
11 June 2016
- Added Entity:GetOrigin
- Implemented ragdolls
09 June 2016
- Added vulkan.create_framebuffer and vulkan.create_render_pass
- Added ParticleSystem.SetNodeTarget, ParticleSystem.GetNodeCount, ParticleSystem.GetNodePosition and ParticleSystem.GetNodeTarget
- Added support for beam particle effects
- Fixed various particle effect rendering artifacts
06 June 2016
- Added console command "vk_dump_image_format_properties"
05 June 2016
- Added Model.GetMeshGroupCount, Model.GetMeshCount, Model.GetSubMeshCount, Model.GetCollisionMeshCount, Model.GetBodyGroupId and Model.GetBodyGroupCount
- Fixed light sources not fading out over distance properly if shader quality is set to high
- Fixed crash when glow effects are on screen
- Vulkan Release
04 June 2016
- Added intersect.sphere_with_cone
03 June 2016
- Added geometry.closest_point_on_line_to_point and geometry.closest_point_on_sphere_to_line
31 May 2016
- Added console command "debug_texture_mipmaps"
28 May 2016
- Added launch parameter "-vk_report_level <reportLevel>"
27 May 2016
- Added console commands "vk_dump_layers" and "vk_dump_extensions"
- Removed engine.get_view_camera and render.set_render_target
23 May 2016
- Added ConVar "cl_render_shader_quality"
- Renamed VKBuffer.GetUsage to VKBuffer.GetUsageFlags
21 May 2016
- Added console commands "debug_profiling_enabled" and "debug_profiling_print"
20 May 2016
-Added classes "VKTimestampQuery" and "VKTimerQuery"
19 May 2016
- Added console command "shader_list"
- Added support for TGA images
15 May 2016
- Added console command "fps"
- Added Color.Lerp
- Added support for HLSL shaders
14 May 2016
- Added console command "debug_light_depth"
11 May 2016
- Added class VKRenderTarget
- Added VKTexture.GetFormat
08 May 2016
- Added classes VKMesh and VKBuffer
- Added Model.GetMaterials, ModelMesh.GetBounds, ModelSubMesh.GetBounds, ModelSubMesh.GetVkMesh, VKTexture.Remove, VKImage.Remove, VKImageView.Remove, VKSampler.Remove, VKFramebuffer.Remove, VKRenderPass.Remove, VKEvent.Remove, VKFence.Remove, VKSemaphore.Remove, VKMemory.Remove, VKCommandBuffer.Remove and sound.find_by_type
- Renamed ModelSubMesh.GetTexture to ModelSubMesh.GetMaterial
- Renamed lua_openscript to lua_exec and lua_openscript_cl to lua_exec_cl
07 May 2016
- Added class "ModelMeshGroup"
- Added game.create_model, Model.AddMaterial, Model.AddCollisionMesh, Model.AddMeshGroup, Model.GetBaseMeshIds, Model.GetMeshGroupId, Model.GetMeshGroup, Model.GetMeshGroups, Model.UpdateCollisionBounds, Model.UpdateRenderBounds, Model.Update, Model.GetName, Model.GetMass, Model.SetMass, Model.GetBoneCount, Model.GetCollisionBounds, Model.GetRenderBounds, Model.SetCollisionBounds, Model.SetRenderBounds, ModelMesh.Create, ModelMesh.Update, ModelMesh.GetTriangleCount, ModelMesh.AddSubMesh, ModelSubMesh.Create, ModelSubMesh.Update, ModelSubMesh.AddVertex, ModelSubMesh.SetMaterial, ModelSubMesh.GetVertexCount, ModelSubMesh.GetTriangleVertexCount, ModelSubMesh.GetTriangleCount, CollisionMesh.Create, CollisionMesh.GetAABB, CollisionMesh.GetBoneParentId, CollisionMesh.GetOrigin, CollisionMesh.GetShape, CollisionMesh.GetSurfaceMaterialId, CollisionMesh.GetSurfaceMaterialIds, CollisionMesh.IntersectAABB, CollisionMesh.IsConvex, CollisionMesh.SetAABB, CollisionMesh.SetBoneParentId, CollisionMesh.SetConvex, CollisionMesh.SetOrigin, CollisionMesh.Update, CollisionMesh.AddVertex and CollisionMesh.SetSurfaceMaterialId
06 May 2016
- Added classes "Vertex" and "VertexWeight"
04 May 2016
- Added WITable.SetColumnWidth, WITable.AddRow, WITable.AddHeaderRow, WITable.GetRowCount, WITable.SetSortable, WITable.IsSortable, WITable.SetScrollable, WITable.IsScrollable, WITable.Clear, WITable.GetRow, WITable.GetSelectedRow, WITableRow.SetCellWidth, WITableRow.SetValue, WITableRow.InsertElement, WITableRow.GetCellCount, WITableRow.GetCell, WITableCell.GetFirstElement
03 May 2016
- Added libraries "locale" and "regex"
- Added class "RegexResult"
01 May 2016
- Added classes "VKFence", "VKSemaphore", "VKMemory" and "VKCommandBuffer"
- Added Vulkan.create_fence
- Added ConCommands "vk_dump_limits", "vk_dump_features" and "vk_dump_format_properties"
- Added VKImage.GetLayerCount, VKImage.GetSize, VKImage.IsCubemap, VKImage.GetMipmapWidth, VKImage.GetMipmapHeight, VKImage.GetMipmapSize, VKImage.GetMipmapLevels, VKImage.IsDepthImage, VKImage.IsCompressedImage, VKImage.IsUncompressedImage, VKImage.GetPixelCount, VKImage.GetAspectFlags, VKImage.GetLayout, VKImage.GenerateMipmaps, VKImage.GetMemory
30 Apr 2016
- Added supported for virtual reality
- Added module "wv_openvr"
27 Apr 2016
- Removed Entity:GetBrushMeshes
- Removed classes "BrushMesh" and "Side"
23 Apr 2016
- Removed WIShape:SetRenderMode
19 Apr 2016
- Added support for VMT materials
18 Apr 2016
- Added ConVar "debug_render_normals"
17 Apr 2016
- Added support for VTF images
16 Apr 2016
- Removed ConVar "render_debug_physics_enabled"
- Added ConCommand "cl_entities"
- Added all missing console command descriptions
10 Apr 2016
- Renamed shader "displacement" to "texturedalphatransition"
- Removed game.get_screen_vertex_buffer
- Added ConCommand "screenshot 1" to allow taking screenshots without GUI elements
07 Apr 2016
- Renamed library "debugoverlay" to "debugrenderer"
- Added debugrenderer.draw_points, debugrenderer.draw_lines and debugrenderer.draw_axis
03 Apr 2016
- Added ConVar "debug_render_depth_buffer"
30 Mar 2016
- Added support for KTX images
26 Mar 2016
- Added ConVar cl_show_fps
- Added classes "Vectori", "Vector2i" and "Vector4i"
- Added vulkan.create_image, vulkan.create_event, vulkan.calculate_mipmap_count, vulkan.calculate_mipmap_size, vulkan.result_to_string, vulkan.format_to_string, vulkan.shader_stage_to_string, vulkan.is_depth_format, vulkan.get_bit_size, vulkan.get_byte_size, VKSampler:Update, VKSampler:GetMagFilter, VKSampler:GetMinFilter, VKSampler:GetMipmapMode, VKSampler:GetAddressModeU, VKSampler:GetAddressModeV, VKSampler:GetAddressModeW, VKSampler:GetMipLodBias, VKSampler:GetAnisotropyEnabled, VKSampler:GetMaxAnisotropy, VKSampler:GetCompareEnabled, VKSampler:GetCompareOperation, VKSampler:GetMinLod, VKSampler:GetMaxLod, VKSampler:GetBorderColor, VKSampler:GetUnnormalizedCoordinates, VKSampler:SetMagFilter, VKSampler:SetMinFilter, VKSampler:SetMipmapMode, VKSampler:SetAddressModeU, VKSampler:SetAddressModeV, VKSampler:SetAddressModeW, VKSampler:SetMipLodBias, VKSampler:SetAnisotropyEnabled, VKSampler:SetMaxAnisotropy, VKSampler:SetCompareEnabled, VKSampler:SetCompareOperation, VKSampler:SetMinLod, VKSampler:SetMaxLod, VKSampler:SetBorderColor, VKSampler:SetUnnormalizedCoordinates
- Added enums VK_SAMPLER_MIPMAP_MODE, VK_SAMPLER_ADDRESS_MODE, VK_COMPARE_OP, VK_BORDER_COLOR
20 Mar 2016
- Removed ConVar "opengl_version"
12 Mar 2016
- Added class "VKEvent"
- Added vulkan.create_event and vulkan.create_gradient_texture
11 Mar 2016
- Added library "vulkan"
- Added classes "VKTexture", "VKImage", "VKImageView", "VKSampler", "VKFramebuffer", "VKRenderPass" and "VKContext"
- Changed overloads for WITexturedShape:SetTexture and WITexturedShape:GetTexture
10 Mar 2016
- Improved font rendering for large fonts
02 Mar 2016
- Removed convars "debug_opengl_enabled"
- Removed startup options "-gldebug", "-opengl" and "-shader"
21 Feb 2016
- Fixed collision object positions not changing if an entity with multiple collision objects was rotated using BaseEntity:SetAngles / BaseEntity:SetRotation
19 Feb 2016
- Added PhysRigidBody:GetBoneID and PhysRigidBody:SetBoneID
16 Feb 2016
- Fixed Entity:SetPlaybackRate having no effect
- Fixed "render_unlit" console command not working
- Updated french localizations (Thanks, Gedo789!)
15 Feb 2016
- Added Texture:GetSamplerID
- Added console command "cl_render_texture_quality"
- Added EnvDirectionalLight:GetAmbientColor and EnvDirectionalLight:SetAmbientColor
- Removed TextureInfo:GetSampler
- Removed "render_culling_enabled" console command
- Implemented "Texture Quality" setting
- Fixed crash when exiting the game with active timers which haven't been removed
- Fixed entity shadow positions not being updated if the entity casting the shadow is outside the view frustum
- Fixed world not being rendered anymore in certain cases after a particle effect was on screen
14 Feb 2016
- Renamed "env_light_directional" to "env_light_environment"
- Added "color_ambient" and "max_exposure" keyvalues for entity "env_light_environment"
- Added console command "render_hdr_max_exposure"
- Added "noclip" to key control options
- Added opengl.get_sampler_parameter, opengl.get_sampler_parameteri, opengl.set_sampler_parameter and opengl.set_sampler_parameteri
- Added enum GL_TEXTURE_MAX_ANISOTROPY
- Improved lighting effects
- Fixed texture filtering not working
- Implemented Anisotropic Texture Filtering
13 Feb 2016
- Implemented HDR Lighting, Bloom and Exposure effects
[/CODE][/QUOTE]
I have an nvidea 750 ti if you still need that volunteer
Are you planning on adding some way to allow non-Vulkan capable hardware to still run Sciolyte?
[QUOTE=James xX;50509603]I have an nvidea 750 ti if you still need that volunteer[/QUOTE]
Thanks, but I've changed my mind. Debugging like that is next to impossible and very time consuming, so I ended up buying a Nvidia card (GTX 650 Ti) instead. It'll arrive some time next week, after that I can start tackling the issues with Nvidia cards more efficiently.
[QUOTE=ace13;50521837]Are you planning on adding some way to allow non-Vulkan capable hardware to still run Sciolyte?[/QUOTE]
No, sorry. Keeping compatibility for old/different hardware is extremely time consuming (and frustrating...), I wouldn't be able to get around to doing anything else anymore. I'll try to support all AMD and Nvidia GPUs which are supported by Vulkan, but that's it. You can find a full list of them [URL=https://developer.nvidia.com/vulkan-driver]here[/URL] (for Nvidia) and [URL=http://support.amd.com/en-us/kb-articles/Pages/Radeon-Vulkan-Beta.aspx]here[/URL] (for AMD).
I've got a problem here. (Using a laptop btw)
[img]http://image.prntscr.com/image/f1d3bd0399f04e438ff0eb3a6dd0ebda.png[/img]
Specs:
Intel Pentium 2020M (2.4GHz, 2MB L3 cache)
NVIDIA GeForce 710M with 1GB Dedicated VRAM
8 GB RAM
64-bit Win7 OS
Does it mean I can't run it?
----
Also right after pressing OK it pops up another message
[img]http://image.prntscr.com/image/d1926ffd543243369e93eaf9ae975801.png[/img]
[QUOTE=Tw1x4s;50901930]I've got a problem here. (Using a laptop btw)
[url]http://image.prntscr.com/image/f1d3bd0399f04e438ff0eb3a6dd0ebda.png[/url]
Specs:
Intel Pentium 2020M (2.4GHz, 2MB L3 cache)
NVIDIA GeForce 710M with 1GB Dedicated VRAM
8 GB RAM
64-bit Win7 OS
[/QUOTE]
Looks like you don't have the Vulkan drivers installed, make sure your drivers are up to date:
[url]https://developer.nvidia.com/vulkan-driver[/url]
Anyway, good chance to post some update news:
I've had my last exam for this semester last week, so I've got a bit more time on my hands again. I've fixed a whole bunch of multiplayer-related bugs recently, hopefully that should work properly now. Tested it with 3 other people on an american server, which worked surprisingly well! There's also a [URL=http://wiki.sciolyte.com/index.php?title=Installation#Command-line]command-line version[/URL] of the autoupdater now, for Windows and Linux (Only tested on Ubuntu), which also contains a batch-script to automatically update and run the server.
[IMG_THUMB]http://sciolyte.com/sharex/sciolyte_2016-08-05_10-59-34.png[/IMG_THUMB] [IMG_THUMB]http://sciolyte.com/sharex/sciolyte_2016-08-17_20-46-11.png[/IMG_THUMB]
I've also started working on a level-editor, so far only a prototype:
[video]https://youtu.be/m8R0B2g8tK8[/video]
[IMG_THUMB]http://sciolyte.com/sharex/sciolyte_2016-08-20_22-26-30.png[/IMG_THUMB]
Here's the latest changelog:
[CODE]
Sciolyte ChangeLog
Version 0.2.8
17 August 2016
- Added shader.get, vulkan.create_buffer, VKBuffer:MapMemory, VKBuffer:GetMemory, VKMemory:MapMemory and VKMemory:Flush
- Added enums SIZEOF_VECTOR2, SIZEOF_VECTOR3, SIZEOF_VECTOR4, SIZEOF_QUATERNION, SIZEOF_BOOL and SIZEOF_EULER_ANGLES
- Added classes "DataStream", "Shader", "ShaderDebug" and "VKDescriptorSet"
- Added new overload for vulkan.create_buffer
- Added Entity hook "OnRender"
16 August 2016
- Added ModelSubMesh:GetCenter, ModelMesh:GetCenter and ModelMesh:Centralize
- Fixed prop_physics and prop_static-entities not having physics initialized properly when spawned as clientside entities
15 August 2016
- Added intersect.line_with_obb and intersect.line_with_mesh
- Fixed scene viewport/scissor not being reset after scene has been rendered
14 August 2016
- Added new overload for WIDropDownMenu:SelectOption
- Added ModelSubMesh:SetVertex, ModelSubMesh:SetVertexPosition, ModelSubMesh:SetVertexNormal, ModelSubMesh:SetVertexUV, ModelSubMesh:SetVertexAlpha, ModelSubMesh:SetVertexWeight, ModelSubMesh:GetVertex, ModelSubMesh:GetVertexPosition, ModelSubMesh:GetVertexNormal, ModelSubMesh:GetVertexUV, ModelSubMesh:GetVertexAlpha, ModelSubMesh:GetVertexWeight
- Fixed File:ReadInt64, File:ReadUInt64, File:WriteInt64 and File:WriteUInt64 reading/writing 32-bit integers instead of 64-bit
13 August 2016
- Added vector.create_from_string and angle.create_from_string
- Added class "CallbackHandler"
- WITableRow:SetValue no longer creates multiple WIText-elements within a cell when called multiple times
- Fixed pre-defined colors not being available in GUI lua-state
- Fixed WIFrame not being recognized as derived class from WITransformable
07 August 2016
- Added table.random
06 August 2016
- Fixed debugrenderer-functions not being transmitted to clients properly when called serverside
- Fixed serverside level change not invoking level change on clients
- Fixed crash when loading a map
05 August 2016
- Added "lost packets" information to "net_graph" console command
- Fixed incorrect latency being displayed in "net_graph" console command
- Fixed crash when joining a server which has vehicles already spawned
04 August 2016
- Added more transmission information to "net_graph" console command
- Fixed static entity snapshots being transmitted to clients every tick
03 August 2016
- Added console command "net_graph"
- Added WILine:SetStartColor, WILine:SetEndColor, WILine:GetStartColor and WILine:GetEndColor
- Fixed "WILine" GUI-Elements not working
- Fixed WIText:SizeToContents not taking shadow offset into account if shadow is enabled
02 August 2016
- Added console command "cl_updaterate"
- "connect" command now retries last connection attempt if no arguments are supplied
01 August 2016
- Fixed players not being removed after being dropped from a server
- Fixed crash when vehicle entities are removed
- Fixed sounds occasionally not playing properly
- Fixed various vehicle-related issues
31 July 2016
- Fixed crash when loading textures on AMD R5 series and similar hardware
- Fixed crash when changing render_csm_cascade_count while a directional light source is active
- Fixed directional lights causing dark shadows behind a certain distance to the camera
- Fixed crash when disconnecting from a map
- Fixed chatbox not working
- Fixed WIRoundedRect-elements not being drawn
- "connect" console command now uses port 29150 as default, if no port was specified
30 July 2016
- Added util.is_valid
- Added console command "kick"
- Fixed GUI-element flickering when GUI elements are updated frequently in subsequent frames
- Fixed player movement type not being transmitted properly, resulting in jumpy movement in multiplayer
Version 0.2.7
29 July 2016
- Added file.get_size, util.get_pretty_bytes, util.get_pretty_duration, WIElement:GetAutoAlignToParentX, WIElement:GetAutoAlignToParentY, WIElement:RemoveElementOnRemoval, WITextEntry:IsMultiLine and WITextEntry:SetMultiLine
- Added new overload for WIElement:SetAutoAlignToParent
- Removed WIElement:GetAutoAlignToParent
- Fixed file.find returning multiple files or directories if they exist in multiple mounted addons
- Fixed mouse clicks sometimes not affecting the topmost GUI element
- Fixed occasional crash issues when removing GUI elements inside callbacks
28 July 2016
- Added file.get_canonicalized_path, file.get_file_path, file.get_file_name and file.get_file_extension
- Added gui.inject_mouse_input, gui.inject_keyboard_input, gui.inject_char_input and gui.inject_scroll_input
- Removed "scancode" parameter from WIElement:InjectKeyboardInput
25 July 2016
- Fixed a crash occurrence when loading a map
- Console commands can now be run at startup using launch parameters with the "+"-prefix (e.g. "+map test_lights +startserver")
23 July 2016
- Added WIElement:RemoveSafely and locale.load
- Added new overloads for File:ReadString, File:WriteString and locale.get_text
- Removed File:Read
- Fixed File:Seek, File:WriteUInt64 and File:WriteInt64 throwing error when called
22 July 2016
- Added library "input"
- Added WIElement:OnVisibilityChanged
- Removed game.get_key_state, game.get_mouse_button_state and gui.get_mouse_pos
- Renamed WIElement:SetMouseMovementCheckEnabled to WIElement:SetCursorMovementCheckEnabled, WIElement:GetMouseMovementCheckEnabled to WIElement:GetCursorMovementCheckEnabled, WIElement:MouseInBounds to WIElement:IsCursorInBounds, WIElement:PosInBounds to WIElement:IsPosInBounds, WIElement:GetMousePos to WIElement:GetCursorPos, WIElement:OnSetAlpha to WIElement:OnAlphaChanged, WIElement:OnSetColor to WIElement:OnColorChanged and WIElement:OnSetSize to WIElement:OnSizeChanged
21 July 2016
- Added Player:Kick, GMBase:OnPlayerDropped, GMBase:OnPlayerReady and GMBase:OnPlayerJoined
- Added game callbacks: "OnPlayerDropped", "OnPlayerReady" and "OnPlayerJoined"
- Added enum CLIENT_DROPPED_REASON
18 July 2016
- Updated Linux dedicated server to latest version
- Increased default timeout duration from 25 to 90 seconds
16 July 2016
- Fixed server browser not listing servers correctly
- Added class "WIIcon"
Version 0.2.6
15 July 2016
- Fixed incorrect port being used when starting a server
- Changed default UDP port from 29151 to 29150
- Renamed File:ReadInt to File:ReadInt32, File:ReadUInt to File:ReadUInt32, File:ReadShort to File:ReadInt16, File:ReadUShort to File:ReadUInt16, File:WriteInt to File:WriteInt32, File:WriteUInt to File:WriteUInt32, File:WriteShort to File:WriteInt16 and File:WriteUShort to File:WriteUInt16
- Renamed NetPacket:ReadInt to NetPacket:ReadInt32, NetPacket:ReadUInt to NetPacket:ReadUInt32, NetPacket:ReadShort to NetPacket:ReadInt16, NetPacket:ReadUShort to NetPacket:ReadUInt16, NetPacket:WriteInt to NetPacket:WriteInt32, NetPacket:WriteUInt to NetPacket:WriteUInt32, NetPacket:WriteShort to NetPacket:WriteInt16 and NetPacket:WriteUShort to NetPacket:WriteUInt16
- Added File:ReadInt8, File:ReadUInt8, File:ReadInt64, File:ReadUInt64, File:ReadLongDouble, File:ReadVector2, File:ReadVector4, File:WriteInt8, File:WriteUInt8, File:WriteInt64, File:WriteUInt64, File:WriteLongDouble, File:WriteVector2, File:WriteVector4
- Added NetPacket:ReadInt8, NetPacket:ReadUInt8, NetPacket:ReadInt64, NetPacket:ReadUInt64, NetPacket:ReadLongDouble, NetPacket:ReadVector2, NetPacket:ReadVector4, NetPacket:WriteInt8, NetPacket:WriteUInt8, NetPacket:WriteInt64, NetPacket:WriteUInt64, NetPacket:WriteLongDouble, NetPacket:WriteVector2, NetPacket:WriteVector4
- Removed File:ReadUChar and File:WriteUChar
- Removed NetPacket:ReadUChar and NetPacket:WriteUChar
- Changed return type of File:ReadChar and parameter of File:WriteChar from int to string
- Changed return type of NetPacket:ReadChar and parameter of NetPacket:WriteChar from int to string
14 July 2016
- Added _G.frame_time and WITransformable:GetDragArea
- Fixed occasional crashes when loading shaders
- Fixed File:Read throwing error when called
13 July 2016
- Added game.get_key_state and game.get_mouse_button_state
- Fixed math.snap_to_grid returning an unsigned integer instead of signed
12 July 2016
- Added overload for game.create_model for creating anonymous (nameless) models
- Fixed drop-down menues not opening properly
11 July 2016
- Lua errors now provide additional information
10 July 2016
- Added WIElement:CallCallbacks
- Added overloads for Vector2 and Vector4 to vector.to_min_max
- Added class "WITransformable"
09 July 2016
- Added WIElement callback and hook "OnRemove"
- Added util.calc_world_direction_from_2d_coordinates, Camera:GetRight, Camera:GetNearPlanePoint, Camera:GetFarPlanePoint, Scene:GetWidth, Scene:GetHeight, Scene:GetSize, Scene:Resize and gui.get_window_size
- Added CollisionMesh.CreateBox and ModelSubMesh.CreateBox
08 July 2016
- Added EnvSpotLight:SetOuterCutoffAngle, EnvSpotLight:GetOuterCutoffAngle, EnvSpotLight:SetInnerCutoffAngle, EnvSpotLight:GetInnerCutoffAngle and Entity:GetClientIndex
- Added game.clear_callbacks, game.get_scene_camera, game.get_draw_command_buffer, game.get_setup_command_buffer, game.draw_scene, game.create_scene, game.get_scene, gui.get_cursor, gui.set_cursor, gui.get_cursor_input_mode, gui.set_cursor_input_mode, vulkan.create_framebuffer, vulkan.create_render_pass and vulkan.create_render_target
- Added class "Scene"
- Added enums CURSOR_MODE, CURSOR_SHAPE and RenderFlags
- Fixed player collisions ending up too big after crouching / uncrouching
- Fixed spotlights being rendered incorrectly with an outer cone != 45 degrees
- Fixed crash when calling gui.get_mouse_pos
- Renamed console command "flashlight_toggle" to "flashlight"
Version 0.2.5
07 July 2016
- Fixed crash when loading a map while MSAA is enabled
- Fixed crash issues on AMD GPUs
- Fixed text in keybinding menu being cut off when assigning new keys
- Added shader definitions GLS_VENDOR_AMD, GLS_VENDOR_NVIDIA and GLS_VENDOR_INTEL (and equivalents for HLS)
06 July 2016
- Fixed remaining issues on Nvidia GPUs
- Optimized shaders
- The path for the 'include'-function can now be specified relative to the lua-directory by adding either '/' or '\' as prefix
- Added return values for game.call_callbacks
- Added game callbacks: "OnChatInput" and "OnPlayerChat"
- Fixed arguments passed to game.call_callbacks arriving in inverted order for the actual callback functions
- Fixed NetPacket:ReadEntity returning incorrect type of entity in some cases
- Fixed gui.create returning incorrect type for "WILine" gui elements
26 June 2016
- Fixed various issues on Nvidia GPUs
23 June 2016
- Added BaseCharacter:GetHitboxPhysicsObject
- Added TraceData:SetCollisionFilterGroup
- Added "hit_report" attribute to util.fire_bullets
- Renamed TraceData:SetCollisionMasks to TraceData:SetCollisionFilterMask
22 June 2016
- Added "hitbox" model compiler command
- Added COLLISIONMASK_PARTICLE, COLLISIONMASK_CHARACTER, COLLISIONMASK_PLAYER_HITBOX, COLLISIONMASK_NPC_HITBOX, COLLISIONMASK_CHARACTER_HITBOX and COLLISIONMASK_ALL_HITBOX
20 June 2016
- Added mesh.calc_smallest_enclosing_bbox
18 June 2016
- Added library "mesh"
17 June 2016
- Added 140 pre-defined colors for "Color" class
- Added console command "debug_hitboxes"
- Added Entity:GetHitboxCount, Entity:GetHitboxBounds and Model:GetHitboxBones
16 June 2016
- Added Model:AddHitbox, Model:GetHitboxCount, Model:GetHitboxGroup and Model:GetHitboxBounds
- Added DebugRendererObject:SetPos, DebugRendererObject:GetPos, DebugRendererObject:SetRotation, DebugRendererObject:GetRotation, DebugRendererObject:SetAngles and DebugRendererObject:GetAngles
- Added new overloads for debugrenderer.draw_box
- Added HITGROUP enums
15 June 2016
- Added class "BaseCharacter"
- Added game callback: "OnActionInput"
- Added Entity:GetPitch, Entity:GetYaw, Entity:GetRoll, Entity:SetPitch, Entity:SetYaw and Entity:SetRoll
- Moved Player:GetViewAngles, Player:SetViewAngles, Player:GetViewForward, Player:GetViewRight, Player:GetViewUp, Player:GetViewRotation, Player:SetViewRotation, Player:GetUpDirection, Player:SetUpDirection, Player:GetSlopeLimit, Player:SetSlopeLimit, Player:GetOrientationAxes, Player:GetOrientationAxesRotation, Player:GetShootPos, Player:GetStepOffset and Player:SetStepOffset to BaseCharacter class
14 June 2016
- Added missing mipmaps for player model textures
- Added material parameter "mipmap_load_mode"
- Fixed players and player shadows being rendered at a wrong position
13 June 2016
- Fixed occasional crash when exiting a map
- Added overload for Entity:SetModel
[/CODE]
Thank you, I got the driver issue solved, but I still can't seem to launch it. When I try to launch it from launcher, nothing happens at all, it's not launching for me and there's no process in the task manager. I also tried manually launching the .exe as administrator, but no luck...
Some more improvements on the editor:
[HD]https://youtu.be/KoXhFfZUspQ[/HD]
Sorry, you need to Log In to post a reply to this thread.