ARTICLES

How to find a Programming Job

TLDR

See Below for more info about these top 5:

Angellist

HackerNews – Who Is Hiring

We Work Remotely

Google Jobs Aggregation Widget

Indeed

 

LinkedIn

 

  • “LinkedIn is really worth a lot. Keep it updated, because at a certain point in your life they will just start throwing job offers at you. It’s really amazing.”
  • LinkedIn Inmail directly to senior engineers hiring > feeds with recruiters advertising positions
  • “Really fill out your LinkedIn, every class, every langauge, tool, etc you’ve used, and even attach a copy of your resume to your profile. I found that recruiters are looking for people with certain skills or match certain criteria and are savvier than you would think at searching for people with those skills and criteria. Basically do everything to can to be in the search results for as many recruiters as possible.”
    • “Include frameworks or other technologies you used alongside where and how you used them.
      Don’t attach anything as a general skill in a list unless you are confident you can pass being tested on it.”
    • “I would be careful attaching any framework or language you’ve ever touched in a class. Make sure you are at least slightly brushed up on whatever it is. When I’ve interviewed people for entry level positions, I often ask them about a framework, tool, language, etc. on their resume and they can’t talk to me about it beyond giving a few word description of what it is. That definitely sets off alarms for me.”

      As a new grad, what job search channels am I neglecting? from cscareerquestions

Craigslist

“I wound up getting a job that I found on Craigslist, but I only applied after looking at the company’s website and verifying the position was listed there. Craigslist was another source for job postings for employers that I hadn’t run across on LinkedIn/Indeed/stackoverflow.”

“Seconding this. Got hired off a place on craigslist recently for my first position, Small-Mid sized firm using a tech stack I liked and willing to teach me stuff.”

As a new grad, what job search channels am I neglecting? from cscareerquestions

 HackerNews

Check out the who is hiring post that happens every month on Hacker News. I believe the website http://whoishiring.io maps it to a job board. Never used it to apply but it is helpful in sewrching.   They usually have instructions in the post on how to apply.

Heres the one for August 2018

Sites

  • Angel List
    • Startups.  Sometimes they contact YOU
  • https://whoishiring.io
  • http://weworkremotely
  • https://nacelinknetwork.jobs
  • http://careerminer.co/
  • http://Dice.com
    • Questionable

A bit different

  • Indeed (Aggregator)
  • StackOverflow
  • Glassdoor is pretty good; you get a nice aggregate view of reviews, salary data, and the job itself.
  • Check out Triplebyte.
    • They’re a really fantastic recruiting company. They’ll put you through their own pretty intense set of interviews, and if you pass, they’ll fast track you through the screening process at a bunch of YC companies.
    • OTOH heard they don’t always find jobs with the best salaries

Heres a list of 16 of them

I have aggregated a list of 16 Job search websites. Can you tell me if I missed any? from cscareerquestions

 

Use the Google Job Aggregator Widget

This is a lesser known trick that I found on reddit

google something similar to: ‘java developer near me’

This will bring up search results, the first one should have a blue boarder. Click that widget.

This widget will search multiple job platforms. It will include jobs like when you click careers on a company website.

Last minute job hunting websites from cscareerquestions

Other Approaches

“Apply to companies of interest to you that aren’t even hiring. Find someway to reach out/email them (this is good especially if they have a ‘we’re not hiring right now but if youre awesome then let us know!’ clause on their careers page). Theres a good chance that that they might be considering putting up a posting, but just havent done so or are doing the usual internal reference business – it takes time before a posting is already set up and like someone else said, sometimes they are already filled via an internal applicant/reference. Also meetups, network your way in, find ones that are of interest to you and chat with people. Be honest about what you’re looking for and have an elevator pitch ready and keep resumes on hand or better yet, ask them for their email/business card if they mention something like ‘sure ill keep you in mind’ or something. Follow up with them and send you resume/relevant links to projects, thank them for their time.”

“I mostly used Glassdoor(It’s more accurate than LinkedIn for me) and Crunchbase (When I didn’t know where to apply sometimes I’d just find random startups there and email them to see if they’re hiring interns). I’ve put together a list of job resources for students: https://github.com/Nevvea7/career-resources Hope it helps!”

“But I’d say look for a slack channel in your desired area for developers. I’m apart of three different cities slack channels and all three have a jobs channel. There are contract jobs, full-time jobs, part-time, intern positions and sometimes people just looking for some help for a week or two. I’ve seen jobs in those channels that aren’t at all posted online, in fact the job I received was for a job that wasn’t posted or even available yet. Like I said, I was very lucky.”

What website do you use to find a job? from cscareerquestions

 

Signal to Noise Ratio

