Thursday, November 26, 2015

Hosting webserver on Mac with Python

I needed to host a webserver with basic setup to load a file for a project. Here is what I did

1. in Mac, I opened terminal, and went to the folder that had index.html and typed
python -m SimpleHTTPServer 8000
This spit out the following log
Serving HTTP on 0.0.0.0 port 8000 ...
And it hung there. Which is indication that the server is running on port 8000

That is all that you would have to do to host a webserver on Mac with python.

In order to access this file from a different system, we need the name or ip address for localhost.
ip address can be obtained by typing ifconfig in terminal, and getting the inet address of en0 section, if you are connected to the internet via ethernet LAN cable.

Or you can go to system preferences -> Network and get the ip address given in the right side section of the preference window in Mac

After getting the ip address, if you type http://xxx.yyy.zzz.uuu:8000/index.html, it should display the webpage.


Hope this helps. 

Thursday, November 19, 2015

CPPCheck and latest 1.71 version


I normally use CPPCheck to verify the code sanity in my c++ projects. Few days back I tried to update to latest from 1.69 version. I uninstalled 1.69, and installed latest 1.71 from http://cppcheck.sourceforge.net. But when attempting to run the application, it says MSVCP140.dll missing.

Here is how I fixed it, and thought this blog post might help others who also have similar issue.
This dll belongs to MS Visual C++ as the name in the dll suggests. Downloading Visual C++ redistributable for Visual Studio 2015, even though you dont use 2015 version, should fix this missing dll issue. It can be downloaded and installed from https://www.microsoft.com/en-us/download/confirmation.aspx?id=48145


Hope this helps. 

Sunday, January 25, 2015

Global Game Jam 2015

About the Game:
This year's theme was "What do we do now?"

The Maze is ALIVE.. ALIVE.. you hear ?
You and your friend have to escape alive and sane.

There are multiple exits. Some are blocked, some are not. You (green color coded) have to exit through your exits (green color coded). Your friend (red color) has to exit via their designated exits (red color). But there are door blocks stopping you from escaping via some of your exits.

Oh! look there is switch some where in the maze to make those obstacles disappear. But you cannot pull its trigger. Nope. Your partner (other player) has to do that for you. And vice versa, you (blue) can tap the switch to destroy the door blocks for your friend's exits(red).

There are some unhindered exits, that you can escape through. But what about your play pal? If they cannot escape from the maze because all of their exits are blocked, and you got selfish and left them to die in maze, you don't win either. You both have to escape in order to win the game and laugh about it later.

The maze is alive and crazy. It can make you lose track of yourself and think you are invisible. You have to count your steps( imagine proper movement count) to exit when invisible on screen.

Sounds Easy?
You have to escape, and you have to help escape your friend,  in exactly half a minute. Just 30 seconds.


Technical aspects:

Maze is procedurally generated every time game restarts, by using perfect maze generation algorithm (Recursive Division). Number of exits change each time, and door blocks change location and exit doors on each run. Switch's location and players' location changes randomly at every restart.
Simple collision exits, where the players if they bump into each other, cannot proceed, and one has to leave way for the other. After all, this is a cooperative game play mode.

First Game Jam for me. And first time I am using Unity for a concrete , non prototype game.

Code here : https://github.com/swtsvn/GGJ15Sujatha
Global Game Jam Page here : http://globalgamejam.org/2015/games/haunted-maze

Page is yet to be complete. Check back soon.

Thursday, February 13, 2014

Beginners GPU Debugging with Visual Studio 2013

I decided to try out the new GPU debugging option with VS 2013 Professional. It was also available in VS 2012. But couldn't get a chance to try it out with 2012.

