slayemin

Members
  • Content count

    1692
  • Joined

  • Last visited

  • Days Won

    3

slayemin last won the day on September 28

slayemin had the most liked content!

Community Reputation

6123 Excellent

6 Followers

About slayemin

  • Rank
    Contributor

Personal Information

  • Interests
    Business
    Design
    DevOps
    Production
    Programming

Recent Profile Visitors

36001 profile views
  1. A Turd's Life

    I think your market demographic is going to be 10-14 year old males.
  2. Reinventing the wheel

    I fully agree with ApochPiQ; his position most closely aligns with mine. I would add a few extra notes though: 1) If you are reinventing the wheel, think very carefully and prudently about why you are doing so and what your objectives are. The best reason to reinvent the wheel is for practice and skill development. If you move through the motions of implementing something that already exists, you can use the original to check your work -- its like doing a math problem and checking your answers. The goal is not to get the math problem correct, but to understand the broader process necessary for arriving at correct answers. Reinventing the wheel can be a good way to develop your research and development skills. When you hit the current boundary of tech / state of the art and you need better, you are capable of pushing the boundary forward. 2) If you are working commercially or professionally, reinventing the wheel is a waste of time. Time is money, so you are wasting money as well. If you are a professional and find yourself reinventing the wheel, spend some time thinking long and hard about why you are doing this and what the business case / justification for it is. Talk to your boss / manager / client for sign off before moving forward.
  3. The million monkeys approach.

    I'll bet my money on the 250 professionals any day over the 250,000 total novices. With 250 professionals, you have a large team of people who are experienced and organized. Each seasoned professional you add to a team is a force multiplier, provided you have the infrastructure to effectively organize and manage them. In this case, whole whole is greater than the sum of its parts. If you have a team of a quarter million people who don't know what they're doing -- give it three years and you'll still have a team of a quarter million clueless people with zero progress. Sheer numbers does not make up for lack of skill or expertise. This can probably be applied to many industries. I imagine 250,000 clueless people working to assemble an airliner wouldn't get very far without spending significant time developing the required expertise. I bet... in the case of game development, you'd have greater chances of success with a team of 25 novices than a team of 250,000 novices. There's probably a point where adding more people to the team is overall more detrimental than beneficial.
  4. In project management: Project = Resources * Requirements * Time Resources are people, money, tools, etc. Requirements are scope, features, etc. Time is schedules and timelines. As your requirements increase, so must your resources and time. The AAA studios come up with these massively scoped projects with timelines in the 3-4 year range. They have to staff up with programmers, artists, producers, designers, etc. From what little I understand from the AAA side of project management, they dont staff up to maximum capacity at the beginning of the project, but the do staffing based on project phases, only for the duration of the project phase (ie, artists are hired in bulk a year into development when the project moves into production). This is more efficient and saves money and allows for slightly bigger projects? You also have increasing production values in modern games as well: You can have very high poly character models with animations which are recorded with motion capture studios using actors, lots of voice actors reading tons of script, loads of level designers making huge detailed worlds, etc. Every time a triple A studio raises the bar on production values, every other studio gas to match the same quality level or risk being ridiculed by critics and gamers. This means the future will hold ever increasing requirements, which need more resources and time to accomplish. Some day, we may see a game which costed $500 million to make.
  5. Spellbound: October Update

    This update is going to show you guys what an idiot I can be. Be warned, this could happen to you too! For the past month, I have been focusing almost exclusively on developing an artificial intelligence system which uses machine learning to play the characters within my game. This is a primary objective. I have spent several weeks learning more about artificial neural networks, reinforcement learning, and a few other AI methodologies. I am by no means an expert at any of this -- I'm just a novice/beginner. I have also spent considerable time working on developing my own AI system which combines the best elements from the existing methodologies but also introduces a model for actual intelligence. Digging into this has felt like a series of intellectual epiphanies exploding in my head and has been extremely rewarding. I feel like I have a strong grasp on intelligence, learning, consciousness, and sentience, and am on the verge of creating a successful conceptual model to emulate intelligence. Okay, that's a bold claim to make. I'm going to just cut to the chase and discredit myself. This is like saying, "I found a compression algorithm which compresses anything by 97%". Strong claims like this, require proof to be believed, and I have not implemented this. Instead, I'm going to share my design progress on this: AI 2.0- Reinforcement Learning.docx (~8 pages, 10 min read) Within Spellbound, I have spent a lot of time refactoring the AI and preparing it for a machine learning system. An AI agent now has memory and gets signal inputs about the state of the world through its senses. I have implemented sight, hearing, and smell. Sight is a cone of vision which is oriented to the characters head position and rotation. I collect a list of all objects which overlap the cone, and then I do a line trace from the eye to the object to see if there is a line of sight. If an object passes the cone test and the line of sight test, then it is registered as a visible object. Hearing works a bit differently than sight: Sight is looking out into the world to perceive objects, hearing is waiting for object noises to come to us. So, when an object creates a "noise", I create a sphere at that location and set an intensity value to be proportionate to the decibel value of the sound. Then, I change the radius of the sphere at the speed of sound and stop when the intensity of sound attenuation reaches zero (via inverse square law). If this sphere overlaps an ear, and the ear hearing threshold is capable of hearing the current intensity of the sound, then we register the object as being "heard". The sense of smell is a bit different. Some objects emit odors over time, and the odor of an object slowly radiates outward (probably following an inverse square law for intensity as well). The important note to make distinct about odor is that an object is continuously emitting odors over time. Again, an odor is going to be represented by a sphere which grows over time and only overlaps noses. As an odor emitting object moves, it emits more odor spheres, and we get an "odor trail". A smart creature with a nose can detect an odor, and then find what direction the odor gets stronger, and then it can follow the odor trail to the odor source. So, a hungry zombie can smell living flesh and follow the smell to a living person. All of the sensory inputs are stored in the short term memory of a brain. If a sensed object is no longer sensed, the lack of sensory information doesn't mean the object stopped existing -- it's sill persistent in memory. Instead of using raw sensory information as our input stream, I use short term memory as the input stream to drive behavior. We can think of memory as a representation of world state for the AI agent, and then operate based off of the state. We can either use this state information as inputs into a state machine based expert system, or we can feed this into a machine learning system. Either way we handle the inputs, should not matter: The output of both systems should be the most optimal behavior for the given state. Currently, Spellbound uses the state machine based expert system for AI. It works. It makes a believable illusion of intelligence. The code for each characters behavior is roughly 200 lines. That's kind of manageable, right? Keep in mind, the behavior is currently scripted only to suit what is necessary for the prelude chapter of the game, so every time I want to add new game mechanics or capabilities, I will have to script out more behavior. This is where I become an idiot. My line of reasoning: "Okay, I am probably going to eventually have up to 50 different characters. They will all need AI scripts to drive their behaviors. My game is constantly changing, so that means every time I make a significant change to the game, I will have to update each AI script. That sounds like a lot of work! Okay... I also don't even know what the most optimal behavior for every character will be, so that may mean that some expert systems are not going to be very good. Wouldn't machine learning be able to handle this gracefully? Let's do that." Okay. Why am I an idiot? Because machine learning is a trap for engineers. I recently learned about this new term called "Nerd Sniping". Let's take a reality check on what I'm trying to do here. I'm trying to create a generalized AI system which is so good that it learns how to play any character in my game as an expert, without any coaching or training from me. To date, the DeepMind team funded by Google, has been able to create AI systems which play Go so well that they can beat world champions, they can play atari games perfectly, etc. Now, I'm asking that same type of intelligence to play any character in my game? It's possible, yes, but it's not easy. After spending a month doing R&D on this, I realize how hard this would be to accomplish, and if I were to put an estimate on how long it would take for a novice/beginner like me to implement this, I'd be looking at a minimum of 3-6 months. That's 3-6 months in developer time, which means the realistic estimate would be multiplied by any number between two and ten. Just as I have the capability to write my own game engine from scratch (which I spent 12 months on!), I also have the capability to create this kind of general AI system. The hard question is, "Is this really the most important thing for me to work on for the next six months?". Let's put this into a different context: "Is the alternative approach cheaper and faster and less risky? (yes)" and "Do you want to ship games today or build technologies for 6-12 months away?" You know that "Always be closing" scene from "Glengarry Glen Ross"? The equivalent for game development is "Always be shipping!". The focusing question for everyone on the team should be, "What am I doing to make this game ship as soon as possible?" And the other question: "What am I doing to increase sales?" If you don't sell, you don't make money. If you don't make money, like it or not, you are on your way out of the industry. If you don't ship, you don't sell. If you ship garbage, you don't sell. Therefore, by hypothetical syllogism: If you don't ship or you ship garbage, then you are on your way out of the industry. If you want to stay in the industry, then ship fast, ship quality, ship often. My AI system, while interesting, does not help me ship my game faster. It's a trap. It's a premature optimization to solve a problem I don't have yet (and may not ever have!). There's a bigger problem to solve: I need to ship quality content asap. I could continue working on this AI system and I could develop it to work and be so good that it can be reusable within any game, and I could turn it into its own product/technology and license it out to other companies, even outside of the game industry. I eventually plan on doing this. However, the right time is not right now. I need to ship my game, and whether I have machine learning AI or expert system AI, won't matter to 99% of the customers. So, I'm going to focus on wrapping up the production of the Prelude episode, shipping it asap, and then switching gears to working on the content for Episode 1. I'm going to design the content for Episode 1 to keep AI behavior relatively simple for now. If I ship Episode 1 and sales completely suck despite my best marketing efforts, then there's no point in creating Episode 2. If Episode 1 is a success, then I can build Episode 2, and *that* may be the right time to build out my machine learning AI. Certainly by Episode 3. The key is to build a customer base first so that releases actually have an audience to see them. I've recently been talking by email with a developer relations rep from Oculus. He wanted to drop the price of my game for their online store to better reflect the content. Initially I resisted the idea, but started thinking about alternatives. I currently offer my game on Steam for $20 in early access, which has Episodes 1-3 included, whenever the production finishes. I like the simplicity of that structure because it means I can just release builds which have content updates included. Another option I am now considering is releasing each episode as a separate purchase. I could release the prelude for free to act as a teaser/loss leader, and then have in app purchases for each episode. It might be a good way to build out an customer base, because people like free shit and if the content for the free episode is great and I leave a huge cliff hanger at the end, people will want to buy the next episode. The problem is that the current build on Steam only contains the prelude, so if I give the prelude away for free, nobody has any incentive to purchase the full set of content for $20. So, my current solution is to set the current build to the "premium" version when Episode 1 is released, and then make the prelude free. Existing customers won't feel cheated because they'll get all of the future episodes included. If people want to buy episodes individually, they'll cost a little more per episode ($7.99?) than a bulk purchase of $20. This also solves a future problem as well: What if a future customer isn't interested in the "Red Wizards Tale", but they do want to experience the content for "The Sorceress of Light"? Instead of spending $20 for content they don't want, they can spend it on what they do want. Anyways, I need to refocus my efforts on shipping the final update for the Prelude. Get it done! The next step is to write the script for episodes 1-3. I've been reading a lot of fantasy books lately to get a better feel for writing fantasy, but I now just feel like an amateur writer in comparison to J.K. Rowling, Brent Weeks and George R.R. Martin. I guess it's important to remember that writing a good story is like constructing a skyscraper. If you only look at the finished product in wonder, you won't see any of the scaffolding it took to build it. The scaffolding of a writer is 20+ iterations of the story? So, I have to write my script about 20 times. The first five drafts will probably be garbage, and will mostly be about trying to find the story I want to tell. The remaining 15 drafts will be refining the story I found and polishing it to perfection. And writing for VR games is more like writing a movie script than writing a book. The reason I need to write out the full story in advance is that I need to know where the story is going so that I can go back to earlier sections of the plot and drop foreshadowing hints, cliff hangers, and sharpen plot twists.
  6. Motion Capture pipeline

    https://vimeo.com/blog/post/making-a-shot-list
  7. Motion Capture pipeline

    My friend runs a motion capture company here in seattle. Here's his website: http://www.mocapnow.com/ They offer motion capture services for companies large and small. Usually, you'd rent their studio for a day or two, bring in an actor, they'd help you setup the trackers and run their system, and then you'd capture motion data. After you capture the motion data, you may have to do some data cleanup. Generally speaking, what you're trying to do is map an actors bone structure to your animation bone structure and replay the actors bone rotations on the animation bone rotations. It's important to note that you only want to capture bone rotations, not bone positions (because bones don't stretch!). You have two options: You can try to setup your own mocap hardware/software or you can rent out a studio for a day or two. If you look at the costs between the two options, renting the mocap studio is generally far more economical. If you setup your own mocap studio, you are going to be purchasing hardware, space, and spending time to setup and get proficient with the technology. Not only does it cost money, it also costs you a lot of time (and time is money!), and you don't have seasoned experts to help. I would only setup an internal mocap studio ONLY if I have a ton of mocap to do on a frequent basis (ie, large company with heavy production). If you're just an indie or a hobbyist, rent it out. Obviously, you want to plan out your shot list before renting studio time...
  8. You promise "credibility" to each prediction, but fail to provide anything to backup each claim. It's all speculation on your part. I think if anyone is going to have any good discussion about AI, it's worth spending a significant amount of time covering the different types of AI (expert systems vs. machine learning vs. evolutionary AI) and the strengths and weaknesses of each approach. If someone wants to spend a lot of time talking about emergent intelligent behavior but only covers expert systems, you know that there is a huge gap missing from the discussion about AI.
  9. Spellbound: September Update

    Yes, I started with behavior trees initially, but eventually found them to be too limiting for the direction I wanted to go. I want to create a decision graph based on a series of actions, weight it by action costs, and then evaluate the sum of the costs of each output node and compare that to the reward values of each output node. Behavior trees are good for creating expert systems, but aren't very good for supporting machine learning.
  10. Spellbound: September Update

    PAX: I went to PAX as an attendee and checked out a few booths and games. I was thinking about setting up a booth in the VR section, but the financial reality made that impossible. I just can't afford the booth fee (10x10 booth - $1,050). Even if they gave me an indie discount, the price puts me way out. So, out of wild curiosity, I went to check out the VR village section of PAX. How many VR developers decided to have a booth at PAX? Who showed up? What was being shown? The results were surprising and not surprising at the same time. Oculus had purchased half of the floor space and were busy giving demos of their hardware and select games. They have deep pockets, so they can afford that, whatever it costed. The rest of the booths? There were about four VR booths. One was an indie team showing off a really early and rough prototype of their unity game. It was so early and rough that it was unremarkable at best. They got lots of feedback, but spent $1,000 + 4 days for it. There was Archangel VR, a booth run by Skydance Interactive's VR division, but aside from that, there was nobody else there. Zero indie VR developers at PAX. What does that tell you? I think it means that a lot of other indie VR developers are exactly in the same position I am in and can't afford PAX, so most of the VR industry is a no-show. VR Contract projects & 360 VR Audio: I created a few 360 videos in VR with the film guys in my office space. I've gotten pretty good at it, so we're starting to experiment a bit more. One of the problems I have with 360 videos in VR is that it's really not the "best" use for VR. I think the inherent nature of VR requires the audience to feel like they exist within the virtual environment, and 360 VR doesn't quite sell the experience. So, we're looking at creating hybrid experiences, where we have a 360 video combined with 3D props which people can interact with. I'm also experimenting with better directional audio. I'm setting up a test demo where we have a 360 camera rig setup in a room and we also have four microphones set in known fixed positions, relative to the camera location. Then, I'm going to walk around the camera and make some audio noise so that the four microphones pick it up. Then, I'll take all four audio recordings and place sound emitters at the same relative position within VR, so when you replay the experience, each audio emitter plays their recorded track and the sound is automatically spatialized and attenuated. The cool part in all of this is that VR requires directional audio to attract the audiences attention to a point of interest. Like indirectly saying, "Hey, look over here! Something interesting is about to happen!". This does create some additional demands for video production though, because if a crew goes on site to film, they have to hide four to five microphones within the scene and save the positions relative to the camera so that it can be correctly replayed. The test is to see whether this creates enough value to make it worth the effort. Another VR project I worked on recently was for a 360 VR video which plays like a "choose your own adventure". It's interesting, because you watch a bit of 360 video with actors following a script, something happens, a decision has to be made, and then you the audience, decide which direction the story goes, and the next segments of video resume until the next choice. I found that this has some technical problems to overcome: 1) high resolution 360 video has large file size. One minute of video is about 500mb. 2) The total size of a choose your own adventure video application is the sum of all videos. A 20 minute experience could be 20gb. I don't know how we're going to get people to download that onto their mobile phone. Video streaming would be a necessity! 3) Users have to be told that they have to interact with the video at certain segments. The interactive part of the video should loop without breaking narrative or fourth walls. This creates narrative challenges. I tentatively think that this project is the first of its kind in the world. I've never heard of anyone else making a choose your own adventure film in VR. I think this could be a new product category and brings some interesting narrative tools to filmmakers. Branching stories are nothing new to video games, but it is new to immersive cinema. The project is a rough prototype which is seeking funding from Oculus via their launchpad program, so it may never actually see the light of day. Only time will tell, so we'll see what happens. Spellbound Story Writing: This month, I read the very first Harry Potter book. If Harry Potter is going to be a source of inspiration for the story/narrative, I should at least read the books so that I have a good understanding of the narrative structure and style. J.K. Rowling is a master writer and story teller, and it would be near impossible to replicate her work. However, that's not really my intent. I realized that just by reading her books through the eyes of a humble amateur writer, I picked up some new writing techniques. There was evidence of intentional design with the way the story was written and laid out (lots of setups). She certainly didn't just write a first draft, call it good and send it off to the publisher -- I got the sense that it was an intentionally crafted series of events which came through several iterative writing cycles. I think in my first draft, I'm mostly going to write out the full story with the intention of throwing it away (like a rough sketch). The goal is not to write a publishable story, but to figure out what story I want to tell. The next iteration would be a good second draft, but maybe the third, fourth, or fifth draft would be a lot closer to the final story. I think when you know what story you're trying to tell and how you're trying to tell it, the subsequent drafts become more focused on telling the story with flourish and style rather than figuring out what story to tell and how to tell it (if that makes any sense). The immediate production goal will be to finish up the current build I'm working on, and then spend a full month doing nothing but writing out the complete story as many times as it takes to get perfect. The story will have to be complete (for the whole "Red Wizards Tale" series) so that I properly structure the events to lead into the next story. It's always easier to change elements in a previous story if you find yourself writing yourself into a corner or if the story is boring. And it's way better to figure out how to fix the flaws in a story before you commit to the game production of each episode in the story -- know where you're going rather than blindly feeling your way forward. The interesting challenge here will be to figure out how to properly integrate VR into the story telling. So far, every story I have seen in VR has been garbage. I don't know exactly why, so I have to think long and hard about the underlying principles of VR narrative I need to use. One thing I know for certain though: The story protagonist must be the player. The story is what happens to the player, rather than something that is told to the player. Spellbound AI: This has been an ongoing effort on my part. I initially set out to just finish the boss monster (Sassafras) and replace the placeholder asset I currently have in game. The idea was to create a boss which does a few special abilities and generally makes life difficult for the player, as would be appropriate for a boss monster. Unfortunately, I got carried away. The characters in the game were carefully scripted expert systems based off of state machines. Everything was hard coded, so things were pretty rigid. It works. Good enough. However, every action that a character could perform was just a hard coded "thing" that happened, rather than being an ability which was used. So, I set out to change this: Everything a character does should be an "ability"/"action" which is done. The ability is character agnostic, so using an "eat" ability would be a general ability but implementation would be character specific (polymorphism all the way!). Then I got this crazy idea: Each ability is really like an output node on an artificial neural network graph. In my current case, I'm just hard coding when to execute which abilities based off of an expert system I hand crafted. Okay. It works for a few monsters. But what happens if I want to create dozens of different monsters, all with different behavior patterns? Do I *really* want to go and code up brittle expert systems for each monster class? Or is there a way to avoid all of this future work by creating the framework for a more advanced AI system now? I thought long and hard on how this new AI system should work. I don't want to hard code behaviors. I don't want to have an AI that needs to go through thousands of training cycles to get appropriate behavior. I want my AI system to gradually learn and get smarter. I want unscripted intelligent behaviors. So, to get all of this, I need to invent a new type of AI system. That requires creating a model for intelligence. I think I got it. Here's a rough outline on how it will work: Input Feed: A list of interactable objects (food, characters, doors, walls, ladders, etc). State of self (health, stamina) Hazards Decision Graph: Given the list of known inputs, choose the best action to perform. The best action is the output with the best reward. Graph Construction: The list of outputs is going to be created based on the list of inputs provided. We are going to create a list of possible final outputs. Then, we're going to create a weighted graph from our current state to the final output state. The weighting will be determined only by time cost (with travel time included). Then, we're going to evaluate the traversal cost of each final output node. This is done by summing the costs of each node traversed. The final output node with the best cost to reward ratio will become the "end goal". The chosen action will be the first step towards the end goal node. The graph is reconstructed only when the input feed items changed (added or removed). After reconstruction, the graph is re-evaluated. Outputs: A list of possible actions Final Output: A chosen action So, we have a graph which is constructed based off of input nodes (senses) and output nodes (possible actions) and the input nodes are connected to the output nodes via a series of necessary interactions. The final output will be determined by the best cost vs. reward ratio. The key to note is that the "cost" comes from the graph itself, but the "reward" value is going to be a variable function based off of the creatures brain value system. The graph will be like a template framework which brains use to determine the best course of action at any given point in time. The individual personality / behavior patterns will be created by tweaking a bunch of personality parameters which give various outcomes different reward weights. So, you can take the same graph, with outcomes which have the same weights, but the chosen outcome is going to vary by which brain is evaluating the rewards of each outcome! The brain of a goblin will choose different actions from the same weighted graph which a zombie would! The only unknown right now is "how does a creature do long term planning via evaluating a chain of consequences?" Anyways, a significant part of this month has been focused on creating the input layers and output layers of this graph. I have created the abilities system which can be represented as output nodes, and I'm currently creating the sensory input systems which are represented as input nodes. The current senses I am working on are: -Eye sight -Hearing -Smell Eye sight is pretty straight forward: You just attach a vision cone to a creatures head and feed the creature a list of all interactable objects which overlap the cone. Hearing is a bit challenging. I actually want my characters to listen for sounds and to interpret and identify them. The end goal is to have the players microphone listening for the players voice, so if the player is talking in the graveyard or screams at the sight of a zombie, nearby monsters will hear the player making noise and be alerted to their position. Smell is going to be an interesting sense. I will attach "smell emitters" as a component to objects. Every second, the object emits a "smell" which is represented as a slowly expanding sphere. Each smell sphere will be linked to the next smell sphere, so it'll be sort of like a linked list. If a smell sphere expands so much that a smell is sufficiently dissipated, then it is no longer "sensable" and will get destroyed. In effect, a player walking around the graveyard will emit a trail of "fresh meat" smells which zombies will latch onto and follow like blood hounds. A lot of this is currently very much still in the "concept" phase of development, so I may be completely wrong on some ideas and approaches. However, I think the concept for this type of AI is a bit different from anything else I've seen (though, I am ignorant at what others have attempted so this may just be a reinvention of the wheel). If all goes well, I'll have a generalized AI system which can be used for all creatures, and behavior becomes an emergent property of a brain with preset value systems. When the scope of my game expands, I'll have intelligent entities which learn to function within the environment with minimal extra work on my part. I think once I have a fleshed out version of this AI system working, I'll write a comprehensive article detailing it out so other people can replicate it. Startup Week: Yesterday I gave a bunch of demos to the public during Startup week in Seattle. Everyone who played the old build was amazed by the tech, visuals and interaction systems. I wanted to say, "You think that's cool? Just wait until you see what's coming next...". I have slowly come to realize that my interface system is not easy enough for people to use. I still have to instruct people on how to play the game, so that means my game is not good enough. Trademark Conflicts: Today, it finally happened. I had the first trademark name conflict. On occasion, I look at the traffic to my Steam page via google analytics to see if there are any changes. Normally, the page averages about 30 visitors a day (That's pretty bad!). Two days ago, traffic went up to 650 visitors in one day. WTF? I did absolutely nothing to get this traffic, despite any intentional efforts. What happened? Why were people suddenly looking at my store page? Did I get a big break? Did I get surprise press coverage without knowing it? Did a social media page promote my game without my awareness? Did a popular youtube video go up? A kindly worded Reddit post somewhere? Was the Seattle Startup week more positive exposure than I expected? Why did traffic spike? It turns out that PC Gamer had released an article about a game currently in development by Chucklefish. The game looks like a version of Stardew Valley, but involving magic. Their internal name for the game? "Spellbound". This got coverage on Reddit with about 950 upvotes, so people were really excited about this game in development. As a result, people went to steam and started searching for "Spellbound", trying to find the store page for the game, but instead stumbled onto my store page. Uh oh... consumers are confused! And also, "Yikes!". What happens if Chucklefish releases their game in a month or two, brands it as "Spellbound", pushes a lot of marketing material promoting that branding, and then they realize that my game is getting confused with theirs and getting blow off traffic? Then their legal team decides to file a trademark to protect their name and then issues a "cease and desist" order to me, forcing me to give up my game name even though I had it first? Oh no... that would be a complete disaster for me because I've been using the name for over a year and it's the name my customers are familiar with, and all of my hard fought efforts would be undermined. It would be extremely disheartening. So, today I learned all about Trademarks. I filed a trademark application with the US patent office to protect the name of my brand. I then sent a very kindly worded email to Chucklefish to inform them about the naming conflict. In hindsight, I should have done this over a year ago so that other companies could look up the name in the trademark database before choosing the name and avoid conflicts. Completely my fault! Let this be a lesson to you guys: Before you name your game, check to see if its trademarked, and if its not, trademark it! Copyrights apply to intellectual property, trademarks apply to brands. I expect this will never turn into an actual problem, so I'm not worried, but I did file a trademark as a precautionary measure. This is an area you would want to be pro-active in, rather than being reactive like I am.
  11. Steps to becoming a great programmer: 1) Learn C or C++ and master it. 2) Learn as many languages as you can! The more you know, the better. 3) Realize that knowing different languages isn't what makes you a better programmer -- programming is language agnostic. It was never about syntax, it was always about choosing appropriate design patterns and algorithm choices!
  12. The future of VR Gaming and if Nerve Gear was real

    Here's an interesting philosophical insight which guides my VR design: https://en.wikipedia.org/wiki/Brain_in_a_vat When I design my VR experiences, I try to always ask myself, "What gives this away as being a fake world?" and "How long does it take for me to determine that this world is fake?" The fewer and fewer "fakeness" indicators a VR experience has, the more closely it resembles reality. The longer it takes for you to find a "glitch in the matrix" so to speak, the more convincing the VR experience. With todays hardware though, we're quite a ways away from perfect immersion. I think in perfectly immersive VR, we have to capture every sensory input into the brain and override it with a new one. The head mounted displays are a good attempt at capturing sight. Noise cancelling headphones are good for capturing hearing. What about smell, taste and touch? Some people are creating haptic feedback suits for touch, other people are creating warehouses filled with props which you can walk around and touch in VR. Some people are creating thermal variations in objects for touch senses. One question we should be asking though: If its possible to "jack in" to a persons brain stem to capture and replace all sensory inputs and responses, would we actually want to do that? What could go wrong? I'm all for great VR, but I don't want anything invasive going into my head...
  13. 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?
  14. Feel free to ask any questions or add comments here