“As I mentioned in another thread recently, the last time I went job searching, I posted my resume everywhere I could and got awful signal to noise ratio everywhere; the only one that was reasonable at all was Angel List, and I think that’s because I looked through postings and initiated contact myself. My conclusion is that you need to put in the work yourself to find jobs that fit you, because recruiters will not.

Also, I was getting half a dozen new conversations every day and it was draining. More leads is not better.

Don’t post a phone number in the first place – there’s no reason to. When recruiters send you a “I saw your resume when can I call you” email, reply with a template response telling them that you won’t take phone calls until you’ve seen a job description, and you’ll get job descriptions and be able to filter out the 90% that aren’t worth even talking about.”

 

“Dice is where I’ve seen some of my better leads come from. It’s dedicated to technical jobs. But honestly, I’d recommend putting up your resume on all of the job sites you can, more exposure is never a bad thing in my opinion. You’ll get a lot of calls/emails from low quality recruiters trying to get you to put in your resume for every position they have. Just ignore them if you can tell they didn’t even take the time to look at your resume/profile.

With the Easy Apply on LinkedIn, I like to either go directly to the company site and apply there if possible. And if it’s a job I feel would match me very well I like to drop a message to the recruiter who put up the ad. It really won’t hurt to apply to most of the Easy Apply postings, just try not to put in a bunch at the same company, might look bad.”

Confidence and Compensation

“Pro Tip: After having worked at several startups and realizing I was getting screwed on compensation and then moved on to a big company and literally doubled my salary…

Don’t let any of these startups convince you to take a crap ton of worthless stock options in lieu of salary. Treat any stock options as being worth almost nothing….

Expect all their founders to come up with some sob story about how not even they make market rate and how some day you’ll be buying Teslas and shit when they get bought out. They’ll tell you that you need to make a financial sacrifice in order to change the world and some other horseshit. They won’t get bought, you won’t change the world that much and if you do get bought out you’ll be lucky to have a down payment on a house… which you could have saved up for when you made twice as much at a real company….

I’m not saying dont go join a startup. Startups can be cool and you can get some good experience at one but don’t dedicate your life to them. If you are going to go down the startup route trade your lack of salary for something else like more vacation, more flexible hours and 40-hour-tops work weeks (and if you are working even a minute of overtime at that reduced market rate, you are getting even more screwed!). Those options are gonna be worthless–don’t ever let somebody convince you otherwise.”

What website do you use to find a job? from cscareerquestions

Blender – Everything I know about it

History

I downloaded Blender over a decade ago (before Youtube), tinkered with it, and let it rot because I couldn’t figure it out. To be fair I gave it no real investment of my time or energy but I was really happy it was so powerful and I was excited to get to know it when the time was right.  A few years ago I read about Blender and how much it had matured.  The impression I got was that although it works a bit unconventionally it had a fantastic user interface which some people swear by.  A few months ago I downloaded it again when it was time for me to start making games and I read a book about it but it wasn’t until tonight I finally legitimately dug into it and figured out some of the things I can do with it.

Goals

In this article I’ll lay out what I know about the Blender 3D modeling tool and will keep track of the best resources that I find for the swiss-army-knife of 3D tools, the mighty Blender.

What I learned today

I learned a bunch of keyboard and mouse shortcuts:

Select, Deselect, Create, Extrude, Select Objects, Vertices, Edges, Faces.
I learned to turn on “Screencast Keys”

I learned to create cool pipes using bezier curves and related Bevel Objects.

I also learned how to navigate Blender from my MacBook Pro Trackpad.

Specifics

Here I’ll list some specifics that I didn’t mention in the videos above:

Select a segment of faces easily.

select a face, then alt select a nearby edge to select the segment in that direction.

Blender - Select all faces in segment
Blender – Select all faces in segment

You can see it in action in this tutorial

Other Blender Tutorials and Videos

Low Level Computing and Assembly

Low Level Computing and Assembly

On this page I’ll keep resources related to the topic above.  I have always had a special place in my heart for games that ran directly on “bare metal” hardware like consoles or the Commodore 64 because from some perspectives things were so simple and straightforward and there weren’t enormous layers of operating environment to bog your code down.  Of course from other perspectives programming was vastly more complicated back then due to the limitations and quirks of computing and gaming hardware and this page will list some resources about low level things of that nature.  I also have a soft spot for classic computing and gaming so there will likely be plenty of that going on here.

Enjoy!

