Game development career thread:

  • Guest, it's time once again for the massively important and exciting FoH Asshat Tournament!



    Go here and give us your nominations!
    Who's been the biggest Asshat in the last year? Give us your worst ones!

Secrets

ResetEra Staff Member
1,900
1,914
Been in industry for almost a year now... can confirm. It sucks to be in game dev, but I couldn't see myself working anywhere else.

I'd prefer to do game dev, still, though, despite all of the bad things that have happened to me during my tenure. It's not for everyone, things get run into the ground more often than not, but it can be really fun. Sometimes.
I feel like it would be better if I had creative control.

And don't get me started on the cyberstalking/harassment.

My boss is barred from 8 pizza places (for delivery) because some shitstain on the internet ordered my boss pizzas from everywhere at once. I had to set up similar measures with the local PD to avoid swatting via a codeword.
But the same people you see enjoying your product make it worth dealing with that shit. And it's still income, despite being lower than usual income.

I guess it's good to have shipped titles on a resume.
 
  • 1Like
Reactions: 1 user

tyen

EQ in a browser wait time: ____
<Banned>
4,638
5,164
Don't worry dawg, EQBrowser will carry us into the future.

lol
 

wilkxus

<Bronze Donator>
519
210
If you want the title of this thread to be your future, you will purchase this right now. You have until Aug 14th.

Pass the Unity Certified Developer Exam - Lifetime Access

I definitely am, hella cheap, why not, get a cert, and obtain some knowledge that I didn't get while teaching myself to build eqbrowser.

It's 30-40hr commitment involved.

So how was your experience with the cert exam and course material? Was it worth it in your view? Any thoughts to share on tangible benefits over just solo training experience?

Would you recommend this to indie devs or someone fresh out of school from a practical perspective?
How about a seasoned programmer or developer perspective?

Anyone else take this and have anything to share wrt Unity experiences ?
 

Control

Bronze Baronet of the Realm
3,113
8,228
Would you recommend this to indie devs or someone fresh out of school from a practical perspective?

I haven't taken the course, but just look at its table of contents. Unless you're planning to take Unity's cashgrab "certification", there are better uses of your time than memorizing 6 test questions about the Rect Tool. If you want to learn unity, hit youtube and search for "unity tutorial". Go through a few until they start to get repetitive, then try to start changing stuff around in your tutorial projects to make it into something of your own. If you get stuck, google the problem. (This method pretty much works for learning everything btw.)
 

tyen

EQ in a browser wait time: ____
<Banned>
4,638
5,164
Basically, whether you are the man or not, the material covers a broad range of things. For example, I've worked on pretty much the hardest thing you can do in Unity, a webgl/mobile MMO. But there is a shitton of things I haven't had to touch when doing so, especially after 5 years.

The point of this material is it's broad range, so you can dabble in the things you otherwise would not in your normal routines.

Like never in my life will I dick around with a 2d side-scroller with sprites. Which means I have no idea how to do it unless I googled it and followed some sort of example or tutorial. This material would cover shit like that and get you setup for success when taking the exam.

So how was your experience with the cert exam and course material?

Haven't taken the exam or went over the material yet, but it covers exactly what you need to pass the test.

Was it worth it in your view?

If your goal is to pass the test, then it is absolutely worth it. I bought it at $10, if you didn't buy when we told you to, then now you have to spend $50.


Any thoughts to share on tangible benefits over just solo training experience?

This covers a broad range of things. For example, if you mainly did 3d stuff, you don't really know 2d scroller stuff. This material is handy for things like that.

Would you recommend this to indie devs or someone fresh out of school from a practical perspective?

If you want a piece of paper that says "yes I know unity, end of discussion." Then ya, i'd recommend this test material.

How about a seasoned programmer or developer perspective?

If you want a piece of paper that says "yes I know unity, end of discussion." Then ya, i'd recommend this test material.
 
Last edited:

Zyke

Silver Knight of the Realm
185
51
Not sure if this is the right thread, but have any of you guys used Unity much? I'm working on a game right now for fun in my spare time, and I've gotten pretty good with unity but I'm really terrible at working on the UI. Does anyone know any good UI tricks/addons/guides for unity that helps beyond the basic stuff? IE context menu's, procedural generating menu's that involve lists of items that change throughout the game, etc.
 

