Hello everyone! Due to popular demand finally I’m releasing project sources of the Unity3D Indie Portal Effect. In two words, the technique is based on using multiple cameras (3 in this case) and then selectively drawing just Z-values of the portal gates in the 1st pass so that they leave opening in the rest of geometry due to Z-test. This is followed by the 2nd and 3rd passes which clear Z-values of the portal gates and allow the scene to be drawn in the openings from 2 other cameras. The order of drawing things is managed by camera ordering and render queues ordering. On top of that there is a script positioning the 2 helper cameras appropriately relative to the portal gates and to the main camera. Walking through the portals is handled separately by the teleportation script. Currently it works only for the player but there’s been some effort to teleport rigid bodies as well. I hope you make some really cool games/demos/etc. with this, I’d like to think, smart technique. It requires no stencil, no render to texture, just plain old shaders and multiple cameras. Pretty neat, huh? I insist you let me know if you create something with this technique!!! I’m very very curious to see it put to good use!!! Giving me some credit also wouldn’t hurt 😉 Enjoy!
Binary (Win32): unity_portal_effect.zip
Project Sources: unity_portal_effect_source.zip
WebPong was supposed to be a multiplayer clone of Pong running on WebSockets and WebGL/BabylonJS library for 3D graphics. As it turned out that pong in real 3D (6 degrees of freedom) isn’t really that much fun, I decided to convert it into a simple ball shooting game with a couple of rules: at most 5 balls can be launched by each player at a time, ball lifetime is 5 seconds, ball becomes “activated” when it collides with something, a player gets killed after being hit by any active ball 5 times. Players are represented as pyramids flying around completely freely within a box scaffolding. Now, to the cool feature of this software. In order to play the game with your pal, all you have to do is open either http://algoholic.eu/webpong/ or https://algoholic.eu/webpong/ (if WebSockets on port 80 do not work for you; check http://www.websocketstest.com when in doubt), then pass her the address you’re redirected to and voila! The second she opens the page you’re both playing your very own private match. It’s my courtesy to donate some bandwidth to this game at least for the time being. If it gets too popular I reserve the right to take the server down 😉 The purpose was just to demonstrate what I consider friendly two-people multiplayer, without registering, “creating” games or figuring out how to join the same existing table/lobby/match. I could probably patent it in the crazy world of patent trolls but who really cares, I just want to have fun 😉 Plus by publishing this right now I’m closing the door for anyone to patent it in the future. Surprise “geniuses” lol, it’s elementary. No easy patents for ya. It’s also the only multiplayer example of using BabylonJS that I’m aware of. The controls are A/W/S/D for movement, click and drag the mouse to look around, SPACE to shoot.
There’s one more juicy bit left to the story, the one for more tech-savvy readers. It’s about how I set up the WebSockets server. So, I decided to give NodeJS a go. It was a breeze to get WS running using the WebSockets-Node module, however then I had an issue with Apache which was handling all of my HTTP(S) traffic. As WS proxying support has been added to Apache only very recently and I didn’t want to go through any incompatibility problems with the new version and my legacy config files, I decided to switch the roles and put another NodeJS application on the forefront to distribute the requests properly. Using http-proxy I wrote it in such a way that all HTTP(S) requests are forwarded to Apache, while all WS(S) requests get proxied to the WebPong WS server. Neat, huh? Like this, we’re all happy. To give all the due credit, NodeJS apps are sustained using forever.
Alright, people. So that’s it for the first post of year 2014. Sorry for the long break but I had to put myself back together after Xmas laziness and also needed to get the hang of my new job position (which is Software Engineer in the Blue Brain Project team). So now, invite your friends and enjoy the game, please Cheers!
Massacre 3D is the first 3D game I’ve created. It was over 11 years ago – I was 17 and I knew nothing about programming. Really! I didn’t even know what the heck .h files were for in C++ 😉 I was placing both functions and variables in them and then including them all in one cpp file ;d That’s how Massacre 3D was created and that’s why I never released the source code 😉 Nevertheless I feel some sort of sentiment for Massacre 3D and from time to time I check if it still runs on modern operating systems / hardware. Recently I’ve had some trouble launching it so I decided to refresh the codebase a little bit. That’s Release 2012.12. Nothing changed except for:
1) moving from DirectDraw/WinAPI to GLUT for screen / GL context management
2) porting it to 64-bit Linux (you will need GLEW, DevIL, FMODEX and GLUT in your system to run it, libini is attached)
3) removing some settings from in-game menu – they are still available in massacre.ini file
Though I realize probably I will be the only one interested in playing this updated version of M3D, you are most welcome to give it a try:
Finally, the time has come to release my first more or less complete computer game in quite some time. GraviBall started as a small experiment with custom gravity in Unity3D and quickly grew to be a space arcade with SMG-like feeling. At the moment, it has six levels so it will not take too much of your time and you will have the opportunity to appreciate the novelties and fine touches in all of them.
I created all of the models and textures myself using Blender. For the fractal flames which are used to represent far-away galaxies in the game I used Qosmic fractal flame editor. GIMP and Inkscape were most helpful when making small adjustments and designing the HUD.
I took most of the music from http://www.jamendo.com/ and 3 tracks from http://ccmixter.org/. The music is licensed under Creative Commons or other free for non-commercial use licenses. You will find names of the tracks and artists in the attached CREDITS.txt file and in the Youtube video. I would like to express my gratitude to them for making their creations freely available.
Using the above-mentioned arsenal of completely free tools and media, I was able to create a game that is original and fun to play. I hope you will share my sentiment : ) Enjoy!