Low Level Computing

  • This video is about an hour long and explains in detail how your operating system works; for example it explains what happens when your computer boots up and ultimately shows you how to create an extremely bare bones operating system of your own that runs a tiny amount of software that you wrote!
    • #ProgrammingIsBetterNowThanInThe80s
      • @35:00 it shows that you have to do some byte skipping to put characters on the screen
      • Notes To Self: Other reasons: Wolfenstein 3D had to do some black magic with the VGA screen buffer turning the bitmaps sideways to get texture mapping to be fast enough.
      • in the NES video I watched earlier today about programming NES with 6502 assembly it talked about how you had to fill up a background buffer with loops bigger than the processor could handle.
  • On this emulator site you can emulate a bunch of old and new operating systems some with assemblers already installed.
    • I ran windows version 1 (interesting how much it has progressed) and freebsd.
  • This video (called How we fit an NES game into 40kb (~12Min)) has high production values and explains many of the optimizations they used to get their (relatively advanced) NES game to fit in the original NES rom size of 40kb which as you probably know is absolutely freaking tiny by todays standards.  It notably does a fantastic job visualizing how their sprites were optimized to fit in the small amount of graphics memory available (8kb) which allowed them to add more actual content to the game.

Assembly

  • Get started by building and running code that does something in assembly in just 20 minutes total.  The most straightforward way to start dabbling in assembly programming is probably to watch this 10 minute video and then run the software he gives you to build and run an assembly program for the Sega Genesis. I watched the video and less than 10 minutes later I had built and run my first assembly program!
  • Here is a good high level introduction to Assembly on the NES which shows that even though pong is effectively a very simple game, making a pong game isn’t as easy as it might seem when you are working at the lowest levels.
    • It also briefly shows writing to video memory, reading from controller input, interrupts on the NES, etc.
  • Here is a good low level introduction to Aseembly on the NES which goes into way more detail about assembly (its about an hour long) but I haven’t tested whether its easy to reproduce his work.
    • There are links to the source code and the assembler in the video description so you should be able to reproduce what he did.
    • But much of the video is really an exposition of how complicated it was to develop games like this back in the day
    • Heres is the code (from the link in the description of the video)
  • Instant translation between C and Assembler
    • https://godbolt.org

 

How does an ‘if’ statement work at a hardware level

I spent some time preparing an answer to a stack overflow question and although I’m not even sure I answered the question they were asking there is a lot of good information in my answer:

The answer to this has to involve an explanation of what software the hardware is executing.

Background: Each processor has a set of built in codes that tell it what to do (its “machine language” or assembly language) and on modern computers one of those is always a “branch” statement of some sort and I think this wikipedia article) will help answer your question.

More Information: A simple example of this is ‘jeq’ in x86 assembler which stands for ‘jump if equal’ which works like:

JEQ R1,R2,addr // IF R1 == R2 THEN PC addr ELSE PC++

which compares R1 and R2 and if they are equal then the program counter jumps to a location in memory (addr) and starts reading commands from that new location (which would be everything inside the if statements curly brackets). Slide 13 of this presentation has more on this.

A possible explanation of this code:

if (4 < 5)

one instruction would load 4 into register a a second instruction would load 5 into register b a third instruction would compare them and the result would be stored in a ‘condition code’ and a fourth instruction would look at the condition code and either jump the program counter to a new location, or continue executing the next instruction

This page is an easy read and does a good job explaining logic gates and multiplexers which are the building blocks needed to make the circuit you are describing

How some of these instructions are enabled at the circuit level is in these amazing breadboard computer videos

This ALU was included in many original 1970s computers and this data sheet explains what it can do and this answer talks about all of the different conditions that chip can solve.

Heres a video that disassembles a simple C program into machine language and although there is technically no if statement, there are related conditional statements which work somewhat similar.

Here are two answers number 1 number 2 with clues about if statements in assembler

And here is an assembly guide from the university of Virginia.

 

 

 

Unity5 iOS Development Resources

First I’m going to run through this tutorial about “Building your Unity game to an iOS device for testing”

Meta Tutorial

As I work my way through this tutorial I’ll post my findings here.

This tutorial shows how to test a game on iOS for free.  It talks about how if you want to publish to the App Store and do other similar things you may have to pay for a developer license.

Xcode has changed in small ways since this was written.  In the section called Building the sample project to your device using Xcode it says that in the top left you can open the project settings by clicking “Unity-iPhone” which didn’t work for me.  Instead I found project settings in the menu but I don’t think it is right because there is no “general” tab nor any “identity section”.  As a result I didn’t do any of this, but did “generate a new certificate” which was a simple two step process back in the same place where you added your Apple ID (Xcode->Preferences->Accounts)

When I plugged in my iPhone via usb (which I had never done before but only because its a new phone) it opened iTunes and made me verify that I wanted this trusted communication to take place then in Xcode it took a few minutes to “prepare it for debugging”.

Ok when I clicked build it failed and said that I needed to “select a development team in the project editor”.  I did some googling and things have really changed so it wasn’t easy to figure out what to do instead: 1. I found a “Build Settings” in the main editor window that had identity in it which let me select my identity at least.  After that it still required me to select the project on the left, then change the ‘target’ in the drop down just a bove the main editor window.  From there I could get to most of the settings it spoke of earlier.  I set the development team accordingly but then I had to go to the info tab and change the bundle id to something more unique than I had put in (per the tutorial I put com.unity3d.mobiledemo but thats not unique).