Kharzette

Watcher of Overs
5,405
4,265
Their UI system is really confusing. The video tutorials get you going, but it is rather odd. Every time I come back to it I forget how it all works.

I was going to zip you up a little project with a mmo style bag UI, but damned if unity isn't frustrating to work with. I made a new project and tried to cut and paste the stuff over, which does nothing. So I hand made all the UI elements, which took about 30 minutes, after which it promptly crashed and I lost it all.

Anyway, it is alot of making child gameobjects to hold UI elements. Sometimes it is rather ambiguous if you need a child or just a UI component in the current object. Everything is vague and the only real way to make anything is to look at something someone else made.
 

Zyke

Silver Knight of the Realm
185
51
I was afraid of that. I can do basic UI functions no problem, but my current project is going to involve a fairly large amount of UI work to be functional. What I've been doing so far is basically what you described - lots of child objects, tedious placement, and experimenting just to see how to get things to work. It's not hard for simple stuff but figuring out how to do things like generating windows to auto scale to the size of the content they hold is frustrating.

I've been thinking of putting some common/high repetition UI items into prefabs and generating them on the fly as required, but I still need to put some thought into the proper way to do it.
 

Kharzette

Watcher of Overs
5,405
4,265
For bags if you want a square bag, you take the square root of the number of slots, here lemme see if I can paste some of this:

Code:
using System;
using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;


namespace Gumps
{
    internal class Bag
    {
        //parent of all the other parts
        GameObject    mBagFrame;

        PointerListener    mPL;    //track this to unregister event

        Canvas    mCanvas;
        string    mTitle;
        int        mNumSlots;
        int        mBagSlot;    //which slot number is this? (bag slots on character)

        internal event EventHandler    eClosed;


        internal Bag(Canvas canv, string title, int numSlots, int bagSlot)
        {
            mCanvas        =canv;
            mNumSlots    =numSlots;
            mTitle        =title;
            mBagSlot    =bagSlot;

            GameObject    closeButton    =null;
            GameObject    tit            =null;
            foreach(GameObject go in Toolbox.Instance.mUIBits)
            {
                if(go.name == "CloseButton")
                {
                    closeButton    =MakeCloseButton(go);
                }
                else if(go.name == "BagFrame")
                {
                    mBagFrame    =MakeBagFrame(go);
                }
                else if(go.name == "BagSlot")
                {
                    MakeBagSlots(go, mBagFrame);
                }
                else if(go.name == "TitleBar")
                {
                    tit    =MakeBagTitle(go, mBagFrame);
                }
            }

            closeButton.transform.SetParent(mBagFrame.transform, false);

            mPL    =tit.GetComponent<PointerListener>();

            mPL.eDrag    +=OnDrag;
        }


        internal int GetBagSlot()
        {
            return    mBagSlot;
        }


        GameObject    MakeBagTitle(GameObject tit, GameObject parent)
        {
            GameObject    titClone    =GameObject.Instantiate(tit);

            //make a child to hold the text
            GameObject    kid    =new GameObject("TextHolder");

            //find a font for debug
            Font    []fonts    =Resources.FindObjectsOfTypeAll<Font>();
            Font    dbgFont    =fonts[0];

            SetUpTextField(kid, dbgFont);

            Text    tx    =kid.GetComponent<Text>();

            tx.text                        =mTitle;
            tx.rectTransform.position    =Vector3.up;

            kid.transform.SetParent(titClone.transform, false);

            int    w, h;
            CalcSize(out w, out h);

            //set width
            RectTransform    rt    =titClone.GetComponent<RectTransform>();

            int    width    =w * 43 - 20;

            rt.sizeDelta    =new Vector2(width, 30);
            rt.position        =new Vector3(-13, 4);

            titClone.transform.SetParent(parent.transform, false);

            Button    bt    =titClone.GetComponent<Button>();

            return    titClone;
        }


