Jump to content
  • Advertisement

slayemin

Member
  • Content Count

    1808
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by slayemin

  1. slayemin

    I'm quite happy

    Things have been going really great! * My moms chemo therapy is working. It's not a cure by any means, but it will buy her more lifetime. There's a very small chance that she might eventually get healthy enough to fly back to America. * One of the VR projects I worked on in Nov 2018 was recently nominated for an Emmy award. I'm sure the competition will be stiff, so I'm not really expecting it to win. I worked on the "putting it together" part, where I did the programming and tech platforms. A small, but important part of the production. To even have an app I worked on get nominated is quite a confidence booster though. * My day job at facebook reality labs has been going fantastic. I really enjoy the work I do and the work culture and atmosphere is fantastic. My team is great, there are no insane schedules and no mandatory overtime. We have a cafeteria which makes 3 meals a day, loads of delicious food and snacks, and the vending machines give you any computer hardware you need (mice, keyboards, cables, etc). IT helpdesk is super helpful too. This place is probably going to be the standard I use to measure working for other companies. I can't talk about what I work on though. Maybe that'll come out years down the road when & if its all public. That's one thing I miss about doing indie work: I could talk about anything I wanted to any degree of detail. * Weather has been nice, can't complain. My car works again. My commute is a glorious 4 miles away (10 minute drive). Unfortunately, I've been slacking a bit on my other side projects due to lack of time and energy. That's what day jobs do to ya
  2. slayemin

    Creating a dev log in mid development?

    I think a better question to ask is "why should I start a dev log?" Are you trying to use it to market your game? Does this mean you're going to sell it commercially? Are you trying to share developer insights into game production? Is it just a "requirement" you think you need to satisfy to launch your game? (it isn't) I've done dev logs about my own game development and one thing I've learned is that it takes a lot of time to write them up. Even on a monthly basis, it can take a whole afternoon -- which could be spent making the game instead. Choose your dev log frequency and length carefully
  3. Games are art. Art is created by artists. Artists are people. People have lives outside of their work. Our personal lives can be messy. Parts of our lives are reflected in our art. I've been thinking a lot about life lately. My personal life has been going through some pretty radical changes in the last few months. When it comes to tech, I often say, "The only constant is change" followed by "if you aren't changing, you're not growing, and if you're not growing, you're dying. Complacency kills!". I think this also applies to life in general. When life changes, it has second order impacts on other things. 1) I started a contract position doing research and development in VR for a very large and well known social media company. It is now my 'day job' and my indie game projects are a side job I do when I have time. I am realizing that the day job takes up a LOT of my time when I factor in any overtime work and the time to commute between my work and home. The steady paycheck is nice though and it helps me worry less about money in the short term. 2) I ended my long term relationship with my girlfriend recently. It's sad and it sort of turns my world upside down, but it was time: We're quite different people and our lives were moving in very different directions. I won't get into it out of respect for her privacy. 3) I moved closer to work in order to reduce my commute to 15 minutes. It took me 3 hours to pack everything I owned and 30 minutes to unpack it all. It's a bit disappointing that my net worth doesn't amount to much, but the materialism of possessions has never held a lot of importance to me. 4) I found out last week that my mom has been diagnosed with terminal cancer and doesn't have much time left to live, so I took emergency leave from work and flew out to Europe to say goodbye. I'll never see her again. How do you carry on when the person who has looked over you, cared about you, worried about you, protected you, given you life, dies and is gone forever? It's heart breaking, but death in the family is inevitable and unavoidable. I suppose its better for children to bury their parents than for parents to bury their children, and I can be thankful to have had the opportunity to say goodbye. 5) I've started writing a fiction book about a princess and a dragon. With many of these life changes, distractions and tragedies, I am wondering if I still work in game development? It's certainly not a daily activity as it has been for the last few years. Do I care? The scary answer is that I'm not sure. I can totally understand why other game developers would say that they're "taking a break for personal reasons". My day job is tangentially related to the game industry and I'm pretty happy with it. I've also been hearing a lot about how abusive and exploitative game studios are to their employees and I'm not really sure I'd want to work directly for most studios. My sister and 14 other people were recently laid off from a mid sized game company in the VR industry -- a company I also interviewed at in September. I dodged a bullet there. The game industry as a whole makes me a bit wary. The hours are long, projects frequently are mismanaged and go into crunch time, the pay is low, some players are toxic, send death threats and abuse to devs, released game success seems to be based on luck which creates a lot of uncertainty... why would you want to be on the receiving end for any of this? Is the 'entertainment' element really so compelling that it would override all the other industry problems? Anyways, I'm going to be writing a novel and working on my games on the side. They're my creative outlet. I don't know what that makes me but the definition probably doesn't really matter.
  4. slayemin

    The only constant in life is change.

    Oh, there's certainly good game studios to work at as well. I wish they'd make the news a bit more frequently to counter-balance the bad news about studios with awful working conditions. Sure, there's lots of industries and companies with bad working conditions, but I don't think that means anyone should have to tolerate sweat shops either. Most of the harsh deadlines in the game industry are driven by bad project management decisions and if we consider game development to be software development, this trend seems to be concentrated to the game industry while other software companies seem to find ways to pay well, ship on time and have sane work/life balances. The long term trend I'm seeing is a brain drain out of game development and moving more towards professional software development, where most game devs don't stay in the industry longer than 10 years -- if this is the general trend, it's bad news for the game dev industry because the senior devs leave, take their experience with them, don't mentor juniors, don't offer teams sage advice and help avoid the crunch which burns out team members.
  5. slayemin

    The only constant in life is change.

    That's an interesting argument, and it would make sense if you only programmed games -- but if you program other types of applications far outside of entertainment, I think it would be harder to make the same argument. For example, someone had to write the thread scheduler for modern operating systems and its purpose is purely to context switch between threads and be invisible to the end user.
  6. slayemin

    Celebrating 20 Years of GameDev.net

    Well, I can say this site and the people who've come here have had a positive impact on my life. Congrats to 20 years, let's hope for another 20.
  7. slayemin

    What is the developer level for this game?

    Also, keep in mind that you're looking at a finished product. What you don't see is all of the scaffolding that went into getting to the finished product. All of that requires time and experimentation, but like the rough draft of a novel, nobody ever sees it. What may look like a 3 week project on the surface, could have taken 9 weeks to produce, etc.
  8. slayemin

    Game engines

    Ram is cheap... buy more!
  9. I'm a UE4 fan myself. UE4 comes with Blueprints, which is a visual node based scripting language designed for non-programmers. You can build full fledged, high performance, AAA quality games using only the blueprint system. Not a single line of C++ needs to be written if you don't want to (I have some talented friends who work almost exclusively in blueprints). It's easy enough that non-programmers can use it to contribute to the game logic, so one person doesn't necessarily have to make everything happen (which is good! spread the workload, grow team talents, and lower risk!)
  10. slayemin

    Best places to "market" my VR game

    Free marketing will eventually hit a limit (exhausting your friends lists, and network limitations), so when you have saturated your free marketing supply (twitter, facebook, reddit, forums, etc), you'll get diminishing returns on effort spent. I highly recommend getting a google analytics backend tied to your landing pages so that you can measure how many people are coming to your pages and where they're coming from. You will want to get a rough baseline on your traffic and then when you create a marketing effort, you can see whether that had an effect or not in moving the needle. Think of it much like performance optimization in gamedev where you profile your performance before modifying code. If you don't measure it, you can't improve it. And if you can't tell what works and doesn't work, you're just throwing oatmeal against the wall while blindfolded and hoping something sticks. You may be able to see some marketing actions are more effective than others, and some marketing efforts are going to vary during time of day or time of year. If you've exhausted all the free methods for marketing and you still need more people, you'll probably want to consider paid advertising (which is surprisingly effective). But if you're going to pay for advertising, you pretty much are a commercial product, even if you give it away for free. Also, it should go without saying, but it bears mentioning: The best advertisement you can do for your game is making it a high quality game -- something friends will want to talk about and show to their other friends. If people find something in your game worth talking about to other people, you will get lots of free advertising with no effort on your part. If you are the creator of the game, you are in a great position where you can design the game to have cool / memorable moments other people want to share. If you make it easy for them to share, even better --its especially challenging in VR games, but check out beat saber as a shining example of this. It's even been featured on the late night show with Jimmy Fallon 😮 How many other games have been compelling enough that guests will play it on live TV for their audiences?
  11. slayemin

    Best places to "market" my VR game

    If you aren't ever going to go "commercial", you can spend $100 and post it on steam for free. You can then give away steam keys to people on reddit (r/oculus and r/vive) and just by being on steam, you'll get people who randomly find your game and want to play it. You'll still want to create some sort of a gameplay trailer so people can see what the game is about before they decide to download it -- technically, they 'buy' they game even if they don't give you money, so they gotta like what you're selling even if its free.
  12. Well, now it's 2019. I've got an NVidia 2080 RTX running with Unreal Engine 4 and I can ray trace 1920x1080 scenes in real time at 60 fps. It's been something graphics programmers have dreamed of for 30+ years. For a long time, I thought it would never happen, but here we are. This afternoon I was ray tracing a scene with two metallic spheres and counting the number of bounces in their reflections and modifying it in real time. Wow! A scene like that would have taken a few minutes to render on the CPU 8 years ago, even with multi-threading. The tech is only 3-4 months old though, so it's easy to run into areas which aren't fully supported yet. It's also easy to crash your video card on accident. But, I think in the next few quarters, we're going to start seeing a lot of these rough edges getting smoothed out. Seeing RTRT in upcoming games may take a lot longer though: release cycles are long and publishers & devs are going to target a market that doesn't have RTRT capable GPU's quite yet. Give it a few years though, and I think ray traced games will become a lot more common.
  13. slayemin

    Video about my Game Engine + Game

    Very cool, keep up the good work! Are you planning to release this commercially?
  14. This was an organization that had been around for several years. The funny/sad thing is that about two months after the event, they shut their doors and went out of business completely. They seemed to be on their last breath when I went to pitch, their office was in a warehouse in the industrial district, and staff were getting laid off. They were probably hoping for some magical unicorn event to resurrect them with a big cash infusion, but it never happened and I can only speculate as to why. However, in the end, I guess it was a good lesson: Never pay someone "for the privilege to pitch to investors" -- take a cocky attitude if you have to, and say "investors should be paying me $500 to hear about an amazing opportunity I have to offer". Sure, they'll probably throw you out, but at that point, who cares?
  15. As usual, I'm pretty candid in the hopes that other people will benefit from my experiences. Thank you to Gamedev.net for helping setup this article, for Indieranger (Travis & Steve) for taking the time to both interview me and write the article, and a huge thanks to every person who has contributed to the development of Spellbound so far (Dan, Stuart, Franz, Jessi, Mike). The journey is far from over, this game is a work in progress with progress being sporadic, and time and money permitting. If someday I found the right publisher/partner or got funding, I'd love to dedicate full time work to finishing this game and telling its full story. We'll get there eventually
  16. slayemin

    Failing Calculus and looking at other options.

    I have not been brilliant at mathematics. I've been close to where you were, so our stories aren't too different. At the end of my story, I got my CS degree. If I can do it, you can too. My math story starts off a bit depressing. I went all the way to pre-calc in high school, but did miserably and didn't pay attention and put in the diligent effort. I retained very little. I took a placement test and got placed quite far behind, but I felt the placement test was in error. No big deal, if the class material is easy, I can breeze right through it and fill in any gaps. I didn't have to work very hard to pass with A's. That became a bad habit. I got to pre-calculus and in order to do well, I actually had to start studying. I didn't. I passed with a C, but it's still passing. I moved onto Precalc 2. This would turn out to be a stumbling block for me. I had learned that math builds upon the previous material, sort of like a pyramid, so if your foundation is weak and you build on top of that, you are going to be miserable. With Precalc 2, I got another C. Not a great start for my adventures in calculus, so I decided I would retake it. I did, and I got another C. Then, life kind of got in the way. I had joined the US military during the summer and 9/11 happened, and I ended up bouncing between war zones and class rooms, and being away from school for 10-12 months makes you forget things. I ended up taking Pre-calc 2 a third time as a refresher course, got around a B. I think, all in all, I ended up taking Precalc2 about 4 times. What's interesting is that, that experience made me really familiar with the material. I still can't for the life of me memorize the half angle formula or double angle formula, but I am very comfortable with sine, cosine, tangent, cosecant, unit circles, etc. This is where I learned to stop breezing by in my classes and how to actually study and learn, and how to teach myself. It was the most critical thing I learned. I took Calc 1, got a C, didn't like it, went to war, retook the class, still got a C, and went onto pre-calc 2. Precalc 2 was actually a little easier than Calc 1, but I still got a C the first time around. I decided to take it a second time to try to improve my grade for my transcripts. I #*@!ed up. I started to get lazy. Our teacher required ALL homework to be turned in before mid terms and finals. If you didn't do your homework, you automatically failed the test. I started procrastinating on the homework. The day before the final, I started doing all of my Calc 2 homework since the mid term (around 2pm). I was "getting it" and blazing through the math as fast as I could write. Pages, upon pages, of calculus. I was writing homework until about 4am. Math class started at 8am and I had to be there in time for the final, or I would fail. I was exhausted. I decided to take a short nap, I set my alarm, and went to bed. Then, I woke up. I felt *too* rested. I didn't wake up to an alarm. Something was *very* wrong. I look at the clock. It's exactly 8:30am. If I rushed out the door, I'd get into the classroom by 9am and be an hour late. So, that's exactly what I did. I show up an hour late to take a two hour test. I felt like if I could do math as fast as I was doing it the previous night, I could still blaze through it, and maybe, if I'm lucky, get a 70%. About 30 minutes in, I realized I wasn't going to finish the test in time. My strategy changed: Rather than doing all the problems, I would only do the problems I could do the fastest. I might know how to do a problem, but if it took too long to write out the solution, I would skip it in favor of low hanging fruits. If I grab all the low hanging fruits and still have time left over, I can revisit the harder and longer problems. I turned in my test, with my homework, and... got a 55%. Ouch. I barely got a C in that class. The thing is, I learned how to learn. I learned how to crunch. I felt, that with enough perseverance and effort, I could figure anything out. I would go onto university, and while the CS courses were quite hard and challenging, I could pass them. My secret weapon was my study habits. While others might be smarter, I even the playing field by studying harder. There were other late nights in university where I was working until 4am, but I was used to that now. I did find a class that was harder than Calculus 2. It was "Elementary Logic", which was a 400 level course offered by my philosophy program. I loved it. The class was taught by a really old man, an obviously tenured professor, and he chose to start the class at 8am and teach in a room with the heat turned all the way up. It would be really easy to fall asleep. On the first day of class, I arrived about 10 minutes late. I walk in, and the class room is PACKED. The 30 desks were filled and about 10 more students were standing in the back taking notes. There wasn't even standing room! I ended up sitting in the window sill (they were recessed). The course material was... really hard. The textbook was really terse. You'd have to re-read the same page about 5 times just to grasp what it was saying, and another 5 times to understand it. Most logic classes are just an introduction to formal logic, this was using logic to prove that the logical proofs in formal logic were sound. We explored set theory, uncountable sets, small infinities and large infinities, russels paradox, godel, peano arithmetic, and meta logic. I remember getting stumped on the proof for the "existential specification". It was so convoluted and circular, that no matter how many times I tried to make sense of it, no matter how much I studied it, it would not click. This... was my intellectual limit it seemed. No amount of perseverance would make sense of it, and I hate rote memorization. By the middle portion of class, about 80% of the students had dropped. We were down to a small group of 12 students! Quite a contrast to the beginning of the course. My point is, Calculus 1 & 2 may not be the hardest classes you end up taking. But, what it takes you to pass Calc 1 & 2 is going to be the same thing that carries you through the other, hard classes. I would also say, schooling in general is actually the easy part of ones career. All of the knowledge is given to you, someone else has gone before you and found all the answers, and you are being given them by an expert. If you feel bad about the difficulty of Calculus, don't. It took mankind thousands of years to get to it, and then it was developed and refined over centuries. You are getting centuries worth of mathematical knowledge crammed into your head in a matter of months. Cut yourself some slack, but don't give up. After you graduate and enter into the professional world, it's quite different. Technology moves fast. It's constantly changing. You may venture into areas where nobody has ever been before, doing things that have never been done. There may be no existing body of knowledge to fall back on, no experts to guide you, not even google search results to give you the answers you seek -- you may be the google results others find later. The murkiness and uncertainty may end up making you wish to go back to the black and white days of calculus classes... but really, if we're going to be honest, the same underlying universal principle is at work here: learn how to teach yourself and how to work hard. If you can master that, nothing set before you is insurmountable -- except maybe a proof of the existential specification using meta logic.
  17. slayemin

    Ace Pilot Game

    So, to get started, the beginning of this project is a funny story: During Christmas, my brother bought me a hand full of games that he saw on my steam wishlist. Just for a joke, he bought me a game called "Hentai Girl Linda" for $0.99. As you can probably guess, it's anime porn. I played it for about 15 minutes, trying to understand the appeal of it. It's a stupid "game", if you could even call it that. It is essentially a digital puzzle which you assemble by moving image slices together to form a complete image, and low and behold, it's a half naked anime girl. And then you can click a button to make her fully naked. I think looked at the reviews, because usually that's a good indicator of sales numbers. My rule of thumb is to take the reviews, assume only 10% of customers will write a review, and then multiply the review count by 10x to get a rough estimate on sales numbers. This dumb game had 1,125 reviews, and if it was selling for $1, that means the developer made around 11,250 sales, or $11,250 (before steams 30% cut). Wow, that's nothing to scoff at... So, I forgot about the game and a few weeks later, my friend Stuart (a game artist) is browsing steam and he gets a game recommendation... for the hentai porn game because his friend (me) played it. We both laughed about it and talked about how easy it would be to make a dumb game like this in less than two weeks and cash out $10k. The idea of making $10k in two weeks sounded kind of appealing, but I didn't really want to make an anime porn game. I decided that I could afford a distraction for two weeks though, if it meant that I could make some extra money on the side. Who can't afford to give up two weeks to try something out, right? So I decided to come up with a challenge: Can I make a polished indie game in two weeks and launch it on steam? (Spoiler: The answer is "NO"). But this launched my indie game dev challenge. I have realized that one of the biggest challenges for all indies these days is marketing and visibility. You can launch a great game, but if nobody knows about it, it might as well not exist. And if you're an unknown indie trying to make a game people might enjoy, then huddling in a dark corner in obscurity is 100% the wrong approach. So, on day one, I began my game by thinking about marketing. How do I market my game? What will sell? What are people interested in? What can I build which people will buy? What promotional material will I use to get eyeballs? Obviously, the hentai porn game has a very clear hook: Sex sells. This really shouldn't be a surprise for me, but it really is. But, if sex appeal is just the gimmick to get eyeballs, what is the substance that keeps people as fans? The $.99 hentai game kept me entertained for 15 minutes and I never played it again, so in my book, that is a failure. No matter what new updates or features the developer implements, I'm unlikely to ever launch the game again to see them. The key conclusion to make is that a game will need a little more substance to get people to be repeat players. And if people are repeat players, they must enjoy the game, and if they enjoy the game, they'll be happy customers who get value out of your product, so if you release additional products with the same or better value, you'll get more customers and a community of loyal followers. The more loyal customers you have, the less of a steep climb you'll need to make for future marketing campaigns for future game releases. That's my reasoning, anyways. Cultivate a reputation for satisfied customers. Anyways, I told Stuart that I was going to be serious about this. No half-assed efforts from me. Go all the way or don't do it at all. I came up with a few game ideas that I felt I could pull off in two weeks and could market effectively. I worked backwards from the sales pitch to design my product. I think usually, indies do it the other way around: They build whatever they want to make, and only after or near launch, do they start to think about marketing and how to sell the game (if at all!). The risk is that the indie dev will build something that appeals to them personally, but their tastes are so eccentric that whatever they made appeals only to eccentric indie game developers and not to a broad market -- and the sales probably reflect that? Build what sells. Your own personal tastes are not a barometer for market desire (though your intuition can be a source of good hypotheses). I settled on an idea based off of a half-hearted attempt I made in XNA about a decade ago using sprites drawn in MS Paint. You flew an airplane and shot bullets and dropped bombs. I remember getting stuck on the physics of flight, digging deep into research on wing shapes, aerodynamics, thrust, lift, drag, gravity, angles of attack, etc. I got lost in the complexity and that caused the project to stall. But I didn't stick with it, I didn't have the drive to see it through to the end. I didn't have the maturity or stamina. Now, I'm different. I'm a professional (haha, is that a delusion?). The game concept was fun, so if I take another stab at it, maybe I can make it work this time. It was also inspired in part by a really old game called "Sopwith", so at least someone proved that the concept works. I can dress it up a bit and add a lot of polish. That should be pretty easy to do and still be marketable, right? That should be an easy two week project... right?? Well, I already knew that us programmers are terrible at assessing scope of work and from past experience, I know I'm terrible at it too. Even in professional work, my ball park estimates can be quite off the mark. But, it's still good to try to work with something rather than nothing, because it lets you look at a feature list and think about how long each item would take and then cut features until you hit your desired schedule (or vice versa: increase your schedule to hit your features, but never work harder and longer to add more features under the same schedule). I figured that this project would be a good litmus test for whether I was actually any good as a developer and entrepreneur. Why don't I make all the mistakes and #*@! ups on a super small project with lower risk, learn a bunch of hard lessons, and then carry those lessons to a bigger project where I have less tolerance for failure? What am I doing wrong? What are the flaws in my approaches to development? flaws to approaches in business? flaws to my approaches in marketing and sales? what can I learn more about in terms of leadership and people management? What are my "fail fast" lessons to learn? Anyways, as a part of my developer challenge, recognizing that marketing and visibility is going to be my biggest challenge, I decided to document my daily game development progress with youtube videos. It'll keep me honest and accountable to making meaningful daily progress, while also serving as a speck of visibility on the project and providing illumination into the game development production cycle (from an indie perspective, AAA is a very different beast). During the project life cycle, I have added two team members: John, a junior UX designer is working part time on level design and user experience, and Stuart is going to help with art (though I will have to produce programmer art as well). I'm already learning more about managing people and coordinating efforts, which is always new territory for traditionally solo developers. I'm also slowly getting better at talking in video, though my voice is still too soft spoken. Here are 16 days of video so far (not counting weekends and snow days): DAY 1: Day 2: Day 3: (skipped) Day 4: Day 5: Day 6-10: Day 11: Day 12: Day 13: Day 14 & 15: Day 16: (Today)
  18. I'll be a little bit of a contrarian here, if you don't mind. First, I think it's great that you and your investor are trying to think of ways to make the world a better place by encouraging humanitarianism in others. That's a really tough challenge, as others have pointed out, but I think it's even harder than anyone is giving it credit, and that's where I start to get worried. I think it comes down to measures of effectiveness. Let's pretend that you land on an idea, build a game around it, launch it, and deploy it into the wild. One of the objectives of the game is to make the world a better place. How do you know whether that effort was successful or not? How would you measure that to see if you had an effect or not? I think when you launch your game into the wild, it's also going to be based on a lot of assumptions, many of which may turn out to be wrong, so I would expect to see the launch act as just the first iteration at the problem rather than the final solution to it, which means there will be lots of version updates. And, the version updates will need to depend on knowing whether one version was effective or not in changing the world in some effective and meaningful way -- otherwise, you're just shooting in the dark, hoping for the best. Forget about games for a moment and take a step back and think about "making the world a better place" as an agent of change. Pretend that your investor has given you a hefty sum of money and said, "make the world better somehow". What could you do to get the most bang for your buck? How could you make each dollar have the most possible impact? I think, to clarify, when we say "saving the world", we're talking less about the dirt, rocks, water and air which composes the world, and more about saving the people and other inhabitants of the world (life). In the most broad sense of "saving the world", what we're really trying to do is make living more pleasant for the life currently on earth, right? That could be something as bold as creating a habitat refuge for endangered species facing extinction, to something as simple as encouraging people to smile and say nice things to strangers. There's already a huge "game" like this happening in china as well, where everyone in the country is a player in the game whether they want to be or not. They have massive surveillance, cameras doing facial recognition, and have begun giving people and their life profiles "digital points" for different social behaviors. This is treated like a credit score on steroids, but it's for social credit. If you have low points, you get low priority treatment, such as being put on the back of the train, denied loans, job interviews cancelled, hassled by law enforcement, etc. Maybe if a camera catches you littering, you'll lose points. If you owe people money, you lose points. If you're late to work, you lose points, etc. It could become the perfect case of a road to hell paved with good intentions, but ends up backfiring because rather than making living more pleasant for everyone, they end up making it worse? I would worry about less than benevolent uses. Anyways, you're probably looking for game design advice, so here's my advice: 1) Aim for really, really low goals that are achievable. Changing minds or attitudes for the better might be enough. 2) Avoid complexity like the plague 3) Be scientific about how you approach your assumptions (hypothesis -> collect data -> test -> review -> repeat)
  19. slayemin

    A wild thought appeared

    This morning I went for a long drive. I started thinking about image recognition. The question is, "How can you train a computer to recognize a common image pattern, even if many parts of the image change?" In other words, can we teach a computer to recognize and identify memes? The thing with meme images is that they usually reuse the same image and people post different text overlays on it. Here's an example: Here's another example: So, if you took both of these images and just hashed them with MD5 and stored the result in a database somewhere, and then only looked at the hash value, you would have no way of knowing that these are practically the same image but with minor variations. How could you devise a better way to know what you're looking at and whether its similar to other things? And why would you want to? This is probably a solved problem and I'm probably reinventing the wheel -- and much more inefficiently, as first attempts tend to go. I imagine that many much smarter engineers working at facebook and google have already solved this problem and written extensive white papers on the subject, of which I am ignorant. But, I think the journey towards the discovery of a solution is half the fun and also a good exercise. It's like trying to solve a math problem in a textbook before checking the answer in the back of the book, right? The point isn't to get the answer, but to develop the method... So, onwards to what I came up with! My initial thought was that you'd just feed an image into a machine learning neural network. If the network is big enough and the magic black box is complicated enough, and we give it enough repetitions in supervised learning, maybe it can learn to recognize images and similarities between images? But that sounds really complicated and I don't like things that "just work" and by unexplainable "magic". It's great when it works, but what do you do when it doesn't work and you don't know why? What hope would you ever have of diagnosing the problem and fixing it? Maybe neural networks are enough and I'm unnecessarily overthinking things, but that's the fun of it. What if... instead of taking a hash value of the complete image, we created several hash values of subdivisions of the image? We could create a quad tree out of an image, and then generate a hash value for each quadrant, and then keep repeating the process until we get to some minimum sized subdivision. Then, we can store all of these hash values in a database as an index to the image data. To test if an image is similar to another, we just look at the list of subdivided hash values and see if we find any matches. The more matches you find, the more statistically likely you are to have a similar image match. Of course, this all assumes that the images are going to be exactly the same (at the binary level) with the exception of text. If even one bit is off, then the generated hash value will be completely different. This could be particularly problematic with lossy image formats such as JPEG, so doing hashes of image quadrants may not necessarily be the best approach. But, what if we looped back to our machine learning idea and had a neural network be specialized at recognizing subsections of an image and recognizing it, despite any lossy or incomplete data? The tolerance for lossiness would make it easier to correctly identify an image subquadrant and match it to a set of high and low resolution image quadrants. But now, this is where it gets interesting. What if... when someone uploads an image online, rather than storing the whole image, we subdivide the image into quadrants and compare each image quadrant against a set of existing image quadrants? The only data we would upload would be any image quadrants which had no matches in the database. The rest of the image data would just be stored as references to the existing image quadrants. Theoretically, you could have some pretty intense data compression. That 1024x1024 32 bit image (~4.1Mb), could be 90% represented by pre-existing hash values representing image blocks in the database, and you'd be looking at a massive reduction in disk space usage. Rather than storing the full image itself, you'd be storing the deltas on a quadrant by quadrant basis, and as people ask for any image, it gets reconstructed on the fly based on the set of hash values which describe the image. And, if you have this way of laying out your data, you can create a heat map of which data quadrants are more popular than others, and then make those data quadrants far more "hot" and accessible. In other words, if a meme or video goes viral and needs to serve out a billion views, you would want a distributed file system which makes thousands of copies of that data available on hundreds of mirrors, and then let a network load balancer find the fastest data block to send to a user. The more frequently a block of data is requested, the more distributed and readily accessible it gets (with an obvious time decay of course, to handle dead memes). And in the best case scenario, if someone uploads an exact copy of an image which already has a hash value match to something else someone uploaded, we just create a duplicate reference to that data instead of a duplication of the data itself. Then, the question becomes: How and when do we delete data? If there's a dead meme, that's one thing. But what if someone uploads naked pictures of me to the internet and I want them deleted (just to personalize the stakes)? Both are use cases that need to be handled elegantly by the underlying design. In the case of dead memes, we would enforce a gradual decay timer based on frequency of access to each data block. If a block of data hasn't had a read request for months and we have 4 copies, maybe we can automatically delete three of those copies to free up space without completely deleting the data? If a user uploads an image, they don't "own" the image, but rather they're given a hash value which represents the composition of that image, which may have data blocks which are shared by other users who uploaded similar images. A "delete" action by this user would only delete their hash link rather than the underlying image itself. Maybe we also maintain a reference counter, such that when it reaches zero, it gets marked for garbage collection in a month or so? In the case of someone uploading naked pictures of me, where removing the image is more important than just deleting references to it, there would need to be some sort of purge command which not only deletes all references to all data blocks, but also deletes the data blocks themselves, so any future read accesses will fail. This would be a dangerous section of code and would need to be done very carefully, with security and abuse in mind. But, that raises another question: who gets to decide who gets 'delete' access and who gets 'purge' access? Do you own every quadrant of an image you upload, even if its shared among other related images? Let's say a vicious person took a naked picture of me and uploaded it to this cloud, and then I go through the process and get this image purged. What's going to stop this vicious person from uploading the image again, and causing me new headache and harm? Ideally, we'd like to block the vicious person from being able to upload the image ever again. But, in order to do that, we'd have to know that the data someone is trying to upload has been deemed "forbidden" by the system before we can block it. And how are we to know a block of data is forbidden without comparing it against an existing dataset? To be much more specific towards a real world problem, let's pretend that someone uploads child porn to our image cloud. They use the network to distribute the CP to other pedophiles as quickly as they can before it gets found and shut down. The server owners find and immediately purge the content as quickly as they can and want to block any further attempts to upload the same content/material, but they run a bit of a challenge: In order to know what content to block, you must store copies of the content to recognize it, and that ultimately would mean that you're still storing child porn on your servers, which would then get you into legal trouble. I think my quadrant based hash value idea would still be an elegant way to resolve this. Instead of storing the data itself, you store a list of banned hash values. If, during the image decomposition, one or more of the hashed image quadrants match a list of the banned image values, then you reject the complete image. If your hashing function has a one in a trillion collision rate, you don't really need to worry about false positives (provided your quadrants don't get down to the granular level of individual pixels). The other danger is that someone is a bit too liberal with the "purge & ban" button. Imagine that an artificial neural network isn't used just for pattern analysis to identify images and image quadrants, but also to identify paragraphs, sentences, and words in blogs, forums, and message boards. If someone posts copy/pasta which matches a forbidden topic, such as "Falun Gong" or the "Tianamen Square Massacre" in China, this sort of system could potentially be used by authoritarians to squash free speech and ideas which they don't like. That could ultimately be more dangerous & damaging in the long run for the flourishing of mankind, than a permissive policy? Imagine it gets really crazy, where the home owners association for your neighborhood has legal authority to silence anyone, and someone petty with a spiteful bone to pick decides to get happy with the "purge & ban" button with a neighbor they don't like? Obviously, the room for abuse on both the admin and user sides will need to be very carefully planned and designed. For that, I don't have easy technical solutions to people centered problems... Maybe in this case, a diversity of platforms and owners would be better than one large shared cloud? But maybe that's just trading one problem for another. Anyways, this is the kind of stuff my mind tends to wander towards when I'm stuck in traffic.
  20. slayemin

    A wild thought appeared

    Yeah, morality is really hard to nail down. The philosophical branch of moral theory tries to do it, but there's been a lot of historical disagreement on which moral theory is right or best. That being said, several moral theories have generally been discarded in favor of better ones due to underlying problems with the theory, with cultural relativism being one of them. I'm a bit of an anti-theorist and moral pluralist myself. I think you can find fundamental problems and dilemmas with any moral theory, but if you take a little bit from all of them, you can get a pretty good approximation. The issue with morality is that it's always super contextual and relies a lot on informed consent, doing no harm, and doing things which promote human flourishing. The problem with morality and machine learning is that the current state of "machine learning" is really just a fancy term for statistical approximation algorithms. There isn't anything intelligent going on behind the scenes, so if we try to project our moral frameworks onto a machine learning algorithm, it's about as silly as trying to get the quadratic equation to behave morally. At least, that's just with the current state of machine learning today. The underlying problem is that the current machine learning algorithms are not really models of intelligence applied to machines. A lot of ML researchers are starting to run into a wall where their algorithms have trouble understanding context to make accurate decisions. For example, facebook uses machine learning algorithms to sort through the content people post to look for content which violates their ToS, such as promoting violence, racism, nazi glorification, porn, etc. They get billions of posts a day, so if their machine learning algorithms have a 99% success rate on a billion items, that still leaves ten million items which passed through the filters unnoticed. The ones which pass almost always require understanding a nuanced context of seemingly innocuous content. Aside from the bias and racism with ML algorithms (which is just a case of garbage in, garbage out), is that eventually people and institutions are going to rely almost exclusively on algorithimic outputs to make decisions for them. I can walk into a bank and ask for a loan. The loan officer will pull up a form on a computer, ask me a few questions, enter the answers into the form, they'll submit it, and some algorithm somewhere will spit out a result on whether he should give me a loan or not. There's nothing I could say or do which would change the result, and even if I had great charisma, need or a compelling pitch, which appeals to the human behind the desk, it doesn't matter because he's handed his decision making authority over to an algorithm which does not weigh my other inputs as factors into its decision making process. This stuff can also be carried over to jail sentencing and terms, over to a war zone allowing machines to decide who lives and who dies, etc. We may be putting too much blind faith into our technology, not understanding that it's being developed by faulty humans. I was working on my own AI system a few months back which used a moral component as a factor in decision making. It was a relatively rudimentary implementation of goal oriented action planning combined with reinforcement learning, but I haven't had enough time recently to keep sinking effort into it. The approach I was using for measuring the moral value of a decision was based on the innate characteristics of a creature and their tolerance for moral violations. Zombies have no problem with cannibalism, so it has no effect on their decision making process. Humans deciding whether to eat a loaf of bread or not may be influenced by how hungry they are and whether that loaf belongs to them. The moral imperative initially blocks them from eating food that doesn't belong to them, but as you increase their hunger levels, the hunger motivation eventually overrides the moral imperative. The question is, is there an algorithmic way to assess the moral consequences of interactions based on the impact it has on other characters? A utilitarian / consequentialist approach may be the easiest way to implement this, but I'd like to avoid going through and manually specifying the moral weights for each action per creature type. It's hard to come up with something like this without a strong model for intelligence as an underlying foundation.
  21. slayemin

    Adobe Acquires Allegorithmic

    Yeah, that's partially what I'm worried about. Substance has been one of the few digital content creation tools which lets artists procedurally create any number of variations of a digital art asset. It's a major time saver and I also think its the future of asset creation. There needs to be a lot more procedural asset creation tools on the market. I think this has been sort of a relatively new market segment, so for one of the few companies in that market to get bought up by another company who was late to the show... it's concerning. I would have rather seen Adobe create a line up of competing products rather than buying out the competition. It's a major coup for Adobe, but pretty much bad for everyone else.
  22. slayemin

    A wild thought appeared

    I may be wrong here, but I think if you create a general consensus among companies on acceptable normative moral behavior, those companies who are out of alignment with the norm would face backlash and be pressured into falling in with the pack. I mean, who would want to say, "We make money because we allow child porn on our platform while nobody else does! We're not even ashamed, Yay, us! Yay money!" You can see some of this normative behavior already in action among most major platforms by looking at their terms of service and finding a lot of common themes on what is and is not allowed on their platforms. Many of those terms are not legally mandated, they're voluntary. I admit, it's a bit of a stretch to imagine that every company will be a good actor with good intentions. It's one of the problems with idealism. But, despite that, I think this appeal to morality and human flourishing may ultimately be more effective than the force of regional laws. It at least allows room for disagreements on what is moral and what constitutes enriching the human experience. To get philosophical for a moment, I don't buy into moral cultural relativism. I think there's an objective moral norm and it can be found by aggregating the consent and values of all cultures (which is why I think group diversity is valuable). Anything outside of the moral norm is increasingly morally questionable, especially if its far outside the norm. Someone can ask how moral progress is possible if there's an objective moral norm, and that's a pretty legit criticism. I don't have a good well thought out short answer for that and it'd be a bit off track
  23. slayemin

    A wild thought appeared

    Tough questions to answer. My guiding idea is that tech moves fast but policy and government should move very slowly. If tech is going to be implementing policy before any legal mandates are pushed on them, then that too must be implemented very slowly and very carefully, with full consideration for vectors of abuse. Ideally, legal mandate would be a last resort and not necessarily even effective in a globalized digital economy. The US could push a law into effect on content, and if a company doesn't want to follow that law? Just relocate your base of operations to an ISP in Sweden or Russia. A more effective strategy would be to make a moral appeal to the content platforms to opt in on banning certain types of content. If they share ideological values, then their consent would be easy to gain without legal force and it could be applied globally instead of regionally (maybe it's wishful thinking on my part, cynicism hasn't taken over completely yet). I think, at the end of the day, companies are run by people, who are human beings with normative moral values, and everyone generally desires to do what they think is the right thing. I also think that if & when a tech company creates policy which is enforced by algorithms, it must be done very slowly and carefully. There will be bugs, there will be false positives, there will be mistakes. You gotta create the risk assessment matrix and create a deployment plan and roll back plan accordingly, do a very small phased deployment, have human monitoring to verify accuracy and correctness, all before you open the floodgates on full deployment and integration. This is the only way you can really mitigate the risk of deleting a PB of data on an 80% confidence check. If someone encrypts data before storing it on a database, then an algorithm trying to cross link common data blocks becomes useless and you would not have much of a chance of censoring the data unless you knew with certainty (from external sources) that it was bad. Then you delete & ban, and the content creator would then only need to apply a new crypto key to the same data and upload it again. You'd just be forced into playing a game of whack-a-mole at that point.
  24. slayemin

    Adobe Acquires Allegorithmic

    Is anyone else worried about a potential monopoly on digital content creation by Adobe?
  25. slayemin

    A wild thought appeared

    Yeah, I think this problem is gradually changing though. The internet is moving into the era of platforms, and you only need to enforce the ban at the platform level. If we treat facebook as a platform, and facebook decides they want to ban a naked picture of me at my request, then they could prevent all facebook users from seeing my naked pictures or re-uploading them. It won't prevent people from keeping the saved images on their own computers. Facebook is one platform of many, so if we hit all of the major content platforms and request that they ban a naked picture of me, then it makes it much harder for people to continue circulating the image. We could even do it at the cloud level -- such as AWS and Azure -- so that even if some third party creates a site which stores data in the cloud, the cloud itself could enforce blocking policies. If a majority of the content on the internet is contained on a handful of platforms, then maybe it's good enough if those platforms follow take down notices on certain kinds of content (such as child porn). If the spread and proliferation is contained and very difficult, then maybe that's sufficient for minimizing damage.
  • Advertisement
×

Important Information

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

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!