After that it still didnt launch so I had to go into my device in the general->device management settings and trust things from this developer.  But after that it totally worked!

Getting my Game to Build and play on my iPhone

This is an entirely different prospect.  I’m going to try doing the exact same things that I did with the other project but I know that my project has differences in its setup so I’m prepared to have to tweak things.

Update: Actually the build worked on the first try!  My game is running on my iPhone now!!!  YAY!

Touch Controls

To get Touch Controls working I may choose to download an asset from the asset store but first I want to see what I’m getting into.

Written tutorial on getting touch working:

http://pixelnest.io/tutorials/unity-touch-controls/

This is a cool tutorial that I found while I was looking for what I need but it doesn’t do what I wanted so I’m bailing on it.

Official tutorial on touch controls:

https://unity3d.com/learn/tutorials/projects/2d-roguelike-tutorial/adding-mobile-controls

This is part of the official rogue like tutorial but I don’t think it does what I am looking for either:

A youtube tutorial on the topic:

This one looks more along the lines of what I’m looking for.  he spends over 60s telling us which of his videos to watch but the code in this is really top notch, tight, elegant and clever.

It was quite good but I saw another video which led me to the asset store where I found this:

Asset Store Options:

https://assetstore.unity.com/packages/tools/input-management/cn-controls-joystick-touchpad-button-and-d-pad-15233

This is free and should do the trick so I’m going to try it out.

Final Virtual Joystick Decision:

I ended up using the CN Controls from the Asset store.  It was really really easy.  I just dragged it into my canveas and changed Input.GetAxis to CnInputManager.GetAxis in my code then built and deployed to my iPhone and it TOTALLY WORKED!!   I’m glad I watched those videos because I now know that I could reproduce this on my own if I had to and I understand most of what these controllers are doing.

 

Problem with Shadows

I found a problem with shadows that only manifested on level 10.

Unity5 Shadows Problem
Scene 10 has problem Scene 9 doesn’t.

One solution I saw at the unity answers suggested increasing the scale of my game, but I don’t think thats wise because of this:

I did NOT end up finding any good solutions online and I believe there is somewhat of a bug but people are pretty religious about this topic for some reason and seem to either think that it “shouldn’t be a problem” because “why do you need more than that distance of shadows anyway!?!” which I think is pretty lame.  Regardless after hours of trial and error (including going back in time in git and copying the entire project and wiping things out behind the senes and re-generating them) I did find somewhat of a workaround.  First I switched build settings from iOS back to Mac/PC and then back to iOS which seemed to clear some shit out and at least made the shadows consistent from one scene to another.   Then I changed the shadow distance to 40 (Edit->ProjectSettings->Quality).  60 might have worked, 100 was pretty bad (My wife said it was Atari 2600 level!).  This does not look nearly as crisp as it looks when the shadow distance is 10 or when you are using the Mac/pc build setting but the lower you go the more disadvantages you get and this was the lowest I could go without seeing any dramatic disadvantages of shadows disappearing and popping up unnaturally toward the back of the screen (it still happens its just not too terribly unnatural).

 

Shadow Distance Differences (iOS Build Setting)
Shadow Distance Differences (iOS Build Setting)

 

 

Code Signing

Half of the times you build (after you’ve plugged your phone in again or done a clean build or for whatever reason) you have to go manually change the Team ID in Xcode but Unity does have a workaround.  In Unity->Preferences->External Tools there is an option to automatically sign your app but you have to put in a Team ID.  I had created one in Xcode (documented somewhat above) but putting that email or my name from there didnt work.  I had to dig deep to find the team.  Almost everyone online pointed me to something that doesn’t exist and said that at developer.apple.com you can find your team id, but since I have the free account atm thats not available from there (There is no Account.Membership section of my account on that site).  I was able to find the right Team ID using a real tricky bash script:

 

 security find-identity -v -p codesigning | awk -F \" '{if ($2) print $2}' | while read acct ; do security find-certificate -a -c "$acct" -p | openssl x509 -text | grep "^ *Subject:" | awk -v acct="$acct" -F , '{if ($3) {sub(/ *OU=/,"",$3);print $3","acct}}' ; done

 

I found that hidden at the bottom of this answer which says that it is a part of the keychain on my Mac (and apparently can somehow be looked up that way as well).

When you run that it takes a few seconds and then spits out the ID then a comma and then the name of the team account you’ve been using in Xcode.  Plugging the ID into Unity worked like a charm.

 

Optimization

When you are done and you want to optimize here is an article all about optimization on mobile

And heres another with a real world game example of optimizing Shadowgun for mobile

Unity5 Scorched Earth Game Tutorial in 2.5d