        void MakeBagSlots(GameObject slot, GameObject parent)
        {
            int    w, h;
            CalcSize(out w, out h);

            int    numBoxes    =0;
            for(int y=0;y < h;y++)
            {
                for(int x=0;x < w;x++)
                {
                    GameObject    s    =GameObject.Instantiate(slot);

                    //wire click listener
                    Button    bt    =s.GetComponent<Button>();
                    bt.onClick.AddListener(this.OnClickInventorySlot);

                    int    xCoord    =-4 + (x * -43);
                    int    yCoord    =4 + (y * 43);

                    s.name                    ="Slot" + x + "" + y;
                    s.transform.position    =new Vector3(xCoord, yCoord);

                    s.transform.SetParent(parent.transform, false);

                    numBoxes++;
                    if(numBoxes == mNumSlots)
                    {
                        return;    //done!
                    }
                }
            }
        }


        GameObject MakeBagFrame(GameObject go)
        {
            GameObject    clone    =GameObject.Instantiate(go);

            clone.transform.SetParent(mCanvas.transform, false);

            RectTransform    rt    =clone.GetComponent<RectTransform>();

            int    w, h;
            CalcSize(out w, out h);

            //mul by bag slot size
            w    *=43;
            h    *=43;

            //add border
            w    +=5;
            h    +=30;

            rt.sizeDelta    =new Vector2(w, h);

            return    clone;
        }


        void CalcSize(out int width, out int height)
        {
            //figure out a good number to do the bag dimensions
            //favour a wider base
            width    =Mathf.CeilToInt(Mathf.Sqrt(mNumSlots));

            height    =mNumSlots / width;

            int    remainder    =mNumSlots % width;

            if(remainder > 0)
            {
                height++;
            }
        }


        GameObject MakeCloseButton(GameObject go)
        {
            GameObject    clone    =GameObject.Instantiate(go);

            Button    bt    =clone.GetComponent<Button>();

            bt.onClick.AddListener(this.OnClickClose);

            return    clone;
        }


        Text SetUpTextField(GameObject go, Font font)
        {
            go.AddComponent<Text>();

            Text    tx    =go.GetComponent<Text>();

            tx.color            =Color.magenta;
            tx.raycastTarget    =false;
            tx.alignment        =TextAnchor.MiddleCenter;
            tx.fontSize            =14;
            tx.color            =Color.white;
            tx.fontStyle        =FontStyle.Bold;

            tx.font    =font;

            return    tx;
        }


        void SetUpRectTransform(GameObject go, Vector2 pos, Vector2 sizeDelta)
        {
            //see if already have a recttransform
            RectTransform    rc    =go.GetComponent<RectTransform>();

            if(rc == null)
            {
                //add an empty rect transform
                go.AddComponent<RectTransform>();
            }

            //grab a pointer
            rc    =go.GetComponent<RectTransform>();

            rc.localRotation    =Quaternion.identity;
            rc.localPosition    =new Vector3(pos.x, pos.y);
            rc.localScale        =Vector3.one;
            rc.anchorMin        =Vector2.one * 0.5f;
            rc.anchorMax        =Vector2.one * 0.5f;
            rc.anchoredPosition    =pos;
            rc.sizeDelta        =sizeDelta;
            rc.pivot            =Vector2.one * 0.5f;
        }


        void KeepInRect(RectTransform bigRect, RectTransform smallRect)
        {
            Vector3    smallPos    =smallRect.localPosition;

            Vector3    min    =bigRect.rect.min - smallRect.rect.min;
            Vector3    max    =bigRect.rect.max - smallRect.rect.max;

            smallPos.x    =Mathf.Clamp(smallRect.localPosition.x, min.x, max.x);
            smallPos.y    =Mathf.Clamp(smallRect.localPosition.y, min.y, max.y);

            smallRect.localPosition    =smallPos;
        }


        //adjust the position of the overall gump
        //so that it is all in view
        void ClampFrame()
        {
            //get the frame rect
            RectTransform    bfrt    =mBagFrame.GetComponent<RectTransform>();

            //get the canvas rect
            RectTransform    crt    =mCanvas.GetComponent<RectTransform>();

            KeepInRect(crt, bfrt);
        }


