Jan 16

Mail Blasts and You

So, I’ve been doing mail blasts lately and trying to discover the best bang for buck. I’ve reviewed a good 10 or 20 top mail marketing systems in the industry, and have concluded that my favorite thus far is: https://mandrillapp.com/
It has a pretty back end. It is simple to interface with the API. It has a 12k limit per month for free, and in general, it just works.

If you’re in the market for mail marketing, give it a try. You may be pleasantly surprised.

May 05

Comet Turret and Transium

Tried to simulate the rover hugging of PV.

Added Transium. I’m planning to design a 1mx1m box collider around it that when entered, causes a hit to happen on the transium that sees if the unit can pick it up or not. What if a rover with a ghost driving it picks it up? My plan: Not let it add TU. Only as an avatar or a mule/leech.

Also added Comet Turret. I still have some inheritance challenges I’d love to resolve, however networking has been that ugly interface I still want to incorporate properly. As my artist gives me models, I can’t resist the urge to put it in, since it gives the appearance the project is progressing more (since code is hard to track).

May 04

Behemoth

added behemoth. Still doing lots of internal (less easy to show) code.

The hard part about the behemoth is that it’s our first walker, so I need to sit down and get it animated.

We used this for conceptualizing.

Apr 30

Project Visitor catch up post.

Originally I was posting my updates here, and I still plan to, but they have an image limit and I tend to spam it so I’m going to use this for progress updates too!

Here’s my past updates:
4/14

4/15

4/16
Added Tain/Jitter (it makes sounds and animates all cool like.

and MASC, and got some textures in.

4/17
Mainly networking stuff, got basic client/server interactions, movement. Got MASC textured. HOD was also textured, but had some importing issues, so here’s a fast render in maya.:)

4/18
Spent more time with networking, but took a break to muck with HOD.. put efforts in recreating the original HOD.. I think it looks pretty decent!

4/19
Bumpmapping/specular shaders, real basic prototype.

4/20
Worked more on multiplayer, positioning, rotation. (Never done Unity/Windows Networking before, so a lot of learning)

4/21
Here’s the first network attempt, Visiter was nice enough to try it out with me.

Guns shooting, corp respect, respawning, network sync, etc.

Added basic login UI

4/22
Did some more networking testing, and R&D for extrapolating solutions

4/23
Did some avatar physics tweaks, added ridigbodies instead of character colliders.
Also started writing a rover calculator in php to help me understand internal values better (and be helpful to others)

4/30
Added Dreadnaught/Maelstrom

First building: Added Rover Yard (not skinned yet, and not scaled properly)

Sep 21

Code-Based Perlin Terrain Generator (with List container) Inside Unity

This is pretty special case, but I needed to generate 2 randomly generated textures with same seed inside unity, this took me about 2 hours to fetch all the silly notations since this is terribly documented.

If you use this script, feel free to reply in thanks.


//in your public declaration class
	public List terrainObject = new List(); //This is the terrainObject Entity
	public List terrain = new List(); 

//in your function:

		//Generate 2 Terrain objects
                int lastIndex; //track last created instance
		Terrain tmpTerrain; //temporary terrain script controller
		TerrainData tmpTerrainData; //temporary terrain data
		SplatPrototype[] tmpSplat; //temporary splat for texture data
		for (int i = 0; i < 2; i++) {
			terrainObject.Add (new GameObject()); //Create a new empty object.
			lastIndex = terrainObject.Count-1; //Last index
			terrainObject[lastIndex].AddComponent(typeof(Terrain)); //add terrain component
			tmpTerrain = terrainObject[lastIndex].GetComponent("Terrain") as Terrain; //set component to tmpTerrain
			tmpTerrainData = new TerrainData(); //create new terraindata
			tmpTerrainData.size = new Vector3(100,1000,100); //set up size of data
			tmpTerrainData.heightmapResolution = 1025; //set up resolution
							
			tmpTerrain.terrainData = tmpTerrainData; //set terraindata to terrain
			tmpSplat = new SplatPrototype[1]; //set from 1 to number of splat/textures you use
			tmpSplat[0] = new SplatPrototype(); //set  up new splat and texture details etc
			tmpSplat[0].texture =  (Texture2D) Resources.Load ("Grass", typeof(Texture2D));
			tmpSplat[0].tileSize = new Vector2(15,15);
			tmpSplat[0].tileOffset = new Vector2(0, 0);
			tmpTerrainData.splatPrototypes = tmpSplat; //set splat to terraindata
			tmpTerrainData.alphamapResolution = 1025;  //set resolutions
			tmpTerrainData.baseMapResolution = 1025;
			
			terrainObject[lastIndex].AddComponent(typeof(TerrainCollider)); //create collider
			((Terrain)terrainObject[lastIndex].GetComponent(typeof(Terrain))).terrainData = tmpTerrainData; //set terrain to terraindata
			((Terrain)terrainObject[lastIndex].GetComponent(typeof(Terrain))).heightmapPixelError = 10; //error handling stuffs
			
			terrainObject[lastIndex].AddComponent(typeof(TerrainToolkit)); //optional: use toolkit for perlin generation
			terrainObject[lastIndex].name = "Terrain"+lastIndex; //name terrain with index noted
			
			terrain.Add (terrainObject[lastIndex].GetComponent("TerrainToolkit") as TerrainToolkit); //track terraintoolkit for later calls
			lastIndex = terrain.Count-1; //set index for script
			terrain[lastIndex].PerlinGenerator(4, 1.0f, 8, 0.8f); //set attributes (on api)
		}
		terrainObject[1].transform.position = new Vector3(2000,0,0); //relocate second terrain to a new location
Jul 01

Quick Reference Flash Messages From Any Controller Inside Yii

For more documentation, please see Documentation about Flash Messages

 /* Shortcut functions to setting flash messages */
  public function flash_success($msg) {return $this->setFlash('success', $msg);}
  public function flash_notice($msg)  {return $this->setFlash('notice', $msg);}
  public function flash_error($msg)   {return $this->setFlash('error', $msg);}
  
  /* Magic flash message handling function */
  public function setFlash($type, $msg)
  {
    if (Yii::app()->user->hasFlash($type))
      $msg = Yii::app()->user->getFlash($type) . '
' . $msg; return Yii::app()->user->setFlash($type, $msg); }