Unity5 Scorched Earth Game Tutorial in 2.5d

In this tutorial I will walk you through the mechanics of making a scorched tank game.  When I say tank game I’m talking about the classic games: Scorched Earth (PC), Scorched Tanks (Amiga), or Gorilla (DOS), or Worms (all platforms?) or one of many other games of this nature where you launch projectiles at targets.

We will be making it in 2.5d (why? because I like 2.5d!) but the mechanics will apply similarly to a similar game made in 3d and 2d.

I don’t plan on putting much “spit and polish” on this because this tutorial is about showing you the mechanics of the game not how to make a publishable game from start to finish, however many of my other videos and tutorials will fill in all of the gaps you need to pull that off so browse around on my site for more.

Part 1: Turret Rotation

In this Unity5 tutorial I walk you through the mechanics making the first part of a tank game where you will be shooting projectiles and hitting targets. This Unity5 tutorial speaks to the creation of the cannon and the turret and the rotation of the turret as well.  The turret needs to rotate independently of the cannon body and needs to rotate around an anchor point at the end of the cylinder not in the center and this video shows how to do all of that and more.

Part 2: Launching Projectiles

In this video we create a projectile and launch it out of a spawn point with a given direction.

 

Part 3: Constraining Bullet Positions

In this video we constrain the bullet position so they don’t move out of the 2d plane.  I considered doing it with a script but decided that setting up physics objects to bump into and constraining the rigid body position vector was preferable (it behaves more like you would expect it to in this situation).

Part 4: Explosions

In this video I show a few different physics explosions and how to target them only to certain collisions so you don’t go blowing EVERYTHING up! 😉

Part 5: Making it a fun game

The first thing we do in this video is one of the funnest things in the whole tutorial: make every ball go flying at once!  After that I show you how to make it into a complete (albeit very basic) game with just a few added game objects and scripts and it ends up pretty darned fun if I do say so myself!

Thank you so much for working through this tutorial and watching my videos and coming to my website!  I’d love to interact with you so will you add some comments to the video or here at the blog?  Ask questions, ask for clarifications, make suggestions or whatever!  Enjoy your new Unity5 powers and thanks again for coming!

Unity5 Development Diary

Unity5 Development Diary

Thursday Dec 21

I’ve been investigating lots of level design tools and I found one that seems to work really well.  its got subtractive features as well as additive and is pretty mature.  I made a few videos about how to use it although they aren’t edited yet and aren’t uploaded.  Its called SabreCSG.  These should let me make larger levels for Super BelDevere which is what I’ll be working on today: making a large level for that game.

I’ve been having a problem for a while where the ball sticks to the wall no matter how I adjust the bounciness in the physics materials.  I found out that in the physics engine there is a bounciness threshold and below that threshold of speed  in the same linear direction as the wall then those things don’t bounce.  I changed that bounciness threshold to be 0 so lets see how it works … Yup that worked great.  I tested it with a higher number (20) just so I could understand what was going on and it made the game unplayable (just as I suspected).

Monday Dec 11

I have been working a lot on my pong style game called Co-Parenting Beldevere.  In this game Beldevere feels unloved by his deadbeat father so as his mother you have to play both roles (control both paddles) to help BelDevere feel loved.

Co-Parenting Beldevere
Co-Parenting Beldevere

Cut Scene

I spent a lot of time over the last few days working on a simple cut-scene.  When I think about how apparently complicated the cut-scene is I feel like it took me way to long to figure out how to do this part.  Thats just me getting judgmental towards myself but there it is!?!  The more cut-scenes and similar animations I make the better I will get at it. Also I feel like it will be valuable having done it this more difficult way because when I see tools or scripts that make this process easier I will have a point of reference and I will be able to understand the problems they are trying to solve and the advantages to the way they chose to solve them.

Physics

I have had a lot of trouble with the physics in this game.  I’m beating myself up about this a bit too because it seems like they should be so simple, and it was simple to get it working somewhat, but to add convincing English to the ball and to make it feel good was anything but.  The problems were manifold.  Sometimes the ball would get stuck.  Sometimes the English wouldn’t work at all.  My solution as of today feels fantastic and involves adding a shallow sphere collider to the paddles.

Saturday December 2

I went to see my friend Chad Carrie yesterday and he showed me some great ways to use Sketch-Up to make 3D models and import them in.  Here is some of what I learned:

Tuesday November 28

Today I made a 3 part tutorial (Part 1, Part 2, Part 3) about converting your game into stereoscopic for iOS.  There is a lot of important information in these videos about how I pulled this off, but keep in mind that there have been quirky problems (which have apparently nothing to do with the stereoscopic display and work perfect testing on PC before I move it over to iOS)  each time I’ve done it.

Monday November 27

Beldevere in Stereoscopic 3D on Sunday November 28!