So here goes my experience. Hope this helps out anyone else interested in GPU debugging with Visual Studio.
Please Note:
I am assuming people who are reading this blog would have beginner's level knowledge about GPU debugging. If not, I would suggest getting acquainted with GPU debugging using any tools including AMD'S GPU Perf that is available for free for GPU debugging on Windows platform, or "PIX for windows" by Microsoft, before continuing to read this blog. This is not to say that this blog is of any different level. This blog is again beginners level GPU debugging with Visual Studio 2013. . This is to just inform that prior knowledge is required and can be gained using Freewares provided by GPU Chip Giants like AMD and NVIDIA and Microsoft.

Also the GPU debugging is a feature supported only in VS Pro and higher models of VS

------------------------------------------------------------------------------------------------------------

1. GPU Debugging had to be enabled for the project. I used the instructions here http://msdn.microsoft.com/en-us/library/hh873126.aspx
-The option for accelerator in my project said GPU Software Emulator though. The code was not written with accelerator::direct3d_ref accelerator in mind.

2. Ctrl+F10 (Run to Cursor) Debug option did not work as expected. Did not break anywhere, not sure if it is because the project had disabled cursor in its code, or due to some other reason.

3. Debug -> Graphics -> Start Diagnostics Started the Game, and allowed to capture frame by hitting "Print Screen" button.

4. Once the project is exited, now it is time to debug those captured frames.

5.Double clicking any frame, leads to draw calls display, for that frame. The API calls could be searched within that Graphics Events List Window.

6.Double clicking on each draw call displays RenderTarget with the objects drawn so far in the window marked "Graphics Experiment.vsglog until that draw call, like any other good GPU Debugging tool.

7.Clicking on the link ID3D11DeviceContext shows the context, textures, raster state etc in D3D11 Device Context Window.

8. The pixel shader and vertex shader did not show the source code, most likely because the shaders were not compiled with debug info.

9.I wanted to verify why a certain object did not render on screen, so I right clicked the draw call in the Graphcis Event List and invoked "Pipeline Stages" Window

10. Clicking on Vertex Shader Play button Brings up the Shader debugging window. It shows disassembly code now because the shader was not compiled for debug. Same goes for pixel shader.

11. Looks like the mesh drawn is of size 0, meaning Scale was set to 0 in code. Debugging into code, the issue was fixed happily. Thanks to VS 2013 GPU Debugging.

12. There are other cool features as well and much more to experiment with.  For e.g. you can view frame rate for that frame (Vertex Shader.png -> Advanced tools -> View -> Frame Rate).

------------------------------------------------------------------------------------------------------------

All of this is pretty cool. The reasons given by Microsoft as to why we need VS GPU debugging when there is PIX for Windows (as part of DirectX SDK), is that we can also add code to capture frames, for applications that run on tablets or devices that do not have visual studio, then later debug those captured frames using Visual Studio, which sounds pretty good in terms of flexibility and in terms of game development or application development for mobile platforms. If you have tried this feature, please do share feedback on how this flexibility scores in your opinion.

One major concern would be running out of memory in VS 2013/VS 2012. Big projects that run fine in 2010 seem to crash VS in 2012/2013. High RAM consumption was always an issue with Visual Studio. But that is a altogether totally different topic. So lets not dive into that here deeper. But if you have experienced it, feel free to share your opinions on it.

Ending my blog here. I will update as much frequently as I can.

Monday, February 22, 2010

It is interesting to learn about development of facebook app "Farmville" and other Zynga games. I personally liked farmville because it always came up with new stuff to interest and retain players. Just when I would think that clicking each tree to harvest was kind of a cumbersome task, farmville team would launch a new cool feature like adopt a lonely reindeer, or christmas tree, or pet cats and gain ribbons to keep me hooked on to the game. It is refreshing to hear the same thought from the Chief-game-designer of farmville: Brian Reynolds. Please watch the video below to learn more about farmville-behind the scenes information.

Monday, February 8, 2010

Usability: the least you can do

The following is a video that I found interesting on common simple things to do about website usability that could possibly increase market value and viewer rate of a website. Here goes the video of Steve Krug's presentation