        void OnDrag(object sender, EventArgs ea)
        {
            Vector3    deltaPos    =(Vector3)sender;
            if(deltaPos == null)
            {
                Debug.Log("Null deltaPos in OnDrag()");
            }

            mBagFrame.transform.position    +=deltaPos;

            ClampFrame();
        }


        void OnClickInventorySlot()
        {
            Debug.Log("Inv slot clicked!" + UnityEngine.EventSystems.EventSystem.current.currentSelectedGameObject);
        }


        void OnClickBagTitle()
        {
            Debug.Log("Bag Title Clicked!");
        }


        internal void OnClickClose()
        {
            mPL.eDrag    -=OnDrag;

            GameObject.Destroy(mBagFrame);

            UtilityLib.Misc.SafeInvoke(eClosed, this);
        }
    }
}

BagFrame.png
BagSlot.png
CloseButton.png
TitleBar.png
 

Kharzette

Watcher of Overs
5,405
4,265
Hmm reading that, it doesn't really make any sense. Let me see if I can just zip the entire thing up. It has a ton of non ui stuff in it, but whateva

https://dl.dropboxusercontent.com/u/59900676/Shive.7z

This is the start of a little fun RPG, but I didn't get very far. There's a bunch of torchlight character art in there as I was working on having items with appearance data that you could equip out of bags. I only really got part of the bags done before I got busy with a job.
 
Last edited:

Zyke

Silver Knight of the Realm
185
51
Ah cool. That should be useful. I'm not doing an inventory like that but the methods you used I think will help a lot in figuring out how to make the menu's I need as well. I'm doing a 4X-style space strategy game so I need menu's that can scale to the information present. IE a menu that contains all of the colonies you have and basic info for each one that's easy to read at a glance. Stuff like that. I'll dig into what you just posted though since I'm sure some things will be similar.
 

Kharzette

Watcher of Overs
5,405
4,265
Using prefabs and the "sliced" image type is handy for autosizing, though you still have to do the math.
 

Sir Funk

Molten Core Raider
1,251
155
So how was your experience with the cert exam and course material? Was it worth it in your view? Any thoughts to share on tangible benefits over just solo training experience?

Would you recommend this to indie devs or someone fresh out of school from a practical perspective?
How about a seasoned programmer or developer perspective?

Anyone else take this and have anything to share wrt Unity experiences ?

I've finally finished the course. If you have never touched Unity before, then I would recommend it. It *is* a course about passing the certification and not necessarily learning how to create games in Unity, that's an important distinction. However, they go through such a wide variety of topics and each lesson asks you to work alongside and gives you challenges to do on your own, so if you've never really worked in Unity before, it is a great exposure to many different things.

The biggest problem is that it is VERY programming light. There is a small section on programming where they introduce you to some basic concepts in code, but for most of the lessons they provide the code for you and maybe make some small mention of what's going on under the hood. You will not know how to code things in Unity after this course.

It is worth the $10-15 when it is on sale if you've never worked in Unity before. If you're already familiar with a lot of the general Unity concepts and are looking for more of a deep dive into the technical specifics of what you need to do to make XYZ game, then this is probably not the course for you, but for absolute beginners then I think it is a great introduction before you do a deep dive into more hardcore scripting.
 

wilkxus

<Bronze Donator>
519
210
Thank you kindly for the nice evaluation.

Does anyone here have working dev experience with any of the following? Looking for developer perspectives on strengths and weaknesses but from a personal practical and anecdotal, non marketing perspective.
  • UE4
  • Cry
  • Unigine
  • Source 2
 

Tenks

Bronze Knight of the Realm
14,163
607
One thing I liked about Unity is there official documentation and tutorial video series. Does something like that exist for Unreal? Like Unity starts with a collection of YouTube vidoes covering the absolute basics to more advanced topics.
 

xzi

Mouthbreather
7,526
6,763
Source 2 isn't entirely out yet either, it works for dota and somewhat the destinations app, but you can't really do anything with it at the moment. Source is extremely outdated, and while Hammer has it's pros.. it has a ton of cons. There was a dev talk a few years back where Chet Faliszek himself even basically says how bad Hammer is.

I wouldn't be surprised if it finally comes in 2017 though for the full package, I honestly can't wait.