Stereoscopic Beldevere
Stereoscopic Beldevere

Marshall and me worked on getting an in game stereoscopic display working for like 4 hours on Saturday night.  We actually got that part working ok pretty quick but then (and I saw this coming) needed to get some form of external control (you can’t touch the screen when the phone is in the VR Goggles.  We eventually gave up at like midnight, but I obsessed about it and found something that night and implemented it the next morning that *mostly* worked.  I was able to tighten it up over the course of the day and show Marshall and his friend and my beautiful encouraging wife Cristi Level 3 of Beldevere in 3D later that night!

Later on that evening I was able to get controls working for all levels as well as the title screen and high score screen and while there are two outstanding bugs it does work and I genericized the stereoscopic camera and UI canvases such that all of my levels benefitted automatically and now you just click a button in the inspector and that level is Stereoscopic 3D!  Its funny how time flies because its just Monday right now but it feels like its been an eternity since that happened.

I also ordered a nice gaming PC on Black Friday which will be here perhaps later tonight and I just picked up a nice monitor from Best Buy (Cyber Monday Sale).

Monday November 20

Yesterday I tightened up some of the code for expanding and shrinking objects.  Today I totally re-worked level 2 scaling it to 1.5x its previous size (x and z) and adding bounding volumes so you can kind of ride the walls a bit.

Yesterday I also experimented with using the terrain features of Unity to make a level 1.  I liked it a lot, however it totally “showed up” the rest of the levels.   At some point I will need to draw the line and say its good enough to ship and if that level looks way smoother than the rest I will feel like I need to make similar changes to all of the rest of the levels to make them catch up to that one.  I’m struggling with where to draw that line.

Saturday November 18

Today I’ve been working with lighting, adjusting it, balancing it, getting all the levels balanced, trying to not wash things out, etc.  I noticed that on mobile especially some things looked weird, even dark.  I started by re-baking all of the lighting for all of the levels, then I worked with the skybox and the default ambient light color making it a light grey. Then I made the directional light a darker gray and adjusted its intensity until it looked about right and that seemed to work out pretty well for all of the levels.

I found a problem with shadows and spent most of the day finding a workaround.   (details in my article on iOS)

Shadow Distance Differences (iOS Build Setting)
Shadow Distance Differences (iOS Build Setting)

Tuesday November 14

Yesterday was really monumental but today I got the controls working on the iPhone!  Just one more thing to do and it will be fully functional on iPhone.  I feel like parts are still “clunky” but it will be a minimum viable product as the saying goes.

Monday November 13

I got my game building and running on iPhone today!  *Huge Milestone!!!*

Sunday October 29

Wow so much progress!  I got sound throughout and really … its a REAL GAME as of just now!  5:00pm sharp.

It starts with a musically backed title screen, moves into a musically backed level with lots of fun sound effects, and when you are done with that it moves into a musically backed high score screen and then back to the level select screen!  I’m so proud!

Thursday October 26

I travelled to see my dad last week and got some good feedback and ideas from him and my mom.  Thanks guys!  I got the skeleton of my new much more interesting scoring system working as well as having fixed a problem I made with the gravity collector.  I got it working on one level but it broke the rest.  It wasn’t a difficult fix.  This week I’ve been working on sounds and music.

Saturday October 14

Got the Gravity Collector working much better.  Occasionally it used to leave dots stranded on accident but it doesn’t do that anymore.  A fun side effect is it ends up swirling the dots around the player and sometimes getting pretty close to a perfect zero gravity orbit (illustrated in the video below) a situation which I’ve cleaned up now but which was cool enough to make a video out of..

Unity5 C# code for gravity collector
Unity5 C# code for gravity collector

Friday October 13

I found out about NavMeshAgents priority field and how it would help me.  Its technically called “Obstacle Avoidance Priority” and although it makes sense in hindsight at first glance I didn’t imagine that other AI NavMeshAgents would be considered “obstacles”.  In fact there is something else in the engine specifically called a NavMeshObstacle which I was just fiddling with yesterday.

Wednesday October 11

I haven’t done much in the last week but today I got some good info from this video which showed me how to make my game look better reasonably quickly.  I can see how this will help but at the same time I did some of the steps and my game didn’t instantly look better but I think with some tweaking it will.

Wednesday October 4

Just got back from Pennsylvania where I went to visit my sister, brother-in-law and niece and I made some progress while I was there specifically making the title screen level select much scroll much smoother.  I also re-did the making of video that I did a few weeks ago shortening it from 6 minutes to 2 minutes.

For my scorch game while I was in Pennsylvania I made it work with two players with shooting on different sides of one controller and balanced out the explosions.  Yesterday I made it keep track of scores for each player

Scorch with Scores
Scorch with Scores

Also I created a video about the simplest way to add a HUD and set the values from anywhere in your game:

And on top of all that I made my first full tutorial series in its entirety today!

http://johnmcgarey.com/2017/10/04/unity5-scorched-…tutorial-in-2-5d/

 

Monday Sep 25

Got a Level Select screen working that lets you clumsily scroll through the levels and select one.  it definitely works but the clumsy parts are the scrolling is abrupt and not smooth, the images in the rear are confusing, button presses get confused when you press too quickly, behind the scenes the image is not the same object as the scene number (they are aligned so it works atm but …) and the the whole look and feel of the screen is inconsistent.

I’m still proud that it works because now you can fire up the game, select a level, then go play that level and get a high score on that level.  Thats a complete one way game!

Level Select Screen
Level Select Screen

Sunday Sep 24

Worked on some side projects today mostly getting the Survival Shooter meta-tutorial done, but also figuring out how to launch projectiles and making a tutorial about that.

Also made some cool little glitches:

and

Saturday Sep 23

Got a pong game working.  Started today.  Finished today.

Friday Sep 22

Last night a friend (Gary) came over and spent some time with my game.  He said that I had made a lot of progress and I appreciated that he came by.  In order to show him the progress I had made I tagged some commits in my git repository and then went through them in stages and today I went back through the same commits in this video.

It shows ho I started this project on August 13 and the progress I made every week or two since then (and there has been a LOT).  Its pretty cool to see the contrast between the first few versions and the latest and it makes me proud of what I have done.  More details are in the ~6min video.
In addition today I got independent high score tables working for each level.  And I figured out a pretty good method for accessing non static singletons statically.

Thursday Sep 21

Fixed fonts and got bouncing off the walls working better

 

Monday Sep 18

Got the High Score system working pretty well yesterday!  I animated the score popup so it spins around gracefully and I also went through every level and changed all the prefabs to match my latest configurations so they all play about the same with the only difference being the landscapes of the levels themselves.  D’oh!  I just realized that I forgot to add power pellets … oh well thats probably a 10-15min total task.

 

Friday Sep 15

Added a title screen and got the HUD text looking way better and more consistent

And I figured out how to really use TextMesh Pro (at least for in game text meshes, using it like this for UI text meshes is still a bit of a puzzle)

Text Mesh Pro
Text Mesh Pro

Got the trick with using 3d in the UI mostly figured out

Wednesday Sep 13

Ive been thinking a lot about scoring but as a result didn’t make a ton of progress in the last few days … until today!

Got a score plugin working (so it tracks your high score persistently) and a score UI setup.  and fixed some problems and made graphical improvements (for example the warp tunnels are cool spirals now).

Added hula hoops to indicate lives, and made the game reset when all of your lives are used up.

Also I got Super Beldevere to shrink when he is losing his powers after he has eaten a power pellet (and added a grace period so you don’t get too caught off guard when he’s just barely done shrinking).

 

Friday Sep 8

Got scoring popups working.

Thursday Sep 7

Tons of progress today.  I added scoring, multipliers, Simple GUIs for both, got the basic mechanics of powering up with a power pellet and eating ghosts figured out, refined the ghostie radar, refined the wall bounciness (so its not *quite* so crazy launching the player – see video).  All that happened really in 3 hours in the evening after having thought about it all day (tbh I also binge watched Voltron and played Shantae on 3DS which made room for the creativity to blossom!).

 

Wednesday Sep 6

In the last few days I’ve made some nice progress.  Made an 8th and 9th level, balanced the gameplay, added zen mode (so it doesn’t start you over if you get hit), and I came up with ideas for how to best do scoring (which is the next thing I’m working on).

Today I got a ghostie radar working so they don’t blindside you when you’re flying around the level.

Tuesday August 29

Worked with vectors to get a cannon onto Beldevere’s head for the scorch game.  Made a really cool level 7 for Beldevere: Interstellar Hero

Also Added a tail (or hat or nose) and a tail attack to kill the ghosties and  a gravity collector.

 

Monday August 28

Autogeneration works although I had some quirky behavior for a while (see Popcorn Bricks).  I’m proud that I got a basic implementation of the launching of a physics projectile working from a primitive gun without any help from the first person shooter starter kit pro.  Probably going to use my PacMan game as a starting point for this one.

Sunday August 27

Began a Scorched Earth/Tanks style game.  Autogenerating a stack of bricks to play around in.

Saturday August 26

Quakecon was awesome.  The competition was intense.  Doom VFR blew my mind.

Friday August 25

Created several more levels of Beldevere.  Each level is more refined than the last so I will probably have to go back and refine / re create the first few levels.  Got AI working smoothly late last night.

Thursday August 24

Tentacles to see what PacMans Ghosts are targeting

Wednesday August 23

Today I cancelled the project I was calling Gauntlet.  I trashed the project files and data, but I did keep the prefabs and scripts.  Update: in the intervening week I have found it difficult to re-use those prefabs (dependency hell).  Lesson learned: theres probably a way to standardize this somewhat … OTOH some of those dependencies are due to the FPS Starter Kit Pro.

This includes some Building Geyser

Unity5 Quick Set Object Placer Grid Snap Tool

Unity5 Quick Set Object Placer Grid Snap Tool

Quick Set Object Placer in the Unity5 Asset Store

Have you ever noticed that Unity5 doesn’t have any snap to grid functionality?  Its conspicuously missing even though its in most other tools like this (Unreal, Blender, Maya, Etc.).  Never fear because Unity Technologies have provided a way to add substantial new capabilities to the editor through something called editor extensions.

Grid Snap Extensions in the Asset Store

There are a number of extensions in the asset store which allow you to snap your objects to a grid, but I have only tried this one called Quick Set Object Placer (free version) and it is actually awesome.  There is also an inexpensive paid version which I haven’t tried.  The following videos show you how to leverage it and help you get around some of its quirks.

Installation and Setup

It is really easy to use.

 

Advanced Usage and Prefabs

There is a quirk with using prefabs but it works really well if you just do this one extra step that I show you in the video.

 

Organization and Prefab Offsets Matter

In this video I talk about how to have it automatically organize your painted objects for you and also I talk about why offsets in your prefab can make a big difference (for better or worse).

An apparent problem (and a solution)

It seems to be snapping objects at the wrong place, and it seems to be incapable of putting them at the *right* place.  Primarily it ended up being a viewing window perspective/iso issue and when I fixed that the problem went away.

Asset Modernization Guide – Procedural Examples

Asset Guide – Procedural Examples

This is a simple guide to an asset in the Unity3D Asset Store called “Procedural Examples”.  It states that it requires Unity 3.5.6 or higher which was written about five years ago so this asset is old and has experienced substantial rot and when you import it it doesn’t run.  This guide will help you get it running in 2017.1 and help you experience most (if not all of what it has to offer).

https://www.assetstore.unity3d.com/en/?&_ga=2.258807946.1438654072.1502225756-817480689.1498423427#!/content/5141

Most of it actually works (after you do this one thing).

I wrestled with this asset for a few minutes and got nowhere so feeling dismayed I put it away and came back to it a few days later and when I looked at it with a fresh set of eyes and a new determination I decided to start removing things that didn’t work to see if any of it would work at all.

First I found several significant errors in the Lightning script so I tried to update them, but I didn’t get very far before I got discouraged and had to admit I don’t know enough about the old particle systems vs the new to be able to port this script.  At that point I gave up and just deleted that script and gave up on that particular example but if anyone knows an easy way to get it working again let me know.

Once I did that all of the rest of the examples worked quite well!

How to use the procedural examples

When you import the asset into a new project you get this: (note: ignore the Textures folder – I added that later).

Unity5 Procedural Examples Asset Folder
Unity5 Procedural Examples Asset Folder

In the top level directory is the set of examples and all of them except for Lightning bolt work just fine. Just double click on them and go for it.

Some really cool results and effects

Most of them are either self-explanatory or come with simple in-game instructions in the top right. My favorites are below (Extrusion was actually really cool)

Unity5 Procedural Examples Extrusion
Unity5 Procedural Examples Extrusion
Unity5 Procedural Examples Heightmap
Unity5 Procedural Examples Heightmap
Unity5 Procedural Examples Extrusion
Unity5 Procedural Examples Extrusion

Quality

There are still some bugs here for example in the extrusion example if you make the ‘time’ too long then that shape just disappears saying that the triangles are out of bounds.  As a result these aren’t going to be good platforms for production code but using their techniques and building upon them is certainly a workable implementation.

Conclusion about the Unity5 Procedural Examples

This is a good set of examples for how to manipulate meshes procedurally and I’m glad that its out there.  It could clearly use a refresh and one of the examples doesn’t work at all but otherwise its informative and pretty easy to get working and could be of value to a lot of us developers.  Thanks Unity Technologies!

 

Unity5 – Learn With Me

Simple Test Environment (aka STE)

Many of the tutorials or examples I make will refer to the STE (aka Simple Test Environment) which is a scene with which you can do a lot of different stuff and it only takes 5 minutes to setup.

Learn about Layers

Simple way to add ‘billboard’ text into your game

Simple way to make Billboard Text SPIN in your game

 

Leveraging the Kenny.nl packs in Unity3D

Leveraging the Kenny.nl packs in Unity3D

Kenny.nl

 

Importing a Kenny.nl pack

 

A quick way to build buildings

An even quicker way to build buildings

Oops!  Accidental Building Geysers

In the process of making procedural buildings I accidentally created this:

And this

And here is how I did it