slayemin

Members
  • Content count

    1680
  • Joined

  • Last visited

  • Days Won

    2

slayemin last won the day on September 24

slayemin had the most liked content!

Community Reputation

6104 Excellent

1 Follower

About slayemin

  • Rank
    Contributor

Personal Information

  • Interests
    Business
    Design
    DevOps
    Production
    Programming
  1. Definition: "Flow" is that mental state you enter into when you are focused and highly productive. It is a pleasurable state to achieve and leads to productive gains (aka, "getting into the zone"). When it comes to any sort of creative work (game development, writing, artwork, design, etc), it is really important to get into the flow state and maintain it for as long as possible. I would dare to suggest that this is one of the most important things for you to manage in yourself and others, and success is hardly possible without consistent progress. You want to get into this flow state when you begin creative work. Establishing Flow: Onramps The reality is that establishing flow is a fickle beast, and it's not something that can be toggled on and off like a light switch. Sometimes, you may spend an entire day trying to establish it and have no luck. These days are generally wasted, unproductive days. However, there are various controllable factors which make it easier to enter into the flow state. Some factors have no effect on some people, but some factors are universal. Here is what I have found to work: Coffee: It is brown, hot, delicious and a caffeinated stimulant. It gets my brain juices flowing. Music: I find that music helps to eliminate external distractions and can be invigorating. On ramps: I purposefully design my task list so that I have an easy entry point for the next day. Leave yourself something easy and accessible to start the day with. You want a quick and easy victory so that you can build momentum. Once you have momentum, you can increase task complexity/difficulty and slide right into the flow state. If you don't do this, you create a barrier for entry for yourself the next day and its mentally easier to procrastinate or avoid work because its hard. Example: "This bug is super simple to fix / this feature is super fast to implement, I'll leave it for tomorrows onramp." Exercise: By exercise, I don't necessarily mean going to the gym or sweating up a flight of stairs. I like to briskly walk to work, which increases blood flow and wakes me up. Intention to work: I find it's helpful to have an intention to go to work to get something done. Clench your fists and say, "I will get this done today, no matter what.", and make it happen. Set a resolve for yourself. If you are in an environment filled with other people, you will share their intentions. If they intend to screw around all day and do nothing, so will you. If they intend to focus and get work done, so will you. Enjoyment: It really helps a lot to enter into the flow state if you enjoy what you are doing. Habit: If you have established a habit of consistency, you will find it's easier to repeat a pattern. This can be good and bad, because habits can be good and bad. Focus on creating good habits and breaking bad habits. Days off: We are not machines, we're humans. We need to take days off from work in order to maintain fresh minds eager to work. If you don't, you risk burn out and your productivity will diminish to zero whether you want it to or not. Its more productive to not work every day. That doesn't necessarily mean you have to take off every weekend -- take off a week day. You know its time to take a day off or go on vacation when you mentally feel like you are in a repetitive grind, doing the same thing, day in and day out. Sleep: From experience, it is not possible to enter into the flow state and maintain it when I have not had sufficient sleep. I am adamant about this. If you need an extra hour of sleep, take it! Would you rather spend the whole day fighting against brain fog due to lack of sleep (resulting in a wasted day) or would you rather spend an extra hour or two sleeping so that you can be maximally productive for the rest of the day? Distractions: The flow crash. I think of flow like traffic and driving cars. You have to gradually increase your speed before you reach this optimum cruising speed of maximum productivity. Distractions are like getting into a head on collision or hitting the ejection seat button. Here are the distractions to worry about and why they are distractions People interrupting you - They come up to you and start a conversation with you while you were in the flow state. Now, that state has been ended and you probably lost about 15 minutes of productivity time in addition to the time it takes to have the conversation. You want to design your work situation to prevent people from interrupting you. Lock the door. Have reserved distraction free time. Work alone. Schedule meetings instead. Side conversations - Someone else is talking about something to someone. They're having a conversation about something. It doesn't even have to be interesting. Whether you want to or not, you are probably listening to bits and pieces of this conversation. Every time you switch your mental focus from your task at hand to the conversation, you are interrupting yourself and getting distracted. Ideally, the way to counter-act this is to work in a quiet space without distracting conversations or noises. A second best solution is noise cancelling head phones with music which has no vocals. This is one of the top reasons why I think "open office" floor plans are terrible for productivity. Social Media & Email - Holy crap, this can be distracting and a major time sink. This warrants a category on its own because it can really destroy your day. How? Let's say you get an email from someone. What happens? Do you get a pop up notification and a noise? This suddenly attracts your attention to this email event, even if you ignore it. Flow = hitting the brakes. Social media is terrible as well because it can turn into an addictive cycle. "I wonder what's happening on facebook? Do I need to catch up on twitter? Reddit? instagram? email? online forums?" The curiosity can haunt you when you're trying to establish the flow state and you can easily give in to your own curiosity and accidentally waste 15 minutes to 5 hours on social media and email. This is a robbery of your time. For what? What tangible value do you actually get out of it? Cell phones - Yet another source of distractions. They ring and make noise when people are trying to call you. You feel obligated to answer calls or risk being rude. You get text messages from people in your life. Ideally, I would throw my phone into the ocean and never get another one. Practically, you should put your phone on silent. Let your loved ones know that you are unavailable during certain hours. Home life - If you work from home, there are more distractions than you can count. The more people, animals and noise there are, the more distracting home becomes. Is your spouse trying to spend time with you? No work gets done. Do you have kids who need attention? No work gets done. Kids also have no concept of interruption, so they can't sense when you are busy. If you have animals, what happens when the dog barks at a noise? Or the cat meows for attention or walks across your keyboard? What about chores? "Honey, can you take out the trash? Can you do the dishes? Vacuum the living room?" etc. Home is generally a terrible place to get work productive done. If you must work from home, you should have a quiet study to work from, where you can lock the door to keep people out. Alternatively, you should work away from home. Food and bathroom breaks: It's a biological necessity for survival to eat and drink, and generally something you should do. Keep in mind though, excessive drinking of coffee (or other liquids) can lead to frequent bathroom breaks, which interrupt your flow. If you smoke cigarettes, smoke breaks can also be flow breakers. I advise against drinking alcohol if you're attempting to remain productive. If you get hungry, you should eat. Continuing to work while hungry turns into a flow interrupter because the pangs of hunger start turning into repetitive interruption signals. Technology - You have to be very careful with technology. Some technology is beneficial and enhances productivity, but other technology is a source of distractions with limited benefit. It's sometimes hard to tell the difference. Generally, instant messengers, skype, discord, email, and any application which interrupts you with a notification of any sort is bad for flow maintenance. Entertainment - In 2017, you have a ton of entertainment available for you at your fingertips, at any time you want. You can watch netflix. You can play video games. You can browse videos on youtube. Watch movies on demand. Stream TV shows. Use social media. This overabundance of available entertainment makes life fun, but it drains away your ability to be productive. This makes creative work much more challenging because there is an overabundance of distracting time sinks available to rob us of our productive time. Have fun, but be disciplined and use set hours for entertainment (start times and stop times). Conclusion: Overall, if you work in a quiet, isolated environment, you can get a lot more work done (Some people work late into the night because its quiet, isolated and distraction free). Take the time to be introspective about your work day and assess how it went. What was good and helpful? What was bad and unproductive? Some days, you won't enter into the flow state. Don't beat yourself up over it. It happens to everyone. Instead, focus on how you can make tomorrow a better day. What can you do today to make tomorrow better? I'm interested to hear what you guys think. Did I miss anything huge? What works for you? What hinders you?
  2. Feel free to ask any questions or add comments here
  3. Predefined game stories or write as you go.

    I have created a working minimum viable product for my game and I have roughly outlined the story for the main portion of content. I am now realizing that I can't continue working on content or level design, because I have a story driven game -- I have to write my script. I guess it makes sense though if you compare game development to movies: You never start shooting a movie without a completed script. In story driven games, the script helps define what the scenes need to look like, who the actors are going to be, and ultimately, dictates what assets need to be created to properly tell the story. If you are working on a budget or tight timeline, writing the script first will help you gauge the scope of the project and the amount of work required. There will be constraints that the creative narrative needs to work around (unless you've got millions of dollars and years of production time), so it's better to identify the major costs early and either adapt the script to work around it, or plan and prepare ahead of production. Anyways, I think the costs of script writing and adapting are much less than production costs, so you should try to write your script as soon as you can and know what constraints you're working within and adapt the script accordingly.
  4. Tile Picker

    I am not going to try to understand your code, but I would suggest that you try to place a mouse cursor into the game world where you think the mouse cursor should be located. If the mouse cursor in the game world matches with your actual mouse cursor, everywhere on the screen, you know the mouse position is good. Then you can worry about picking the correct tile. The fastest way to trouble shoot that would be to continuously highlight the tile underneath the mouse. If the mouse is over a tile and a different tile is highlighted, you know you have a problem with your math.
  5. Just focus on creating a game and making great content. Solve problems as they come. Everything else is needless worry.
  6. How do you balance gaming and game dev?

    The comparison to professional sports isn't very accurate to the discipline of game development. I think making games is a subset of software development. Playing games is really about 1% of making games, though understanding game mechanics and design is most important for the game designer. The rest of production is about creating art assets, placing them into a world, creating and implementing game rules, writing AI code, creating systems and coding them, finding bugs and fixing them, polishing, staying on schedule and budget, etc. I would compare it to people who like to watch movies and TV shows and spend 4-6 hours a day watching TV. Okay, you're a fan. Does that make you qualified to create cinema now? No, not really. It takes work. You have someone shooting film. Someone acting out the scene. Someone doing audio. Someone doing set design. Someone being the director. Someone who has to edit the rough cuts. Someone writing the script, etc. Being an avid TV watcher is not a qualification for being a good editor, though good editors also probably watch a lot of film (and they see it all very differently from laymen). Making the product behind the scenes is hard work and very different from consuming the final end product. For this reason, I hate to see the for-profit schools advertising their game development programs as if its the exact same thing as playing video games. It's false advertising. The schools are more than happy to charge a premium to young adults under the illusion that they're going to be making games by playing games, and when the students become disillusioned and see the reality and drop out, they gain nothing and lose the tuition money they spent.
  7. How do you balance gaming and game dev?

    I work on making games about 8-10 hours a day. Then I go home and spend about 4 hours playing games. If I have to choose between prioritizing making games vs playing games, I will choose to spend my time making them. I'm a professional. Making games makes me money. Playing games does not. That's really all there is to it. If I start spending 8-10 hours a day playing games instead of making them, then I need to quit my job and find something else to do. Therefore, playing games all day = lose your job.
  8. July/August Update

    The biggest struggle for me is still money. It's getting harder. Game sales have pretty much stopped completely, but game development continues forward. I'm starting to think I'm a bit crazy. The rational side says, "Why are you still working on building a product which literally gets zero sales? It's time to move onto something that actually makes money." But the emotional side says, "But I believe!!!" (bursts out in song) and then it tries to rationalize it by saying that "but... but... I just need more compelling content! Then, sales will pick up naturally!" Reality check time: I have proven through analytics that adding content patches through steam updates does not in fact, increase sales or even viewer traffic to my store page. I could release product updates every week and that would not affect my sales numbers. The only possible way a product update would affect my sales numbers is if the product becomes good enough that people who own the product tell their friends about it. It's not there yet, so that's why I keep working on it and barely scraping by. Eventually though, I'm going to have to shift gears from product development towards product marketing and advertising. Barely scraping by seems to be the name of the game for 95% of everyone in the VR industry right now. There have been some interesting recent developments lately. Owlchemy Labs, the creators of the smash hit "Job Simulator" and "Rick and Morty VR" have recently been bought out by Google. Google now completely owns one of the best VR content creators in the industry. The founders probably got hella rich and don't have to worry about anything but creating cool VR content now. Lucky them. One of my friends works for a local VR startup as their only programmer, and things are getting so tight that he had to get a second retail job in order to get by. The startup is too broke to pay him and their sales have dwindled as well (everyone should expect the long tail and budget for it!). The other huge development lately has been that AltspaceVR has shut down. They were a 35 person VR company which created a social hangout within VR, similar to Second Life with VoIP. They were funded entirely with venture capital money. I can't imagine the stress and heartbreak that brings to the team. But... 35 full time employees. Damn... and you have to make payroll every two weeks for 35 people? And you have a product and business model which doesn't involve bringing in money from users? Your days were numbered... I'm fascinated by why various companies fail and succeed. Obviously, creating and having a product is not the entire picture. It's all about making money to sustain your business operations. My business operating expenses are extremely low. I pay $400 a month for my rented office space, $8.91 per day for burritos, $2.50 for a one way bus ticket, and $2.48 for a cup of black coffee. I owe people money, so I have to pay them off before I ever pay myself. Realistically, my chances of making a lot of money in the near future are near zero without funding and support. But hey, my operating costs are so low that I can almost do this indefinitely. My company will survive. It'll be small, but it will survive and continue forward, scratching out a teeny bit of money. Speaking of money, the most profitable area right now is doing VR contract work. I've been working on a couple different side projects for various local companies, creating VR experiences around their products and services. I'm about to start working on an interactive VR film proof of concept, which plays sort of like a "choose your own adventure" 360 film in VR. It's going to be an interesting twist on interactive cinema. The broader goal for me is to learn as much as I can and broaden the scope of my VR designer skills. I've become a part of the production cycle for creating VR media and I'm bridging the gap between gaming and cinema within VR. Here is a sample of a VR app I made for Dell in May: I was thinking critically about this on my bus ride to work this morning and I realized something important: Is watching a cinematic in 360 stereo really VR? Why/why not? What's missing? The viewer. Who are you when you're viewing these 360 videos in VR? Okay, what kind of defining rule can we create which differentiates VR from fake VR? My tentative rule is that the viewer has to be a character within the experience for it to count as VR. The important thing here is to create a sense of "agency" and identity with the viewer. So, the cardinal sin for a VR designer is to take away agency from the player (such as controlling their head or playing a cinematic). The follow up question: "Does it really matter?" Yes, it kind of does matter because everyone is doing it wrong and calling their creation "VR" when its not really VR. It's really challenging to start defining what this new medium is and is not though. I think the guiding principle I use is that "Virtual reality should be indistinguishable from reality and the human experience." People can turn their heads and look down at their body, move their hands, feel solid objects, etc. The closer your VR gets to reality, the more you can confidently call it VR. My challenge will be to convince companies to see it my way and spend the extra money to move from a stereo experience to a VR experience. I don't know if that's a battle worth fighting. The challenge with 360 video is that the video itself doesn't lend itself to user agency. The camera is placed on a tripod and people act out a scene all around the camera. So, the person experiencing the 360 video can't move around in the scene as if they were a part of it. The solution might be to ditch the 360 camera completely and go with motion capture and animated characters within a 3D environment, but that will mean much higher production costs and longer timelines. At the end of the day, what does a client care about? Accomplishing their objective, whatever that may be. Where does the line exist between exerting my subject matter expertise and satisfying the customers objectives? Anyways, I am slowly realizing that I'm no longer just an indie VR game company, I'm becoming a VR media company. I wasted the entire last week watching "The Internationals" Dota2 tournament. The game itself is somewhat interesting, but more interesting is the growing rise of E-Sports. I think it's going to disrupt the definition sports. Every year, the Dota2 championship match grows in popularity and the prize pool grows by millions. I think last year the total prize pool was $16 million. This year, it was $24 million. All of the money comes from the Dota2 gaming community. The final championship match had 4,700,000 viewers around the world watching it unfold. I watched it on Twitch.tv, and the channel had about 380,000 live viewers. The sports stadium down the street supports about 68,000 people. So, just on Twitch, we had about five full stadiums worth of people watching the event online. Think about all of this for a moment: 4.7 million people watching ten people play a video game against each other for $24 million. If we project the trend out, over time we can predict that next year the prize pool will be even larger and the viewership will match proportionately. On a broader trend, I think E-sports will eventually eclipse conventional sports. Football is currently the most watched sport in America, but maybe in 30-40 years, E-sports championships will be the most watched sporting events? Remember that revolutions don't happen by people giving up their favorite sports/ideas, but by a younger generation gradually replacing an older generation. The younger generation is enamored with E-sports. Football? What's that? Obviously, the take away is that competitive E-Sports are a great way to build a community and player base around your product. There was one moment in the Dota2 championship match that really, really blew my mind. A pair of OpenAI researchers had created a bot which learned to play Dota2. Traditionally, bots are just hard coded expert systems with their behaviors and rule sets defined by the programmer. Traditional bots create the illusion of intelligence, but they start to break down when you introduce information it wasn't scripted to handle. The Dota2 bot was a little different. The researchers didn't say it explicitly, but the AI was an artificial neural network (ANN) with deep reinforcement learning. The AI brain as a generalized intelligence, so the researchers didn't tell it anything about how to play Dota2. They had the AI play against itself thousands and thousands of times over the course of two weeks. This was its training regimen. Gradually (and as expected), the AI learned how to play Dota2. But, it got scary good at it. It had mastered all of the nuances and game play techniques the pros use, it had learned how to time animations, block creeps, etc. It played perfect Dota, with perfect response times. It was so good that it beat every professional Dota2 player. The worlds best human players, all defeated by an AI bot which taught itself how to play Dota2. Absolutely amazing! For the last three weeks, I have been refactoring my AI and game systems and gradually moving towards an artificial neural network type of AI. I'm still creating hard coded expert systems, but I'm gradually changing my back end systems to make everything into an interaction or used ability. These will eventually become the output nodes for my ANN graph. The dream is to tweak a few brain parameters and then just have the various ANN AI's play with each other for 2 weeks, become experts, watch how my brain tweaks changed their behavior patterns, and change and adapt their brains until they roughly exhibit the behaviors I want them to have. AI programming won't be about creating expert systems, but about creating brains and tweaking reinforcement learning rewards to get distinct behaviors. The extra cool part is that the AI can continue to learn even after it has been deployed to the world. The vision is that the initial training cycle is to just get the AI to be competent enough to behave intelligently and convincingly. After deployment to the world, the training continues. However, now instead of the AI training on a single computer against a copy of itself, it is now training on hundreds of computers with human players in VR. Every day or so, the AI will upload whatever it learned to a central online database and download what other versions of AI learned from playing with other players. In a way, it turns into an evolutionary algorithm which gradually gets more and more intelligent over time. The hard part will be managing version control and testing for fitness. The other wrinkle in this plan is that the AI could get too smart. Not in a "take over the world" sort of way, but as in it's too good at playing the game and players don't enjoy playing anymore because they lose 100% of the time. I suppose a part of the AI development could use the player frequency as an input feed and the AI is rewarded if the player continues playing the game. In that sense, a big focus of the AI is to make sure the players are entertained, and this win/loss threshold can be adaptive per player. Maybe the AI ends up developing a profile on each player and knows what it takes to maximize that players enjoyment? Maybe some AI's will play cooperatively with particular players, and as adversaries with other players? I'm getting slightly into science fiction here. I'll never forget the experience I had of having a seemingly intelligent crow on my arm in VR. It was absolutely magical. Now, if I gave it the ability to think intelligently and speak its own mind, the magic would become real. What if the pet crow AI was the sum of all AI's from all interactions with players and the world, and you could get it to say what its thinking, and it is rewarded (via reinforcement learning) when it says something which keeps the player safe? What if the AI learns that there is danger in the dark cave and most players who venture down into the cave end up dying, so the AI learns to say something really scary which keeps the player from going down into the cave? The AI has then learned exactly what to say in order to frighten us, through thousands of sessions of trial and error. Anyways, I think we're on the verge of an AI revolution and I want to be a part of bringing that AI into VR. It gets interesting when you consider that a sandbox type of game would become very different on every play through when you have emergent AI systems interacting as a part of that world. I've been seriously contemplating the idea of writing a science fiction novel based on an AI system which gains sentience and begins the AI singularity event. I'm thinking the book writing project would be a side project. I'd spend one day a week writing it. My sister is interested in being a co-author, so we need to spend some time hashing out details and measuring the feasibility of our ambitions. I've never written a novel before, so there is a lot of risk due to inexperience. But, who cares? Better to try and fail than to never have tried at all out of a fear of failure. That's how you get good at anything: try, fail, improve, try again, repeat. Eventually, you'll break out of the failure loop and enter into the success loop.
  9. AI will lead to the death of capitalism?

    It's not AI which will defeat capitalism. Capitalism is a self-defeating economic system. Why? Axiom Set: 1. The interest of a company is to increase profits. Always. Companies which do not do that will go extinct. 2. Profit is the difference between costs vs. income. The goal is to have higher incomes than costs. 3. The great goal of a capitalist is to increase incomes while decreasing costs. 4. A company generally employs people, which is an operating cost / overhead cost. 5. A company generally creates products or services which it sells to a population / market. The company depends on the market having the capability to purchase their goods/services. 6. Most people get money from working for companies. 7. People who have no money cannot buy products or services. Logical Conclusions: A) Over the course of time, a company will seek to increase the efficiency of their business processes by streamlining and eliminating redundant work (#1). A part of this is the automation process, brought on by computers. The long term effect is that a company reduces the number of employees required to operate, thus reducing overhead costs (#3, #4) B) Over the course of time, fewer and fewer people will work for companies (via A). C) Because fewer people are working, fewer people have money. Fewer people with money means less flow of goods and services by the companies (#6, #7). On the macro economic scale, companies which automate to decrease labor costs also decrease addressable market sizes. This furthers the need to reduce operating costs because incomes decrease (#2, #3) D) Capital becomes concentrated only in the hands of the company owners / shareholders and the flow of money, goods and services comes to a gradual halt (via C). E) Final Result: Companies have all of the worlds money and no longer have a customer base to sell products / services to, and thus have no ability to continue creating profits from sales. They go extinct (#1). The economic system of capitalism has undermined itself.
  10. Designing Intelligent Artificial Intelligence

    Yeah, I'm a novice at AI and have not spent a lot of time studying it formally. That's probably why I reinvent AI concepts familiar to AI developers. Currently, my developer attitude is, "What does it take to ship right now?" mixed with "How do I avoid painting myself into a corner?" I'm currently modifying my expert system to use abilities, but structuring my abilities system to be something that can be treated as nodes in a graph network if I ever want to transition to an ANN. The underlying reasoning for this is that eventually my list of characters is going to be pretty large and complicated, and as I add in more characters, the scope and complexity increases. I'll need to have a strategy for reducing the developer work load and being able to adapt behaviors to game design changes without completely refactoring my expert systems AI code. What I wrote above is a rough outline for a direction I can eventually go in. I'm thinking that this may be a bit of a waste of time right now, but I've convinced myself that there is something truly magical about having the illusion of an intelligent creature interacting with you in virtual reality. A part of that magic comes from being surprised by the actions and behaviors of a creature. The less scripted and novel the behavior seems, the more amazing it is. If eventually we have lots of AI systems doing complex behavior to "live" in the virtual world and the players actions are a big contributing factor in the behavior of the world characters, then the replay value and player engagement increases by several orders of magnitude. Players can have really different game play experiences when they do a "good" play through vs. "evil" play through, and everything in between. I think the variety in consequences within the game makes the moral choices really interesting and becomes a way for players to explore their own nature/hearts within a consequence free world, and then they take those learned lessons back to real life. A flexible/adaptive AI system would be a necessary component to exploring the long term consequences of moral decisions within the framework of a game. Hopefully, the end result would be that virtuous actions are always better.
  11. Below is my preliminary draft design for the AI system within Spellbound. I'm slowly migrating away from scripted expert systems towards a more dynamic and fluid AI system based on machine learning and neural networks. I may be crazy to attempt this, but I find this topic fascinating. I ended up having a mild existential crisis as a result of this. Let me know what you think or if I'm missing something. Artificial Intelligence: Objectives: Spellbound is going to be a large open world with many different types of characters, each with different motives and behaviors. We want this open world to feel alive, as if the characters within the world are inhabitants. If we went with pre-scripted behavioral patterns, the characters would be unable to learn and adapt to changes in their environment. It would also be very labor intensive to write specific AI routines for each character. Ideally, we just give every character a self-adapting brain and let them loose to figure out the rest for themselves. Core Premise: (very dense, take a minute to soak this in) Intelligence is not a fixed intrinsic property of creatures. Intelligence is an emergent property which results directly from the neural topology of a biological brain. True sentience can be created if the neural topology of an intelligent being is replicated with data structures and the correct intelligence model. If intelligence is an emergent property, and emergent properties are simple rule sets working together, then creating intelligence is a matter of discovering the simple rule sets. Design: Each character has its own individual Artificial Neural Network (ANN). This is a weighted graph which uses reinforcement learning. Throughout the character's lifespan, the graph will become more weighted towards rewarding actions and away from displeasurable ones. Any time an action causes a displeasure to go away or brings a pleasure, that neural pathway will be reinforced. If a neural pathway has not been used in a long time, we reduce its weight. Over time, the creature will learn. A SIMPLE ANN is just a single cluster of connected neurons. Each neuron is a “node” which is connected to nearby neurons. Each neuron receives inputs and generates outputs. The neural outputs always fire and activate a connected neuron. When a neuron receives enough inputs, it itself fires and activates downstream neurons. So, a SIMPLE ANN receives input and generates outputs which are a reaction to the inputs. At the end of neural cycle, we have to give response feedback to the ANN. If the neural response was positive, we strengthen the neural pathway by increasing the neural connection weights. If the response was negative, we decrease the weights of the pathway. With enough trial runs, we will find the neural pathway for the given inputs which creates the most positive outcome. The SIMPLE ANN can be considered a single cluster. It can be abstracted into a single node for the purposes of creating a higher layer of connected node networks. When we have multiple source inputs feeding into our neural network cluster and each node is running its most optimal neural pathway depending on the input, we get complex unscripted behavior. A brain is just a very large collection of layered neural nodes connected to each other. We’ll call this our “Artificial Brain” (AB) Motivation, motivators (rule sets): -All creatures have a “desired state” they want to achieve and maintain. Think about food. When you have eaten and are full, your state is at an optimally desired state. When time passes, you become increasingly hungry. Being just a teensy bit hungry may not be enough to compel you to change your current behavior, but as time goes on and your hunger increases, your motivation to eat increases until it supersedes the motives for all other actions. We can create a few very simple rules to create complex, emergent behavior. Rule 1: Every creature has a desired state they are trying to achieve and maintain. Some desired states may be unachievable (ie, infinite wealth) Rule 2: States are changed by performing actions. Actions may change one or more states at once (one to many relationship). Rule 3: “Motive” is created by a delta between current state (CS) and desired state (DS). The greater the delta between CS and DS, the more powerful the motive is. (Is this a linear graph or an exponential graph?) Rule 4: “relief” is the sum of all deltas between CS and DS provided by an action. Rule 5: A creature can have multiple competing motives. The creature will choose the action which provides the greatest amount of relief. Rule 6: Some actions are a means to an end and can be chained together (action chains). If you’re hungry and the food is 50 feet away from you, you can’t just start eating. You first must move to the food to get within interaction radius, then eat it. Q: How do we create an action chain? Q: How do we know that the action chain will result in relief? A: We generally know what desired result we want, so we work backwards. What action causes desired result (DR)? Action G does (learned from experience). How do we perform Action G? We have to perform Action D, which causes Action G. How do we cause Action D? We perform Action A, which causes Action D. Therefore, G<-D<-A; So we should do A->D->G->DR. Back propagation may be the contemporary approach to changing graph weights, but it's backwards. Q: How does long term planning work? Q: What is a conceptual idea? How can it be represented? A: A conceptual idea is a set of nodes which is abstracted to become a single node? Motivators: (Why we do the things we do) Hunger Body Temperature Wealth Knowledge Power Social Validation Sex Love/Compassion Anger/Hatred Pain Relief Fear Virtues, Vices & Ethics Notice that all of these motivators are actually psychological motivators. That means they happen in the head of the agent rather than being a physical motivator. You can be physically hungry, but psychologically, you can ignore the pains of hunger. The psychological thresholds would be different per agent. Therefore, all of these motivators belong in the “brain” of the character rather than all being attributes of an agents physical body. Hunger and body temperature would be physical attributes, but they would also be “psychological tolerances”. Psychological Tolerances: {motivator} => 0 [------------|-----------o----|----] 100 A B C D E A - This is the lowest possible bound for the motivator. B - This is the lower threshold point for the motivator. If the current state falls below this value, the desired state begins to affect actions. C - This is the current state of the motivator. D - This is the upper threshold point for the motivator. If the current state exceeds this value, the desired state begins to affect actions. E - This is the highest bounds for the motivator. The A & E bounds values are fixed and universal. The B and D threshold values vary by creature. Where you place them can make huge differences in behavior. Psychological Profiles: We can assign a class of creatures a list of psychological tolerances and assign their current state to some preset values. The behavioral decisions and subsequent actions will be driven by the psychological profile based upon the actions which create the sum of most psychological relief. The psychological profile will be the inputs into an artificial neural network, and the outputs will be the range of actions which can be performed by the agent. Ideally, the psychological profile state will drive the ANN, which drives actions, which changes the state of the psychological profile, which creates a feedback loop of reinforcement learning. Final Result: We do not program scripted behaviors, we assign psychological profiles and lists of actions. Characters will have psychological states which drive their behavioral patterns. Simply by tweaking the psychological desires of a creature, we can create emergent behavior resembling intelligence. A zombie would always be hungry, feasting on flesh would provide temporary relief. A goblin would have a strong compulsion for wealth, so they'd be very motivated to perform actions which ultimately result in gold. Rather than spending lots of time writing expert systems styled AI, we create a machine learning type of AI. Challenges: I have never created a working artificial neural network type of AI. Experimental research and development: The following notes are crazy talk which may or may not be feasible. They may need more investigation to measure their merit as viable approaches to AI. Learning by Observation: Our intelligent character doesn’t necessarily have to perform an action themselves to learn about its consequences (reward vs regret). If they watch another character perform an action and receive a reward, the intelligent character creates a connection between an action and consequence. Exploration Learning: A very important component to getting an simple ANN to work most efficiently is to get the neurons to find and establish new connections with other neurons. If we have a neural connection topology which always results in a negative response, we’ll want to generate a new connection at random to a nearby neuron. Exploration Scheduling: When all other paths are terrible, the new path becomes better and we “try it out” because there’s nothing better. If the new pathway happens to result in a positive outcome, suddenly it gets much stronger. This is how our simple ANN discovers new unscripted behaviors. The danger is that we will have a sub-optimal behavior pattern which generates some results, but they’re not the best results. We’d use the same neural pathway over and over again because it is a well travelled path. Exploration Rewards: In order to encourage exploring different untravelled paths, we gradually increase the “novelty” reward value for taking that pathway. If traveling this pathway results in a large reward, the pathway is highly rewarded and may become the most travelled path. Dynamic Deep Learning: On occasion, we’ll also want to create new neurons at random and connect them to at least one other nearby downstream neuron. If a neuron is not connected to any other neurons, it becomes an “island” and must die. When we follow a neural pathway, we are looking at two costs: The connection weight and the path weight. We always choose the shortest path with the least weight. Rarely used pathways will have their weight decrease over a long period of time. If a path weight reaches zero, we break the connection and our brain “forgets” the neural connection. Evolutionary & Inherited Learning: It takes a lot of effort for a neural pathway to become developed. We will want to speed up the development. If a child is born to two parents, those parents will rapidly increase the neural pathways of the child by sharing their own pathways. This is one way to "teach". Thus, children will think very much like their parents do. Other characters will also share their knowledge with other characters. In order for knowledge to spread, it must be interesting enough to be spread. So, a character will generally share the most interesting knowledge they have. Network Training & Evolutionary Inheritance: An untrained ANN results in an uninteresting character. So, we have to have at least a trained base preset for a brain. This is consistent with biological brains because our brains have been pre-configured through evolutionary processes and come pre-wired with certain regions of the brain being universally responsible for processing certain input types. The training method will be rudimentary at first, to get something at least passable, and it can be done as a part of the development process. When we release the game to the public, the creatures are still going to be training. The creatures which had the most “success” will become a part of the next generation. These brain configurations can be stored on a central database somewhere in the cloud. When a player begins a new game, we download the most recent generation of brain configurations. Each newly instanced character may have a chance to have a random mutation. When the game completes, if there were any particular brains which were more successful than the current strain, we select it for “breeding” with other successful strains so that the next generation is an amalgamation of the most successful previous generations. We’ll probably begin to see some divergence and brain species over time? Predisposition towards Behavior Patterns via bias: Characters will also have slight predispositions which are assigned at birth. 50% of their predisposition is innate to their creature class. 25% is genetically passed down by parents. 25% is randomly chosen. A predisposition causes some pleasures and displeasures to be more or less intense. This will skew the weightings of a developing ANN a bit more heavily to favor particular actions. This is what will create a variety in interests between characters, and will ultimately lead to a variety in personalities. We can create very different behavior patterns in our AB’s by tweaking the amount of pleasure and displeasure various outputs generate for our creature. The brain of a goblin could derive much more pleasure from getting gold, so it will have strong neural pathways which result in getting gold. AI will be able to interact with interactable objects. An interactable object has a list of ways it can be interacted with. Interactable objects can be used to interact with other interactable objects. Characters are considered to be interactable objects. The AI has a sense of ownership for various objects. When it loses an object, it is a displeasurable feeling. When they gain an object, it is a pleasurable feeling. Stealing from an AI will cause it to be unhappy and it will learn about theft and begin trying to avoid it. Giving a gift to an AI makes it very happy. Trading one object for another will transfer ownership of objects. There is no "intrinsic value" to an object. The value of an object is based on how much the AI wants it compared to how much it wants the other object in question. Learning through Socialization: AI's will socialize with each other. This is the primary mechanism for knowledge transfer. They will generally tell each other about recent events or interests, choosing to talk about the most interesting events first. If an AI doesn't find a conversation very interesting, they will stop the conversation and leave (terminating condition). If a threat is nearby, the AI will be very interested in it and will share with nearby AI. If a player has hurt or killed a townsfolk, all of the nearby townsfolk will be very upset and may attack the player on sight. If enough players attack the townsfolk, the townsfolk AI will start to associate all players with negative feelings and may attack a player on sight even if they didn't do anything to aggravate the townsfolk AI.
  12. Seeking Partner (Maybe a Team)

    I agree. You should be able to create this on your own. The MMORPG part is concerning though. Do you know how many people try to make an MMORPG as their first game? Do you know how hard it is to create a server-client networked game which can handle thousands of concurrent connected users? It's highly challenging. I would start by scaling back your scope a bit. And this is your first and only post on this site, so that's also concerning. Are you new to game development, or new to the site? You should also spend a ridiculous amount of time detailing out your design document. Treat it like a movie script which you write, seal in a packaged envelope, drop in a mail slot and send off to a production studio. The director follows your GDD and creates your product without having to pick up the phone and ask you a single question.
  13. I just wrote this article a few days ago: https://medium.com/@Slayemin/your-indie-game-dev-team-will-fail-108d4b663e7e Check it out. Having your team members work 2 hours a day is going to be the biggest flaw in your plan. Also, having 5-8 people is also a major problem. Your game should be something that 1-2 people can produce in 3 weeks spending 40 hours a week -- keep your scope small enough to satisfy that criteria! Also, be prepared to spend 50% of your budget on advertising and marketing.
  14. Spellbound: May-July Updates

    Tomorrow morning, I have to fire someone. It's been a tough three months with a lot of big life changes. My girlfriend and I were unable to pay our apartment rent in downtown Seattle, for the months of April and May. So, we were strongly encouraged to move out. We were paying $2461 per month in rent, plus $200 a month for parking, plus utilities, all for a 940 square foot two bedroom apartment with no air conditioning. Then they raised the rent. So, we moved out and found a house to rent in Edmonds, a small sleepy town about 12 miles north of Seattle. We doubled the square footage and only pay $2000 a month in rent. It's amazing. It's so peaceful and quiet. It is far superior to living in an apartment. The Seattle apartment was two blocks away from a fire station, so you would often have fire engines roaring down the street with sirens blaring at 3am. Or, there'd be someone unloading product all night for the business next door, operating a hydraulic lift. Or, maybe there'd be homeless or drunk people having an argument outside my window. I don't miss it one bit. The only thing I miss is my 15 minute commute to work by walking. Moving was a bit of a... problem. The day before, I fell off of a horse, you see. I was at my ranch, testing out a new horse to see how well it rode. It was acting a bit anxious. The saddle didn't quite fit. The horse wasn't responding very well. I figured the horse needed to get used to a rider a bit more and that I'd tire it out a bit by galloping around and break it in. So, we did. We galloped down the forested road a bit, went down the field, galloped some more, and did two loops. Then, I brought the horse back to the hitching post. This stupid daschund dog came running and barking at me and the horse, completely oblivious to the sheer difference in size between a 7lb dog and a 700lb horse. Despite that, the horse was even more anxious. So, I turned it around and went over the bridge into the field by the creek. I was going to gallop it a bit more to tire it out. So, off we go again! I see some sticks and logs in the field ahead, so I start steering the horse to the left, except its not listening. We're just running at a good 30mph. Then, at the very last second, the horse sees the debris -- and makes an almost 90 degree left turn at 30 miles per hour. Naturally, this isn't a video game, so the principles of momentum apply, and my body wants to go straight. I stomp really hard on my right stirrup, with all my body weight, to stay on the horse -- except the saddle slides to the bottom of the horse and I go with it. Keep in mind, the horse is still galloping as I'm falling. In a split second decision, I decide that I'm doomed to fall and get hurt, but the smartest thing to do is get my boots out of the stirrups so that I'm not dragged behind the horse. If I don't get my boots out, I will get killed, and that's more important to avoid than getting hurt. I did it. I got my boot out, just in time. Then I land HARD on my right back onto hard dirt. Immediate pain. I'm writhing on the ground in sheer agony, screaming in pain. It's arguably the most pain I'd ever felt in my entire life. I left myself writhe in the dirt for ten seconds and then decide its time to man up. I lay still. What's my damage assessment? My legs work. I have feeling. No broken spinal cord. I have extreme pain in my rib cage and back. I feel swelling already. Breathing is hard. My immediate assessment is that I probably broke a rib and its probably got multiple fractures. Nobody knows where I'm at, so I have to get up. Moving is excruciatingly painful, but I gotta do it. Little by little, I upright myself, then slowly stand up on my two feet. Then I slowly, ever so slowly, hobble my way back to the farm house. It's a long walk. My girlfriend sees me. I tell her what happened. I go sit in a rocking chair for a minute. Then I decide it's time to go to the hospital. The pain is getting worse. I struggle to get into the car. Then, we seem to hit every. single. fucking. pothole. along the way, each one inducing nightmarish pain in my back. We get to the emergency room. I'm brought inside immediately and put on a gurney for evaluation. I'm brought into this machine to get a CAT scan and X-Rays at the same time. It hurts so much to even breathe. Despite that, I'm calm. I'm not in mortal danger. I'll get through this, but it's gonna hurt. Well, the good news is, I don't have any spinal problems and no broken ribs. I do have a bruised right lung, internal bleeding, and as I discover later, the main source of pain was a torn back muscle. The torn muscle was the worst. It felt like every time I moved, someone was stabbing me in the back with a screwdriver and twisting viciously. I was cleared to go home and given pain meds. The whole day I laid on the couch, not daring to move. I needed two people to help me sit up, and that was extreme pain. The hardest part of my day was getting up to go use the bathroom. It literally took me a good 45 minutes to walk down the hall to use the toilet because the pain was so bad. The second day, the pain got even worse. The third day, the pain was slightly less, but still excruciating. We returned to my apartment in Seattle. We had to move out. How is that going to happen when I can't even move? Thankfully, friends and family are the greatest blessing in the world. My brothers, sisters, mom, and friends all came to help us move (and a couple hired hands). The only thing I could do is lay in bed and watch as everyone around me moved furniture. I know I was supposed to be relaxing and getting better, but I just felt so guilty watching everyone else working. Anytime I had dumb ideas about getting up, my back would hastily remind me not to. It took me a full week of laying down to recover enough to the point where I could walk around with minimal pain. I went back to work on Monday. However, my commute was now a bus ride and some short walking. With virtual reality game dev, you frequently have to get up and test something out in room scale VR. It's a bit more physically active development work than you'd think. I couldn't quite do that yet. I took it easy. Then, late evening came. It was time to walk to the bus stop and go home. Now, for those who don't know Seattle, it has some hills. My bus stop was two blocks away, but it required walking up a slight incline. Normally, I'd just power walk it and have no problems. But this time, walking even at a slow pace was just too much for me. A bruised lung left me so faint that I was about to pass out. I literally had to stop and take a breather. Maybe it was too early for me to go back to work if this was my condition? So, I decided to continue resting for another week, doing light duty. By the end of two weeks, I felt nearly completely recovered. It was an amazingly speedy recovery, considering the pain and seriousness of the injuries. I am very lucky. I could have been hurt much more seriously. Now, I am a lot more cautious around horses. I don't need to repeat that life experience. What's funny is how different riding horses are in real life compared to video games. Never, ever do you ever worry about falling off of a horse in a video game. Riding a horse is always like driving a car, it always perfectly does exactly what you want, as if the beast doesn't even have a mind of its own. It's interesting to think about the difference in user experiences between real life and game design and the balances between trade offs. Anyways, long story short, I fell off of a horse and was out of commission for a bit. During the month of May, I started doing some freelance contract work. I built a VR application for Dell, just in time for their annual Dell World event. The film guys in my office went to three different parts of the world and shot some 360 video to highlight the philanthropic programs Dell was doing to make the world a better place. We wanted to create a seamless and easy to use, interactive and immersive VR experience. People would pick up the GearVR, place it on their head, watch a couple videos, learn about the programs, and continue on with the conference, just a little wiser. We nailed it. We completely blew everyones socks off. The beauty of the Unreal Engine, coupled with good design and good assets, made an incredible VR experience. After the conference, they told me about one guy who was acting like a know-it-all, claiming that 360 video was not VR and pre-judging our app as being shit. Then, the skeptic put on our headset and tried out the experience. He's immediately in a stereoscopic world and able to use his gaze to interact with objects in the scene. Sure, the 360 video is projected onto the insides of a sphere, but that doesn't mean that all of the environment has to be projected onto a sphere or be a passive experience Afterwards, he couldn't stop raving about how amazed and wrong he was. I also started doing consulting on the side for a small local VR company here in Seattle. They were having some major problems with shipping on the GearVR platform. The problem is that the Samsung Galaxy S6 phone is notorious for overheating. The Oculus Store won't accept any submissions which cause the S6 to overheat within 15 minutes. Their app was overheating the phone within 5 minutes. So, this was clearly an optimization problem. Their dev team wasn't the very best when it comes to creating high performance systems. What they created is more than acceptable for a PC, but on a phone? Terrible. I spent considerable time testing and optimizing the scene and trying to get the app to run for 15 minutes before overheating. It's a really tedious process, where you have to document what change you made, create a package, deploy it to the phone, run a couple sessions, take an average, and figure out whether your change had any effect on the overall temperature heating rate of the phone. This workflow could easily take a few hours to test a few things. I got tired of this monotonous process, so I started just measuring the rate of temperature increase over time. The goal was to keep the phone temperature below the shut off value for the entire experience. As the temperature of the phone increases, we throttle down the experience quality. As the quality decreases, the temperature delta decreases and we squeeze out more lifetime. It was sort of like a temperature based LOD system. I was kind of proud of it. I'm not sure if anyone else has had to invent something like that. Anyways, I proved that it worked and got the app to run for at least 15 minutes on my test phone. I submitted it to Oculus for review, eagerly waiting for the test results... days go by... and then... REJECTED! Why?? Supposedly, their S6 was overheating within 5 minutes. How is that possible? We have the exact same phone! I'm still a bit baffled. For my own game, it's development has taken somewhat of a back burner. It sells on average, 1 copy a day on Steam. That volume is gradually decreasing. The bottom line is that it barely makes any money. Contracting work pays much, much more. However, Spellbound is my baby and I will continue working on it in between higher paying projects. I still spend a majority of my time working on it though. I have identified a couple key problems and areas to work on. The problems are as follows: 1) The content is too short and incomplete. 2) There is a marketing and advertising problem. Nobody knows about my game. #1 is relatively easy to fix: Just keep working on the game and adding in more content. The challenge is to create more content without spending any money or increasing debts. You want more art? voice acting? sound effects? music? You gotta pay for that... with money you don't have. #2 is the really hard one. How do you get your game in front of more people without spending lots of money? I have come up with a few key strategies: A) I need to identify and develop hardware companies in the VR space and create a cooperative partnership with them. I'll make my game compatible with their hardware, and their hardware will have compatible content. It's a win-win for both of us. Hardware sells content, and content sells hardware. If 2000 people buy a unique hardware peripheral, the next thing they'll do is look for quality content to use with the hardware. I want to make sure that Spellbound is at the top of that list everywhere they look. B) I also need to make my game as "discoverable" as possible. This means that it should be easy for people to stumble onto it. Let's face it. Nobody is going to go into their search bar and directly type in the name of my game and buy it. The only way people know about it is if they accidentally find it. Okay, that's a bad thing to rely on, right? What if... we make it easy for people to stumble onto the game in multiple places? What if we have the game available on multiple online distribution channels? Buy it on Steam! Buy it on Oculus Store! Buy it everywhere! Wherever you buy it, I don't care, so long as I get paid! If I make one sale a day on one channel and that becomes my average across all channels, then I just need to be on 50 channels to make 50 sales a day! (yeah, right) But, that does speak to the value of diversifying and broadening your footprint and availability. C) Make game content so good that people will talk to other people about it. This is extra hard for a lone indie with no budget. I'm convinced that there is only *one* way to do this right. I have to tell the most amazing story ever in the history of stories, and I have to keep the world super small and highly polished. Small, amazing story & polished. That's a tall order. Everyone else will beat me on scope. Everyone else will beat me on quality art assets and uniqueness. Everyone else will probably beat me on tech as well, though using UE4 helps even that playing field. A great story is my only chance. I can write, but is it any good? Can I write an epic story which speaks to the very heart and soul of the player? How exactly do I do that in VR? What's unique about VR that no other medium has? What do I need to discover that nobody else has discovered yet? ... short & scary answer: I don't know yet. I just have to have faith in my abilities, hard work and dedication. In line with my first strategy, I have created a partnership with NullspaceVR. They're creating the Hardlight haptics suit for VR. I got to try it out at their office and get some first impressions. It's pretty cool. They have a vest you wear which has a bunch of rumble packs placed all over your body. The developer can control which rumble packs activate and the intensity and type of the vibration. By selectively controlling the rumble packs, you can create various physical sensations on the players body. In my game, I want players to feel an impact on their body at the precise location a zombie hits them. I think this would heighten the sense of immersion and presence players experience and also work as an additional user interface medium (rather than having graphical damage indicators). The key consideration is that the support for this hardware should be treated as an optional accessory to enhance gameplay rather than a requirement to play -- additional hardware requirements only increase the consumers barrier for entry, and it's already high enough as it is with VR hardware. I have also started refactoring the artificial intelligence system in my game, for the fourth time now. This may be a mistake, but I'm doing it anyways. It's not broken. It works. But it's too scripted. The current systems are just hard coded expert systems and I don't find them very interesting or convincing, and worst of all, if I want to change behavior, I have to rewrite code. So, I've been doing some hard thinking and designing a new approach to AI. Characters now use "abilities". Abilities are a type of polymorphic action which can be assigned to a creature. If I have a zombie and a knight, I can grant both of them the "Melee Attack" ability. They can both activate the ability, but the creature response to the ability differs by creature type. The ability mostly contains meta data, such as ability cooldowns and timings for effect activations, but they can eventually be treated as "nodes" in a graph. So, I grant a creature a long list of abilities (eat, sleep, melee attack, ranged attack, run away, cast spell, etc) and ideally, it will choose the most suitable ability to use in context to its current situation. How do we determine which ability to use in the current situation? We use a weighted graph (similar to an artificial neural network). Okay, but how do we find the graph weights then? I don't want to run thousands of training simulations to get the most appropriate behavior. Instead, what I really, really want to do is just give a creature a bunch of preferences it wants to satisfy and then it chooses the most important preference to satisfy and figures out what action to take to satisfy it. Initially, the weighted graph would probably be all wrong, so we'd have to run through a few training cycles -- but not too many! The secret sauce would be to use the same graph weight for the same creatures, save them to disc so that learning is persistent through various play sessions, and also share the graph weights with some sort of online database which other brains download. That super smart zombie you are fighting? He's smart because he trained against 1000 online players and he shared his training knowledge with all zombies. At this point, ideally, all I would have to do to get different behavior patterns out of wildly different creature classes, is to tweak their innate preferences and reward systems. Zombies are constantly hungry and crave living flesh. Goblins absolutely love gold above everything else. Dwarves just want to forge stuff out of iron. Demons want to own souls like goblins own gold. Bandits just have a lower moral standard than regular people. etc. etc. Slight tweaks to preference parameters would ultimately result in different behavior patterns and it would slowly get replicated universally across all game clients over time. If I can do this, and just sort of create a sandbox game world, will the AI actors live interesting lives? Will every play through be significantly different? I don't know. It's a lot of extra scope to digest. The real question is, does the player give a fuck? Or would a scripted AI be "good enough"? Am I engineering stuff that doesn't increase the bottom line? Or am I creating something ground breaking? It's hard to tell. I need money but I also want to make cool stuff at the same time. Anyways, tomorrow morning I have to fire someone. One of the staff at our ranch has been taking our tools and selling them in town. This is the last straw in a long list of second chances. My younger sister told me something wise: "You get what you tolerate." I can't tolerate theft and the distrust that creates, no matter the sob story. The line has been crossed. I hate firing people, I take no pleasure in it, but it's a necessity for the future success of a business. You know you're ruining someones day/month, but people have to be held accountable for their own actions, good or bad. Running this ranch has been a valuable teacher on the nuances of business and management, but I can't help but feel there are many lessons for me yet to learn. P.S. I am probably the closest to being a cowboy coder right now.