Jump to content
  • Advertisement

slayemin

Member
  • Content Count

    1775
  • Joined

  • Last visited

Community Reputation

6220 Excellent

About slayemin

  • Rank
    Contributor

Personal Information

  • Role
    Programmer
  • Interests
    Business
    Design
    DevOps
    Production
    Programming

Social

  • Twitter
    @slayemin

Recent Profile Visitors

42540 profile views
  1. I've got a broad production level puzzle I've been trying to figure out and I've never been sure if I've been working with all of the pieces. I'll try to explain the problem and my considerations. 1) I need to create AI for all of my characters and it needs to be good enough that it's convincing. 2) My approach has been to quickly write Finite State Machine scripts in C++. It has worked well enough. 3) During development, I change stuff in my game and I will be adding in new mechanics. 4) Every time I change something important, I need to refactor my FSM AI to account for it. This becomes a "tax" I need to pay, and when I just have a few relatively simple characters, it's not intolerable. Now, I put on my magical hat of farseeing +3, and I see a future where my game has dozens of characters, each with FSM scripts. The overhead tax I need to pay increases proportionately, and it gets to the point where I need to spend equal amounts of time maintaining AI scripts as I do with building out game systems, which ultimately slows down the pace of development. Here's where I get a bit conflicted. One side of me says, "Premature optimization! YAGNI! Solving problems you don't have!" The other side of me says, "But these are real problems you're going to have if you don't head them off early and it's just going to be more expensive to fix them later. This has a compounding cost in terms of refactoring effort. Nip it in the bud now. Work smarter, not harder." And the business side of me says, "Will this help me sell more copies today? What's urgent? If this costs me X months and I don't sell Y copies to sustain development work, then my effort is misdirected. I should be focused exclusively on building what sells!" I think all are sage, prudent voices of reason to listen to and have merit behind them. My creative engineering side has been quietly asking, "How can I avoid paying that increasing maintenance tax as development goes forward?" and the answer I've been recircling back to over and over again is "Design an AI system that doesn't need maintenance. It'll have a bit of a steeper upfront cost, but the investment will pay off in saved time over the course of development." Easier said than done, and to build such a system is a tall order which teams of other, much smarter people have tried to do with limited success. My engineering approach has been to dig into current research and development in machine learning, particularly the work being done by Google owned DeepMind. They've been able to create model free AI systems which can learn how to play any game with no instructions on how to play it. Their AI systems have beaten world champions at the game "Go". A year ago I said, "That sounds like something I need for my game!" (cue: ridiculous groans). The reality is that I don't have a long history and deep background in machine learning AI systems. I didn't know anything about artificial neural networks, reinforcement learning, CNN's, or any other acronym super smart AI people mention off the cuff. I fumbled in the dark trying to understand these various AI systems to see if they could help me build an AI system for my game. I explored quite a few dead ends over the months. It's hard to recognize a dead end when you're in the middle of development, and it's also important not to get mentally entrenched on one track. I have to take a step back and look at the bigger picture to recognize these tracks and traps. One track/trap is to think, "I need to have an artificial neural network! That's the only way to make this work" Another one is, "I need to have machine learning, and my implementation for machine learning needs to match the AI industries definition! It's not machine learning if its not an implementation of back propagation!" Another trap: "My machine learning type of AI should convince AI professionals it's real!" All of that is obviously nonsense and nobody is saying this -- its an invented internal narrative, which creates unnecessary constraints, which creates traps. Russel (Magforce7) has helped me see these traps and stay focused on what matters, but I'm still fumbling my way in the dark within a maze. I'm just taking inspiration from the ideas proposed by these other AI systems, but creating my own and trying to keep it as simple as possible while trying to minimize the amount of future work I need to do to maintain the system. So, here are my design goals for the AI system: 1) It shouldn't require a lot of maintenance and upkeep after it has been deployed 2) It should ideally be flexible: Updates to the game mechanics shouldn't cause AI system code updates 3) The AI controlled characters should appear reasonably intelligent and perform plausibly intelligent behaviors. 4) There should be support for variation in behavior between characters of the same class, and between characters of different classes. 5) I don't want to write any special case code. If I start writing FSM code, I'm doing it wrong. 6) Complex behavior should be emergent rather than designed. 7) It should be relatively simple. Integrating things into the AI system should be fast, easy and non-technical. Designing a system to meet these broad goals has been very challenging, but I think I've done it. I have spent several months thinking about how people and animals think and trying to create a model for intelligence which is consistent with biological intelligence. It's taken a lot of internal reflection on my own mind and thought processes, and doing a bit of external research. One important distinction with proposing broad intelligence models is that at the end of the day, it must be computable. If you can't reduce an intelligence model into computable systems, then it is no good for AI, and probably isn't a well defined model and gets lumped in with all of the other guesswork other people have proposed. I've come up with a few of these myself and haven't been able to reduce them into data structures or algorithms, so I had to throw them out. Anyways, on to my model! I've decided that I would structure my model to work as sets of loosely coupled systems. If one particular module is flawed and needs to be refactored, it shouldn't mean the whole system is flawed and needs to be refactored. Here are each of the modules: A picture or class diagram would be helpful in understanding this better. But let me describe the general workflow here for AI characters. Each character has a mind. The mind has memory, knowledge, motivators, and a list of possible behaviors to choose from. The mind is very similar to the finite state machine. Each character has sensory inputs (eye sight, hearing, smell, etc). The only way an AI character can know about the environment around it is through its sensory inputs. The sensory inputs are just a bunch of data feeds which go directly into memory. Memory is where we contain transient state about the environment around us. Memory can be persistent even after a sensory feed is cut -- closing your eyes doesn't cause objects to disappear, so we have object permanence. Objects stored in memory have "importance value" filters applied to them and they also have expiration times. Ultimately, the memory in a mind contains all relevant state information! Our mind has a list of all possible behaviors it can perform, so there needs to be a way to choose the most optimal behavior from the behavior list, given the current memory state. This means there needs to be some sort of internal decision making process which quickly evaluates optimal behavior. How do we build this without creating a bunch of FSM scripts? Because if that's what we end up doing, then we failed and are just creating overly complicated FSM's and are creating scripted behavior models which need to be maintained and updated. Here's the trick where it gets interesting... When we get objects through our sensory inputs, we don't store references to those instanced objects in memory. Instead, we store a set of descriptive tags for those objects. We don't choose our behavior based on objects in memory, but the memories abstract representation of those objects. Our brain also has a knowledge repository of behaviors, tag sets, and its effects on motivators. Our goal is to choose behaviors which create the most reward for our character, and reward is determined by the sum of motivators satisfied (more on this below). Our agent doesn't intrinsically know how much reward certain behavior and tag sets generate, so it needs to query its internal knowledge repo. The knowledge repo is where abstract reasoning happens. Since we're not working with instanced objects directly, but rather abstract representations of those objects, we can look at the tag sets which define our objects in memory and do pattern matching against tag sets in knowledge, find which sets of knowledge are relevant to the object, and then look at historical motivation satisfaction (not historical rewards). Essentially, we're looking at objects and querying our knowledge banks for similarly related objects and asking about our past experiences, and then projecting the best matched experience onto the current object. We're trying to match the best motivationally satisfying behavior to the object, and that becomes our most optimal behavior towards that particular object. We repeat this process for all objects in transient memory, keep a high score of the most rewarding behavior, and then choose that as our most optimal behavior. What's interesting is that this applies abstraction to objects and doesn't require thousands of training cycles. Imagine an AI character reaches out and touches a burning candle flame. That creates a negative reward for that action. The AI looks at the set of properties which define that candle flame and stores it in knowledge and associates the negative motivational experience. Let's define this by the property set {A,B,C,X,Y}. Now, some time passes, and the AI is looking at a campfire, which has the property set {C,G,H,J,X,Y}. It queries its knowledge base and sees that there is a set intersection between {A,B,C,X,Y} and {C,G,H,J,X,Y} which is {C,X,Y}. It can then say that there is a relationship between the campfire and the candle flame and based on its experience with the candle flame, it can project a predicted outcome to what would happen to its motivations if it touches the campfire, without ever actually having touched the campfire. In other words, we can make generalizations and apply those generalizations to related objects. I was initially making the mistake of defining how much reward each tag was worth. This is wrong, don't do this. Let's talk about reward calculation and how it's related to motive satisfaction, and how this can vary by character class, and character instance. Here is a general set of motives every character will have: Existence / Self Preservation Pain avoidance Hunger Sex Love / Affection Comfort Greed Morality Justice Fear Power Curiosity This is not a complete set of motives, you can add more as you think of them, but the central idea here is that our underlying motives/goals are what truly drive our actions and behaviors. It's the undercurrent to everything we do as humans and animals. The general equation for evaluating reward is going to be defined as: We're essentially calculating the sum of all F(a,b,w) for all changes in motivation factors. Let's look specifically at hunger to illustrate how this works: In our knowledge repo, we have the following: which describes the effects on your motivations when you eat a loaf of bread: It satisfies hunger and creates a little bit of pleasure (the bread is tasty!). We have a few different character actors which have an eating behavior: 1) Humans 2) Zombies 3) Cows 4) Termites For reference, humans like to eat breads and meats, as long as the meat is not human flesh. Zombies are exclusively carnivores who eat any kind of meat and have no qualms about eating human flesh. Cows are herbivores who only eat grass and nothing else. Termites are a type of insect which only eats wood and nothing else. We 100% definitely do not want to write a state machine describing these behaviors and conditions! Let the characters learn for themselves through trial and error and abstraction! So, our token human is hungry and we represent this by setting his initial hunger motivation value to 0.5. In front of him is a loaf of bread and he has prior experience/knowledge with that bread, as described above in the quote. Using our equation, how much reward would he get for performing the "eat" behavior on the bread multiple times? As our human continues to eat bread, it satisfies his hunger and it becomes decreasingly rewarding to continue eating bread, to the point that it becomes a disincentivized behavior when he can't eat anymore (represented by the F(X)=X^3 graph). Let's place zombies and humans and put a chunk of human flesh in front of them both. The knowledge looks like this: It satisfies hunger, but generates a moral crisis! Here's where weights come into play. Internally within the zombie character, we have a constant, fixed weight on the influence of morality on their reward modifier. Zombies have no morality, so they are completely unaffected. Our particular human has a strong moral conscience, so eating human flesh would be deeply objectionable. We *could* adjust the humans morality weighting to 0.8 or something, and if they eventually get hungry enough, the morality consequence could get overridden by the motivation to eat, and we'd have a cannibal. Notice that no extra code would need to be written to create these special behavior cases? These numbers can be adjusted in a spreadsheet to change behavior patterns. We also don't want to go through the process of describing what behaviors can be performed with particular objects. That would add extra work. Let's say we have a wooden door. It's entirely possible and allowable for the human and the zombie to eat the door (or anything for that matter). But how do we prevent them from doing so? If they attempt to eat something they aren't supposed to eat, we simply don't change a single motivating value. They will both learn that eating wood doors does not help them satisfy their driving motives, so when it comes to choosing rewarding behaviors, this would score a big fat zero. If we have an idle behavior which scores a minimum reward of 1, then the characters would prefer to idle around doing nothing before they'd go around eating wooden doors. It's a bit hilarious that the threshold between idling and eating wooden doors is so small though. Taking a few steps back, I think I've got all of the working pieces together now and it's mostly going to be a matter of implementing this. One section that's still missing from this future planning and look ahead. If you are hungry and standing outside of a house, look in through the window and see a ham sandwich, and want to eat it, then there is an intermediate step of moving to a door and opening it. This series of chained actions has a cost which needs to be factored into the reward calculation, and it would also need to be capable of working towards goals which don't exist (such as deciding to plant crops to get food to eat -- the food doesn't exist in present time). For the last week or so, I've been building this AI system out and I've got a rough working prototype. I'm still implementing the underlying framework and discovering design oversights and errors, but I think once this is working, I'll have a pretty unique type of AI capable of abstract reasoning, learning, planning, and optimized behaviors. I suspect that lots of different characters with slight variations in weights, could generate an interesting system of interactions and an economic system of competing interests could be an emergent property of these underlying systems of motivation satisfaction driven behavior. I think this is also reflective of real life? It's been making me look at people very differently for the last few days and it's been blowing my mind a bit.
  2. Me: solo indie dev with ~20 years of programming experience I don't have a formal or highly regimented process, but I also work alone so it's less necessary because I don't have to communicate with other team members. The process I use is very similar to 'agile', but I don't really even bother to follow or know exactly what the agile processes are. I just use what works for me. So, here's how I usually do it: 1. Visualize what I want to build and how it should work. 2. Write it down in notepad++ with as much detail as possible. 3. Think about it really hard. 4. Plan out how I'm going to attack the problem. What data structures will I use? What classes will I create? How will they relate to each other? 4a: I *don't* spend any time drawing class diagrams or any sort of schematics. My philosophy is that if I have to do that, then the problem I'm working on is too big and I need to attack it in smaller chunks. 5. Implement it in code, but cycle between coding and QA very rapidly. 6. QA pass. Does it work? Does it fit the vision? Does it fit the design intent? Is the design good? Is it fun? 7. Completion. Lots of play testing. The play testing will generally reveal some areas to polish, fix or add onto. That returns us to step #1. These usually happen in relatively short, focused sprint cycles. I think game development is a highly iterative process where you're finding your way through a maze. You can do "big design up front" (BDUF) but it generally doesn't work as well for games? Maybe it does for other more experienced designers and bigger games, but for the smaller indie games, it is hard to design 'fun' and get it right the first time. With larger teams though, you'll need to have a much more focused design effort up front because it is the way you coordinate efforts and communication between team members.
  3. A few points that come to mind: 1) To my understanding, the lounge is meant to be sort of a catch-all for posts which don't necessarily fit into any of the other forum categories, and this generally includes politics. 2) Being heavy handed on the enforcement of policies in regards to politics or any other controversial topic can have a broader chilling effect on off topic conversations. I would probably close/delete posts which are trollish in nature and have no substance to contribute towards a broader discussion (political or not). 3) Encouraging diverse perspectives is important. I know I've read some forum posts here over a decade ago about athiesm vs christianity, and at the time I was a christian and laughed at the ridiculousness of athiest arguments, but they made good arguments and eventually I came to see and understand their point of view and gradually became an athiest myself. Just because we don't always agree with a perspective doesn't mean its wrong or not valuable, especially if its well argued and supported. 4) I think of politics and policies as a "proposition of a system", and being a game programmer with some systems engineering background, I see value in examining other systems even if they aren't directly related to games or programming. At the end of the day, we make virtual worlds which have their own systems and rule sets, possibly with their own internal politics (ie, skyrim has Stormcloaks vs Empire). I think art can be a commentary on life, and politics can be a part of our life and culture, so there is a place for political discussion in a game development forum. 5) With the systems engineering & politics thing in mind, sometimes I have ideas for different systems of governance and how it could work. I want to test those ideas and find blind spots by proposing them to other people to get feedback. What are its strengths and weaknesses? If I put it into a game / story, could I use the weaknesses of the system to create conflict in my game/story? Could that act as a form of social commentary? I mean, you can look at Cyberpunk 2077 for examples of this type of commentary and exposition on values, culture, politics and policies. 6) Sometimes, there may not be a clear cause and effect from the discussion of ideas, but they can have influences which show up years later...sometimes in game content and how its presented to audiences. 7) There are political things that happen all over the world, all the time, which directly and indirectly impact the gaming industry (check out gamepolitics.com). A mass shooting at a school? People often blame FPS games. China's internal politics doesn't allow games with mentions about Taiwan, tibet, etc. Lawyers (such as the disbarred Jack Thomson) can make ridiculous claims about games being 'murder simulators' and trying to pass legislation against our industry.
  4. slayemin

    Possible Use of Octree, Please

    I think what you’re really looking for is an LOD system for terrain which would apply a bit of a mesh simplification system based on screen space. An octree could be used to do that, among other options/alternatives. If you’re building your own game engine, be prepared to spend weeks to a month getting it right. If you’re using an existing engine like Unity or UE4, it should already do this for you out of the box and cost you nothing.
  5. slayemin

    How common are non competes?

    Also keep in mind that some non-competes can have terms which extend out months after you leave the job. These are designed to prevent you from taking your knowledge and immediately getting hired on with a competitor to build a competing product. Companies will want to put in a term which makes it so you cannot work in the industry for a set amount of time! This means, you are legally blocked from employment in your industry after you leave the company! Financially, you are making no money, so you would need to be double sure that you are being appropriately compensated so that you can live without wages for that amount of time. In other words, if there is a non-compete clause in your employment contract, you had better be getting paid more than just the base market rate for your skills.
  6. Sorry, I read this and my mind immediately went to a small indie startup which I knew. It was started by a bunch of graduate students from a game school. One of the kids had a rich dad who let his son use a few million dollars to start his own company, so he hired on about 15-20 class mates to make... yet another platformer... and it took them about 3 years. I visited their apartment office a few times to hang out and do play testing on their game. I was a bit shocked. They were NOT running a tight ship. At any given time, about 3-5 of the employees were out on the back patio smoking pot. A few others were watching youtube videos of starcraft 2 games. There was a lot of slacking going on. I kept thinking to myself, "If I was running this company and this is what my employees were doing, I would be busting balls, cracking the whip, and firing the unfixables. I'm not paying people to sit around doing nothing!" That's totally what this company needed. To their credit, they actually finished the game and launched it on Steam. It was well polished, felt good, looked beautiful, etc. But, the game sales flopped completely because nobody thought to do any marketing or market research. The company closed its doors and the rich kid burned a couple million dollars. Whoops!
  7. slayemin

    Begginer at writting for video games.

    From what I understand, world building for a story is pre-production work done before story writing happens. Sometimes, it is an activity that happens alongside story writing (world building -> story writing -> world building -> story writing, etc). I think this applies to all writing, not just writing for games. Writing for games is really just a subset of writing. I'm working on writing the story for my own game. It's a LOT of hard work and planning. The hard part is figuring out what story I want to tell. My current approach is to write the whole story as a novel using discovery writing, then rewrite the story a few times. I figure that between all of the rewrites, each successive story will gravitate towards common plot points that are most interesting to focus on. Once I have the story plot structure and characters well established and have well explored the story space, I'll be ready to adapt it into a game with interactive story telling. When it comes to writing for games, I think the writing format changes. It'll be structured more similar to a screen play than a novel, and you may have branching plot lines which can be filled out based on your explored story space and alternate endings. Sometimes, the story branches are more cosmetic than plot structural, and generally tend to follow a main story arc -- I actually don't know of any games which have drastic changes in plot structure based on player choice. I would say that if you want to write, you should spend a majority of your time writing. You're going to suck. You'll produce garbage you aren't happy with. But those are stepping stones towards better work. When you get more experienced as a writer, you'll also get more experienced at world building and have a better idea on what matters and what doesn't matter. You'll always want to focus on your audience experience first as well! You may like inventing new languages which are functional, but will your audience understand, know, or care about it? What's their user experience like? At the end of the day, whether you're writing books, creating movies, a playwright, making games, etc, we're in the entertainment industry and it is our job to entertain our audiences. Never lose sight of that.
  8. I also use a notepad++ text file for all of my tasks. It's super simple to setup, super simple to manage, and you can instantly change the task organization to exactly suit your needs. If you need to share tasks with team members, just take the plain text and put it onto a google docs file and share it with team members. For small teams of 2-5 people, this will work great and not cost anything. If you have a bigger team, you'll want to use something a bit more structured. Even Todolist might be sufficient for 2-10 people?
  9. Yup, I agree with jbadams. To add, I generally think that the person who started the project is going to also wear the producer hat, among many other hats. If the number of team members increases to the point where the current producer is spending a large amount of time doing 'producer' things while also trying to juggle many other roles, then it's time to delegate that to someone who can do it part time or full time. The general goal is to always be working yourself out of a job by either eliminating it through increased efficiency or delegating it to a specialist.
  10. slayemin

    Weapon recoil as spring?

    From my own experience shooting guns, the gun will push back into your shoulder and the barrel will go upwards (depending on the gun). If you shot a gun in space and had no body to absorb the recoil, it would not act as a spring, but as an instantaneous impulse of force, proportionate to the F=ma equation (using newtons 3rd law of motion). A spring function could be used to approximate the increasing resistance against the human body as the human body gets pushed back and then starts pushing back into the gun until it reaches a resting position. Keep in mind, shooting a gun will put some rotational force on the whole object as well. Some guns, like the M-16A2 will have upward facing vents which slightly counter-act the upward movement, but hand guns will definitely jerk your hand upwards, proportionate to the caliber of bullets being fired. Using video games like Counterstrike for reference models is already very flawed because their gun physics are not reflective of reality.
  11. You should go much more into detail on what role you're playing in the production of the project. How are you helping to move it forward to the finish line?
  12. slayemin

    Magick with a K

    Yep... I don't need to read any further than this. I know its gonna be trash and I don't need to waste any further time. It's more interesting to examine why this is trash than to read it. 1) Cutesy misspellings. Reeks of pseudoscience at best. 2) The writer missed the space bar too many times for my patience. 3) The writer opens with "I'm not an expert", so I'm left wondering why I should care about reading anything further beyond this. 4) an "esoterrorist"? "opti-mystic"? Now you know that the bar for rigor and quality is scraping the bottom of the barrel. The reader should know they're in make-believe territory.
  13. slayemin

    June 2018

    I suppose I should recap my trip to Las Vegas. I got to attend the Dell World Expo at The Venetian and one of the stations for Dell was dedicated to showing off the application I built for them. Here are a few pictures I took: This is the booth setup before the show begins. There's two podium stations, a set of wireless headphones, and a Leap Motion device attached to a laptop via USB cable. The convention is in full swing and people are coming up and interacting with my application. It's driven entirely with hand gestures. No mouse, keyboard, game pad, etc. This is the first application of its kind in the world. Nobody else has used hand gestures to control and interact with 360 video before. Usually there were healthy crowds of people watching other people try it out. I had three different interactive scenarios people could play through. The game portion was a fun way to learn about Dells philanthropic programs. I had some people literally go through every single video because engagement was so high. Who wants to watch 15 minutes of corporate feel good video? These guys do! Just in case, I brought my laptop with me and had it setup to create new builds if I needed to. There were some small bugs and changes I wanted to fix, so I started to create another build. I copied all of the files over... and then disaster happened. I don't know how it happened, but somehow, the source code folder was completely empty. I still don't know how that could happen because I just copy/pasted the root project folder and the source code folder was a sub folder. All of the other subfolders had all of their files copied successfully, so it shall remain a mystery. So, if there was a critical bug, we would either need to just deal with it or I would have to catch an emergency flight back to Seattle. There were bugs, but fortunately they were minor enough that we could brush over them. I had to train the Dell employees how to run the application. Fortunately, I had already anticipated this need and tried to simplify the application management to be as easy as possible. Basically, you could jump between scenes with the number buttons, and the first button just resets the whole app. Unfortunately, there were a few small lighting artifacts which popped up on a reset level, so I had to train them how to quit and restart the app. It only took a few seconds, but it did mean that a booth attendant had to always be on hand and paying attention. For most of the event, I stood nearby and just watched people using my app and took notes. Where were the pain points? What assumptions were people making about the interface? How long was user interest being held? What was holding their interest? What mistakes did I make? How can I fix them in the next update? What am I missing? One thing that I realized is that our introduction screen is terrible at attracting attention. I initially wanted to use an interface which trained the user on how to use the application, so to do that, I kept it bare minimalist so that people could focus on only one thing: Learning how to grab things. The interface started with a black background, a floating acorn, and a bit of white instructional text. In terms of focusing and training, it doesn't get any simpler and more clear. As far as capturing the attention of passer bys, it was TERRIBLE. So, if you're walking by and all you see is the intro screen waiting for users to engage, you have no idea what the application does or is about, so you'll just keep walking. This means that if you're the booth attendant, you have to be actively engaging with people walking by and trying to hook them. My opening line is always, "Hey, you want to see something amazing?! Come check this out!". This engagement stuff is always a really good skill to have if you're ever giving demos of your game at events like E3, PAX, meetups, game jams, etc. After the expo was over, I felt drained and lost a majority of my interest in the application. I don't really know why, but I just got really bored with it. A month later, I'm still bored. My attitude feels like, "Yeah, that was pretty cool and it was hard to pull off, but it's been done now." I was hoping that I would get lots of contacts and leads for more work, but that didn't really happen. Maybe it's my fault. Maybe I needed to be more outgoing and aggressive about getting to know people. Or maybe it wouldn't have mattered one way or another? During the event, we were put in touch with a team at VMWare, a subsidiary owned by Dell. They were looking for a vendor who would build them a virtual reality application and we were the only ones they could find. So, we had a phone call meeting to get an understanding on what they're trying to build. Basically, it was a group of marketing people who had just seen Ready Player One and they wanted to build a VR experience for their customer experience team. Great! This sounds like a big project and a good opportunity! I started digging into their requirements. They... really didn't know what they wanted or could do. They said that they want every person in the company to be able to use their VR app, and they have 25,000 people. I asked them if they were going to buy 25,000 VR headsets. They didn't realize they needed to buy a headset. ...Okay... They decided that maybe they didn't want to do a VR app. What about a 3D game app instead? "Sure! I can definitely build one! What do your client workstations look like in terms of hardware specs?" "We run thin clients throughout the whole enterprise." *long silence on my end* "uh... that's not good." So, I asked them to try running a 3D game on their server and playing it on their thin clients. The big, obvious problem is that all of the 3D GPU processing will happen server side, and the amount of GPU processing is going to be a function of the number of connected clients. So, can their server GPU handle a high rendering load? I'm still waiting to find out...a month later. I found that they're trying to create a multiplayer app... in vr... with voice over IP...with a content management system backend... supporting up to 25,000 users... on thin clients... in three months! WTF?! Okay, I know I have the capability to build an enterprise level multiplayer CMS app. It's not going to be easy, but I could pull it off. But probably not alone in three months. I'd have to hire people to help. The problem is, it's going to get very expensive, very quickly. And if I put on my hat of pragmatism +5, I have to ask, "Why not just build an enterprise web app?". "Because we want to do something cool and different." That's a valid reason, especially for marketing folks who need to differentiate themselves from other marketing folks. Anyways, I submitted a ridiculous budget proposal last week. I think this project is going to fail before it starts because it's just not technically feasible, but I will probably just have to end up turning down the project if I don't get fully funded by the end of June. I just can't pull this off in less than three months... a corporate MMORPG in VR. In my mind, I'm already expecting it to fall through so I'm not getting any hopes up or counting on it to happen. They have to be moving a lot faster than they're moving right now if they want this to get built. In other news, I've been in a bit of a professional rut lately. I need to make money. Money is a resource which enables me to do things, and the lack of money is seriously holding me back. For example, I want to create a 3D VR travel application. I've created a working MVP, so now all I have to do is go out and shoot some footage with a camera. I borrowed a 360 camera, but it sucked so bad that all the footage I shot was unusable. I've been looking hungrily at the Insta360 Pro camera. It's got everything I want and need to make my app. 8K 360 video in stereo. Automatic stitching. Image stabilization. Good battery life. etc. But, it costs $3,500 which I don't have. I asked my local community if anyone had one I could borrow one, but no replies. So, this project is on hold until I can get enough funds to purchase equipment. *Sigh* My girlfriend has been getting on my case about not making enough money as well. It's really hard on her because I don't contribute enough financially. All of my money making schemes tend to be long term (6+ months out). And when I get clients, I tend to vastly undercharge for my services. For example, the leap motion app I just made for Dell, I charged at an hourly rate of $75/hour and grossed about $6,500. I should have at least added another zero to that. My girlfriend tells me I am a stubborn fool who won't listen, and I'll always be poor and broke unless I raise my rates. She's entirely right. She said I should 100% stop doing engineering work for a month and instead focus on sales and marketing. Full time sales and marketing. That's scary, I absolutely hate phone calls, and doing cold calls has zero appeal to me. But, my girlfriend is right. Nobody knows who I am or what I do, so how are they supposed to find me and hire me? Nothing is going to fall into my lap just by existing. I need to build a pretty website which highlights my work and abilities. Then I need to promote that website. So, for the next month, I need to focus on self promotion, sales and marketing. It's SO tempting to do engineering stuff though. Yesterday I spent a few hours researching machine learning using reinforcement learning. It's really enticing, but it would take a LOT of engineering talent and time to pull off. And I want to try, and I could probably do cool stuff, but it won't help pay for tomorrows bills. So I kind of need to shelve that desire as well. Harsh.
  14. slayemin

    Communism 2.0

    In an ideal system, the "who" part in "who gets to assign point values" would be irrelevant. It would be more important to look at what kinds of work and output get valued at higher tiers, and that would be based on a function of skill difficulty and general impact on the well being of mankind. We already have a pretty good idea on what is valuable to society and what is not, so we could use that existing valuation system to validate the correctness of the valuation model & algorithms. People are corruptible, so there must be built in safeguards to protect the system from manipulation by corrupt administrators. I think there should also be a philosophical principle of, "Those who assign entitlements are not automatically entitled as well." In the most ideal scenario, the additional privileges and social perks are meant to incentivize people to do more than nothing, where doing nothing is a perfectly acceptable option in a post-labor society. It would also be ideal that the standard of living is generally high across all tiers of social hierarchy and continuously improving. Some of these perks could be along the lines of "Working class people get to sit in first class and get priority seating and VIP treatment as a thanks for their continued service. Everyone else sits in economy class." "Which god and religion will be the one true religion?" Since when has any economic system had any jurisdiction over theology? "Which scientific observations and theories will be allowed to be published?" Leave that to the scientific community to decide based on their own set of criteria. "Are points assigned or removed for expressing ideas counter to those deemed correct by the top-tier points allocators?" This would be a form of totalitarianism and I would be strongly against such an idea. Criticism of a government or organization should be viewed as feedback and used as a way to improve its services and conduct. When you silence your critics through force or coercion, you make room for the rot of corruption to fester. "What if I publish ideas counter to the system advocating for a currency-based free-market system of allocating scarce resources?" I would hope that the ideas are considered objectively and based upon the merit of those ideas. And if they're better than the prevailing institutions, the institutions should adopt them. This would be the pragmatic ideal. "What if I make games that depict non-SWMoPs in a European historic context -- do I gain or lose points?" I don't quite understand the question. But I think you're asking, "What if I create art which is counter-cultural? How is that valued?". That touches on something which I've been trying to figure out: How do you value art and artists? Great works of art speak to our hearts/spirits, but what is considered "great" is a highly subjective matter, so it's hard to put a valuation on it. I like some music a lot, and other music not at all. It's entirely possible that someone else has the complete opposite tastes in music from me, but a difference in artistic taste does not lessen our personal enjoyment of it. The fact that we enjoy experiencing the art is the intrinsic value of the art. But, how do we assign value to a masterpiece like the Mona Lisa vs. a low effort sidewalk chalk piece? My intuition is to say, "artists of every calibre and measure of talent are in the same tier" And if I were to assign it on a scale of 1-10, they'd be in the 6-7 range, with 10 being the highest. The other hard question is, "When does someone officially become an artist?". This is less of an economic system problem and more of a philosophical question, and it comes down to a demarcation problem (and would probably be outside the scope of this topic). The ideal would be to make the quality of life so good on the lowest tiers that the disparity between tier 1 and 6-7 is mostly just minor perks, petty accolades, and social standing rather than great suffering vs. comfort. I tend to think that, when all basic needs for survival are taken care of, people tend to pour their energies into pursuing their passions for the love of the craft rather than as a necessity to make ends meet. You can look at existing rich people who have everything taken care of, and look at how they choose to spend their time. They might paint. They might restore cars. They might do wood working. They might just lay around and read books. Whatever they do, it's voluntary and joyful work. I can say from personal experience, that whether I'm filthy rich or dirt poor, paid or unpaid, I would continue to focus my own energies on making games. I see it as a form of artistic expression and it tickles my engineering brain just right. It would be nice if I lived in an economic system which allowed me to do my work and share it with the world without needing to worry about making money. If only ten people played my game or ten million people played my game, it would make little difference "financially", but on a job satisfaction level, I would be pleased to impact more people than fewer people.
  15. slayemin

    Introduction to Octrees

    "Containment" means that the object is entirely enclosed within the box and that the edges of the box do not overlap with the object. "Intersection" means that there is an overlap between the box and the object. As long as your object continues to be contained within each subsequent subdivision, you can continue pushing it down to lower levels of the tree.
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!