Binsk
Member
EDIT: This project is long dead, poorly organized, and will need a complete rewrite to work with current systems. I may do so in the future but at this point in time it is only good as a casual reference.
Hello everyone.
Introduction:
I have been trying to add support for the HTC Vive to GameMaker and finally have something to show. I have a fully working system here that is technically capable of making a full VR Game. The only thing holding it back currently is the need to copy the render surfaces into a buffer each step in order to pass the texture data to the DLL. This still happens fast enough that you can maintain 90fps with a decent CPU and, since most of VRs general limitations are because of the GPU, I expect decent games can still be made if designed with efficiency in mind.
Download:
You can get access to the source code and binaries from my github repo.
My DLL and source is covered under the MIT license, however it requires some 3rd party libraries such as GLEW, SDL and of course OpenVR. Each library contains its own license so make sure to check those out if you decide to make something with this extension.
Hardware:
You need a beefy computer to be able to run VR as well as the appropriate VR hardware. The minimum GPU requirement is a Nvidia GTX 970 and you will need at least one base-station and a VR headset along with all attachments.
If you have an underpowered GPU then you will experience severe jitter with your camera. If you do not have the VR setup then this system will not boot.
I have not tried this with the Oculus because I do not (and will not) own one. OpenVR is supposedly compatible but I handled the controller input with the Vive in mind specifically so controls may map funny (and a few axes are not accounted for). If you have an Oculus and try this out let me know how it works!
Final Notes:
I started this project as a proof of concept and it remains as such. While it is fully functional there are a few things holding it back such as the buffer requirement. This means that to design anything of substance with this system you are going to have to have experience and know what you are doing in order to make it run smoothly.
Also, you will need to know how to handle 3D via matrices. I provide several matrix functions in my GML code but you will need to know what matrices to multiply together and how to assign them and render to a surface correctly. I only provide the required matrices to render with but you have to know how to use them.
As for features I have support for head tracking, vive controller tracking as well as related digital / analog button, touchpad, and trigger support. There is system and compositor error checking as well as playspace bound retrieval and chaperone state detection. That is where the features end as that is what I suspect is essential to make a game. There are other VR features that I have not implemented but if you need them let me know or feel free to contribute.
I would love to hear feedback or, even better yet, try out something you are making with this project! Feel free to leave a post or a link here! Thanks for your interest. Should this garner enough interest then I may consider maintaining it and porting it efficiently over to GMS2.
Hello everyone.
Introduction:
I have been trying to add support for the HTC Vive to GameMaker and finally have something to show. I have a fully working system here that is technically capable of making a full VR Game. The only thing holding it back currently is the need to copy the render surfaces into a buffer each step in order to pass the texture data to the DLL. This still happens fast enough that you can maintain 90fps with a decent CPU and, since most of VRs general limitations are because of the GPU, I expect decent games can still be made if designed with efficiency in mind.
Download:
You can get access to the source code and binaries from my github repo.
My DLL and source is covered under the MIT license, however it requires some 3rd party libraries such as GLEW, SDL and of course OpenVR. Each library contains its own license so make sure to check those out if you decide to make something with this extension.
Hardware:
You need a beefy computer to be able to run VR as well as the appropriate VR hardware. The minimum GPU requirement is a Nvidia GTX 970 and you will need at least one base-station and a VR headset along with all attachments.
If you have an underpowered GPU then you will experience severe jitter with your camera. If you do not have the VR setup then this system will not boot.
I have not tried this with the Oculus because I do not (and will not) own one. OpenVR is supposedly compatible but I handled the controller input with the Vive in mind specifically so controls may map funny (and a few axes are not accounted for). If you have an Oculus and try this out let me know how it works!
Final Notes:
I started this project as a proof of concept and it remains as such. While it is fully functional there are a few things holding it back such as the buffer requirement. This means that to design anything of substance with this system you are going to have to have experience and know what you are doing in order to make it run smoothly.
Also, you will need to know how to handle 3D via matrices. I provide several matrix functions in my GML code but you will need to know what matrices to multiply together and how to assign them and render to a surface correctly. I only provide the required matrices to render with but you have to know how to use them.
As for features I have support for head tracking, vive controller tracking as well as related digital / analog button, touchpad, and trigger support. There is system and compositor error checking as well as playspace bound retrieval and chaperone state detection. That is where the features end as that is what I suspect is essential to make a game. There are other VR features that I have not implemented but if you need them let me know or feel free to contribute.
I would love to hear feedback or, even better yet, try out something you are making with this project! Feel free to leave a post or a link here! Thanks for your interest. Should this garner enough interest then I may consider maintaining it and porting it efficiently over to GMS2.
Last edited: