• Breaking News

    Tuesday, February 20, 2018

    Flight Sim Company Embeds Malware to Steal Pirates' Passwords

    Flight Sim Company Embeds Malware to Steal Pirates' Passwords


    Flight Sim Company Embeds Malware to Steal Pirates' Passwords

    Posted: 20 Feb 2018 03:33 AM PST

    The Poor Man's Netcode

    Posted: 20 Feb 2018 06:14 AM PST

    The more you know about a given topic, the more you realize that no one knows anything.

    For some reason (why God, why?) my topic of choice is game development. Everyone in that field agrees: don't add networked multiplayer to an existing game, you drunken clown.

    Well, I did it anyway because I hate myself. Somehow it turned out great. None of us know anything.

    Better formatted version of this article available here

    Problem #1: assets

    My first question was: how do I tell a client to use such-and-such mesh to render an object? Serialize the whole mesh? Nah, they already have it on disk. Send its filename? Nah, that's inefficient and insecure. Okay, just a string identifier then?

    Fortunately, before I had time to implement any of my own terrible ideas, I watched a talk from Mike Acton where he mentions the danger of "lazy decision-making". One of his points was: strings let you lazily ignore decisions until runtime, when it's too late to fix.

    If I rename a texture, I don't want to get a bug report from a player with a screenshot like this:

    https://i.imgur.com/TppRYdOl.jpg

    I had never thought about how powerful and complex strings are. Half the field of computer science deals with strings and what they can do. They usually require a heap allocation, or something even more complex like ropes and interning. I usually don't bother to limit their length, so a single string expands the possibility space to infinity, destroying whatever limited ability I had to predict runtime behavior.

    And here I am using these complex beasts to identify objects. Heck, I've even used strings to access object properties. What madness!

    Long story short, I cultivated a firm conviction to avoid strings where possible. I wrote a pre-processor that outputs header files like this at build time:

    namespace Asset { namespace Mesh { const int count = 3; const AssetID player = 0; const AssetID enemy = 1; const AssetID projectile = 2; } } 

    So I can reference meshes like this:

    renderer->mesh = Asset::Mesh::player;

    If I rename a mesh, the compiler makes it my problem instead of some poor player's problem. That's good!

    The bad news is, I still have to interact with the file system, which requires the use of strings. The good news is the pre-processor can save the day.

    const char* Asset::Mesh::filenames[] = { "assets/player.msh", "assets/enemy.msh", "assets/projectile.msh", 0, }; 

    With all this in place, I can easily send assets across the network. They're just numbers! I can even verify them.

    if (mesh < 0 || mesh >= Asset::Mesh::count) net_error(); // just what are you trying to pull, buddy? 

    Problem #2: object references

    My next question was: how do I tell a client to please move/delete/frobnicate "that one object from before, you know the one". Once again, I was lucky enough to hear from smart people before I could shoot myself in the foot.

    From the start, I knew I needed a bunch of lists of different kinds of objects, like this:

    Array<Turret> Turret::list; Array<Projectile> Projectile::list; Array<Avatar> Avatar::list; 

    Let's say I want to reference the first object in the Avatar list, even without networking, just on our local machine. My first idea is to just use a pointer:

    Avatar* avatar; avatar = &Avatar::list[0]; 

    This introduces a ton of non-obvious problems. First, I'm compiling for a 64 bit architecture, which means that pointer takes up 8 whole bytes of memory, even though most of it is probably zeroes. And memory is the number one performance bottleneck in games.

    Second, if I add enough objects to the array, it will get reallocated to a different place in memory, and the pointer will point to garbage.

    Okay, fine. I'll use an ID instead.

    template<typename Type> struct Ref { short id; inline Type* ref() { return &Type::list[id]; } // overloaded "=" operator omitted }; Ref<Avatar> avatar = &Avatar::list[0]; avatar.ref()->frobnicate(); 

    Second problem: if I remove that Avatar from the list, some other Avatar will get moved into its place without me knowing. The program will continue, blissfully and silently screwing things up, until some player sends a bug report that the game is "acting weird". I much prefer the program to explode instantly so I at least get a crash dump with a line number.

    Okay, fine. Instead of actually removing the avatar, I'll put a revision number on it:

    struct Avatar { short revision; }; template<typename Type> struct Ref { short id; short revision; inline Type* ref() { Type* t = &Type::list[id]; return t->revision == revision ? t : nullptr; } }; 

    Instead of actually deleting the avatar, I'll mark it dead and increment the revision number. Now anything trying to access it will give a null pointer exception. And serializing a reference across the network is just a matter of sending two easily verifiable numbers.

    Problem #3: delta compression

    If I had to cut this article down to one line, it would just be a link to Glenn Fiedler's blog.

    Which by the way is here: gafferongames.com

    As I set out to implement my own version of Glenn's netcode, I read this article, which details one of the biggest challenges of multiplayer games. Namely, if you just blast the entire world state across the network 60 times a second, you could gobble up 17 mbps of bandwidth. Per client.

    Delta compression is one of the best ways to cut down bandwidth usage. If a client already knows where an object is, and it hasn't moved, then I don't need to send its position again.

    This can be tricky to get right.

    https://i.imgur.com/e31avw2.gif

    The first part is the trickiest: does the client really know where the object is? Just because I sent the position doesn't mean the client actually received it. The client might send an acknowledgement back that says "hey I received packet #218, but that was 0.5 seconds ago and I haven't gotten anything since."

    So to send a new packet to that client, I have to remember what the world looked like when I sent out packet #218, and delta compress the new packet against that. Another client might have received everything up to packet #224, so I can delta compress the new packet differently for them. Point is, we need to store a whole bunch of separate copies of the entire world.

    Someone on Reddit asked "isn't that a huge memory hog"?

    No, it is not.

    Actually I store 255 world copies in memory. All in a single giant array. Not only that, but each copy has enough room for the maximum number of objects (2048) even if only 2 objects are active.

    If you store an object's state as a position and orientation, that's 7 floats. 3 for XYZ coordinates and 4 for a quaternion. Each float takes 4 bytes. My game supports up to 2048 objects. 7 floats * 4 bytes * 2048 objects * 255 copies = ...

    14 MB. That's like, half of one texture these days.

    I can see myself writing this system five years ago in C#. I would start off immediately worried about memory usage, just like that Redditor, without stopping to think about the actual data involved. I would write some unnecessary, crazy fancy, bug-ridden compression system.

    Taking a second to stop and think about actual data like this is called Data-Oriented Design. When I talk to people about DOD, many immediately say, "Woah, that's really low-level. I guess you want to wring out every last bit of performance. I don't have time for that. Anyway, my code runs fine." Let's break down the assumptions in this statement.

    Assumption 1: "That's really low-level".

    Look, I multiplied four numbers together. It's not rocket science.

    Assumption 2: "You sacrifice readability and simplicity for performance."

    Let's picture two different solutions to this netcode problem. For clarity, let's pretend we only need 3 world copies, each containing up to 2 objects.

    Here's the solution I just described. Everything is statically allocated in the .bss segment. It never moves around. Everything is the same size. No pointers at all.

    https://i.imgur.com/4tFFSN7.png

    Here's the idiomatic C# solution. Everything is scattered randomly throughout the heap. Things can get reallocated or moved right in the middle of a frame. The array is jagged. 64-bit pointers all over the place.

    https://i.imgur.com/lRVCA0q.png

    Which is simpler?

    The second diagram is actually far from exhaustive. C#-land is a lot more complex in reality. Check the comments and you'll probably find someone correcting me about how C# actually works.

    But that's my point. With my solution, I can easily construct a "good enough" mental model to understand what's actually happening on the machine. I've barely scratched the surface with the C# solution. I have no idea how it will behave at runtime.

    Assumption 3: "Performance is the only reason you would code like this."

    To me, performance is a nice side benefit of data-oriented design. The main benefit is clarity of thought. Five years ago, when I sat down to solve a problem, my first thought was not about the problem itself, but how to shoehorn it into classes and interfaces.

    I witnessed this analysis paralysis first-hand at a game jam recently. My friend got stuck designing a grid for a 2048-like game. He couldn't figure out if each number was an object, or if each grid cell was an object, or both. I said, "the grid is an array of numbers. Each operation is a function that mutates the grid." Suddenly everything became crystal clear to him.

    Assumption 4: "My code runs fine".

    Again, performance is not the main concern, but it's important. The whole world switched from Firefox to Chrome because of it.

    Try this experiment: open up calc.exe. Now copy a 100 MB file from one folder to another.

    https://i.imgur.com/G6xbn52.png

    I don't know what calc.exe is doing during that 300ms eternity, but you can draw your own conclusions from my two minutes of research: calc.exe actually launches a process called Calculator.exe, and one of the command line arguments is called "-ServerName".

    Does calc.exe "run fine"? Did throwing a server in simplify things at all, or is it just slower and more complex?

    I don't want to get side-tracked. The point is, I want to think about the actual problem and the data involved, not about classes and interfaces. Most of the arguments against this mindset amount to "it's different than what I know".

    Problem #4: lag

    I now hand-wave us through to the part of the story where the netcode is somewhat operational.

    Right off the bat I ran into problems dealing with network lag. Games need to respond to players immediately, even if it takes 150ms to get a packet from the server. Projectiles were particularly useless under laggy network conditions. They were impossible to aim.

    I decided to re-use those 14 MB of world copies. When the server receives a command to fire a projectile, it steps the world back 150ms to the way the world appeared to the player when they hit the fire button. Then it simulates the projectile and steps the world forward until it's up to date with the present. That's where it creates the projectile.

    I ended up having the client create a fake projectile immediately, then as soon as it hears back from the server that the projectile was created, it deletes the fake and replaces it with the real thing. If all goes well, they should be in the same place due to the server's timey-wimey magic.

    Here it is in action. The fake projectile appears immediately but goes right through the wall. The server receives the message and fast-forwards the projectile straight to the part where it hits the wall. 150ms later the client gets the packet and sees the impact particle effect.

    https://i.imgur.com/5jbF8PA.gif

    The problem with netcode is, each mechanic requires a different approach to lag compensation. For example, my game has an "active armor" ability. If players react quick enough, they can reflect damage back at enemies.

    https://i.imgur.com/vfbs0J9.gif

    This breaks down in high lag scenarios. By the time the player sees the projectile hitting their character, the server has already registered the hit 100ms ago. The packet just hasn't made it to the client yet. This means you have to anticipate incoming damage and react long before it hits. Notice in the gif above how early I had to hit the button.

    To correct this, the server implements something I call "damage buffering". Instead of applying damage instantly, the server puts the damage into a buffer for 100ms, or whatever the round-trip time is to the client. At the end of that time, it either applies the damage, or if the player reacted, reflects it back.

    Here it is in action. You can see the 200ms delay between the projectile hitting me and the damage actually being applied.

    https://i.imgur.com/JQ3WgIt.gif

    Here's another example. In my game, players can launch themselves at enemies. Enemies die instantly to perfect shots, but they deflect glancing blows and send you flying like this:

    https://i.imgur.com/oTh4dFj.gif

    Which direction should the player bounce? The client has to simulate the bounce before the server knows about it. The server and client need to agree which direction to bounce or they'll get out of sync, and they have no time to communicate beforehand.

    At first I tried quantizing the collision vector so that there were only six possible directions. This made it more likely that the client and server would choose the same direction, but it didn't guarantee anything.

    Finally I implemented another buffer system. Both client and server, when they detect a hit, enter a "buffer" state where the player sits and waits for the remote host to confirm the hit. To minimize jankiness, the server always defers to the client as to which direction to bounce. If the client never acknowledges the hit, the server acts like nothing happened and continues the player on their original course, fast-forwarding them to make up for the time they sat still waiting for confirmation.

    Problem #5: jitter

    My server sends out packets 60 times per second. What about players whose computers run faster than that? They'll see jittery animation.

    Interpolation is the industry-standard solution. Instead of immediately applying position data received from the server, you buffer it a little bit, then you blend smoothly between whatever data that you have.

    In my previous attempt at networked multiplayer, I tried to have each object keep track of its position data and smooth itself out. I ended up getting confused and it never worked well.

    This time, since I could already easily store the entire world state in a struct, I was able to write just two functions to make it work. One function takes two world states and blends them together. Another function takes a world state and applies it to the game.

    How big should the buffer delay be? I originally used a constant until I watched a video from the Overwatch devs where they mention adaptive interpolation delay. The buffer delay should smooth out not only the framerate from the server, but also any variance in packet delivery time.

    This was an easy win. Clients start out with a short interpolation delay, and any time they're missing a packet to interpolate toward, they increase their "lag score". Once it crosses a certain threshold, they tell the server to switch them to a higher interpolation delay.

    Of course, automated systems like this often act against the user's wishes, so it's important to add switches and knobs to the algorithm!

    https://i.imgur.com/XPrJP0I.gif

    Problem #6: joining servers mid-match

    Wait, I already have a way to serialize the entire game state. What's the hold up?

    Turns out, it takes more than one packet to serialize a fresh game state from scratch. And each packet may take multiple attempts to make it to the client. It may take a few hundred milliseconds to get the full state, and as we've seen already, that's an eternity. If the game is already in progress, that's enough time to send 20 packets' worth of new messages, which the client is not ready to process because it hasn't loaded yet.

    The solution is—you guessed it—another buffer.

    I changed the messaging system to support two separate streams of messages in the same packet. The first stream contains the map data, which is processed as soon as it comes in.

    The second stream is just the usual fire-hose of game messages that come in while the client is loading. The client buffers these messages until it's done loading, then processes them all until it's caught up.

    Problem #7: cross-cutting concerns

    This next part may be the most controversial.

    Remember that bit of gamedev wisdom from the beginning? "don't add networked multiplayer to an existing game"?

    Well, most of the netcode in this game is literally tacked on. It lives in its own 5000-line source file. It reaches into the game, pokes stuff into memory, and the game renders it.

    Just listen a second before stoning me. Is it better to group all network code in one place, or spread it out inside each game object?

    I think both approaches have advantages and disadvantages. In fact, I use both approaches in different parts of the game, for various reasons human and technical.

    But some design paradigms (cough* OOP)* leave no room for you to make this decision. Of course you put the netcode inside the object! Its data is private, so you'll have to write an interface to access it anyway. Might as well put all the smarts in there too.

    Conclusion

    I'm not saying you should write netcode like I do; only that this approach has worked for me so far. Read the code and judge for yourself.

    There is an objectively optimal approach for each use case, although people may disagree on which one it is. You should be free to choose based on actual constraints rather than arbitrary ones set forth by some paradigm.

    Thanks for reading. DECEIVER is launching on Kickstarter soon. Sign up to play the demo here!

    submitted by /u/et1337
    [link] [comments]

    Spine is Amazing for 2D Game Animations! Here's a look at how I use it.

    Posted: 20 Feb 2018 02:59 AM PST

    Game development streams.

    Posted: 20 Feb 2018 08:23 AM PST

    I enjoy tuning in to game development streams, and I would like to share some of my favorite developers with you. I also want to hear from you! If your favorite streamers is missing, please share what they are working on, what technology they are using, etc.

     

    CodeNJoy https://www.twitch.tv/codenjoy
    Former AAA game developer streaming coding during the weekends. He usually work with web technologies and did a one-month long project implementing many of the gameplay systems from the "The Darkest Dungeon". It's very interesting to see how he structures code and systems, to make them maintainable and easy to work with.

     

    FrankiePixelShow https://www.twitch.tv/frankiepixelshow
    Pixel artist working on "Weekend RPG", "Barkley 2" and a bunch of other games. The streams are usually a combination of drawing sprites and programming in GameMaker. A useful stream for learning pixel art.

     

    JessicaMak https://www.twitch.tv/jessicamak
    Do you like visual effects? Tune in to this stream. She works on a visually vibrant game with procedural graphics and cool music. Programming in C++ and openGL.

     

    WilliamChyr https://www.twitch.tv/williamchyr
    William consistently streams the development of Manifold Garden. Sharing advice about working on long projects, working habits and game design.

     

    Naysayer88 https://www.twitch.tv/naysayer88
    Jonathan Blow occasionally streams development of his new programming language Jai and a new game developed in it. Recently showed one way of testing games by implementing a record-and-replay system on stream.

    submitted by /u/Snovind
    [link] [comments]

    How Thief's Stealth System Almost Didn't Work

    Posted: 20 Feb 2018 05:08 AM PST

    Pixel (game library) 0.7 released, reached 1k stars & looking for contributors!

    Posted: 20 Feb 2018 08:01 AM PST

    Pixel Art, Screen Resolution, and Zooming

    Posted: 20 Feb 2018 06:32 AM PST

    How I approach AI design in my action RPG

    Posted: 20 Feb 2018 04:43 AM PST

    Scaling problem with unity for mobile, image quality lowered. Developer vs Artist argument

    Posted: 20 Feb 2018 11:16 AM PST

    I have got a artist to draw a character and animate it. They sent me the frames in .png and it looks perfectly crisp quality (its 948x1191 pixel size) I give to developer to create into character in the game, he programs it etc.

    However when the the character size is scaled down in unity the quality drops and you can see the edges are pixelated.. the developer said it is the artist fault. I ask artist and they say its the developers fault.

    I then resize the original image size to the actual size it will be in the game and put into the game and see the quality is significantly better than scaling it from large to small on unity.

    I have to tell developer to replace the images with the new resized images now but I am sure there is a way so that I don't have to go through the trouble of resizing it manually for each image for good quality in unity. I remember reading it was best to get design art in highest scale and then downscale in unity and quality wouldn't be lost... but developer doesn't seem to understand/believe me.

    Any help? Much appreciate any responses.

    submitted by /u/tlaatonmai
    [link] [comments]

    Do use ticks or not to use ticks?

    Posted: 20 Feb 2018 11:11 AM PST

    I'm not sure if I understand the concepts completely but to me using a tick based system instead of a epoch timer instead seems worse. With tick based system you have to make sure that every tick passes at the correct time or it will lag behind. This would be an issue as stuttering happens with all applications.

    An epoch based time system would not need this at its just a integer counting up in seconds. If its ever out of sync you can retrieve the operating systems echo time. The problem would be for things that has to happen under a second(say every 200ms) you can have a separate timer for this which wouldn't require much Cpu-time to handle.

    So why do games still use ticks rather than

    if specifiedTime = time.now then //actions

    Is there something I'm missing?

    Edit: meant epoch time.

    submitted by /u/Dternity
    [link] [comments]

    So I wanna implement Machine Learning AI in a simple tanks game

    Posted: 20 Feb 2018 08:02 AM PST

    Hi,

    The turn-based game is a field of 8*8=64 cells, each has 1 of 4 states: empty/wall/your tank/enemy tank. Each turn tanks can move one cell away or shoot in 1 of 4 directions. Shots are instant and cover all cells in certain direction (and can destroy 1 wall cell). The goal is to destroy your opponent. Game & it's API is already created.

    I want to create a learning AI, ideally - reinforcement based. I.e. create a neural network that plays sessions with itself and becomes stronger. Each turn it receives an in-game situation (128 bits of input, description of cells' states) and decides to do one of the actions. At the end it receives score from fitness function, based on: a.) whether it destroyed opponent b.) whether it's own tank was destroyed c.) how many ticks has passed from the start of the session, the less, the better.

    Task seems to be relatively simple, but I'm ML noob - where & what should I look for?

    submitted by /u/mathRand
    [link] [comments]

    Aura - Volumetric Lighting for Unity - Update : Now fully works on all Unity version > 2017.2 (link in comments)

    Posted: 20 Feb 2018 02:28 AM PST

    For adaptive AI, what are the current algorithms that are being used rather than genetic algorithms?

    Posted: 20 Feb 2018 12:31 AM PST

    I am currently composing an Essay on the comparison of current algorithms vs genetic algorithms in developing an adaptive AI(ex: see the MarI/O machine learning video or the AI director of L4D2 in which it dynamically changes the difficulty). I want to know what these current algorithms are that program the AI in games such as L4D2 and Alien Isolation. Are genetic algorithms being more increasingly used in today's games or is it an other more established algorithm?

    submitted by /u/ShadowStrike515
    [link] [comments]

    Use psychological principles to make your games more addictive

    Posted: 20 Feb 2018 07:47 AM PST

    is 3d modeling easier than pixel art?

    Posted: 19 Feb 2018 11:55 PM PST

    I am planning out a top-down or isometric RPG. In terms of aesthetics, I actually quite like pixel art. However, in terms of making animations easily, I get the impression that 3d modeling may actually be easier.

    • animations can be totally fluid, versus in pixel art having individual frames
    • easier to move parts, since there's no required knowledge in 2d-projection art technique
    • I can download any 3d model and rig it, making any animation, versus with pixel art I am limited to the animations made by the artist.

    Am I wrong about this? is there a easier way to do pixel art?

    submitted by /u/isolatrum
    [link] [comments]

    Where to learn Anime style Animation

    Posted: 20 Feb 2018 02:03 AM PST

    I'm starting out as a game designer, and after some light research, I understand that for a solo beginner, trying to animate "Anime" in video game cutscenes is way out of my league.

    But after playing Persona 5, and watching Ghost in the Shell and Attack on Titan, I've come to love Production I.G. animation style and really want to start learning where to begin.

    So I came here with no where else I could think of asking, but does anyone on this sub know what would be the best software to use, and where can I learn? Or does anyone know what subreddit I should be asking instead?

    Thanks!

    submitted by /u/TheDeadCyclone
    [link] [comments]

    Rotating 2D images (programming techniques)

    Posted: 20 Feb 2018 05:42 AM PST

    Disclaimer: I'm a huge noob to this scene. Hopefully I'm posting this in the right sub.

    Does anyone have any resources that would help me with rotating 2D images?

    Case in point: in my really crappy attempt for a 2D car game, I want to be able to rotate my car, say by 45 degrees to the right. For arguments sake, the original car shape is a 10-by-10 pixel square.

    By rotating 45 degrees, the new shape in terms of pixels does not neatly fit into any set of pixels. It'll either be "jagged" or I'll need to fill in a bunch of additional pixels - which I'm assuming will make the car look pretty odd. Quite annoying indeed!

    Is there any resource (book, video, article) that touches on these issues and lists common techniques used by game programmers to solve them aesthetically?

    Thanks!

    submitted by /u/s0lly
    [link] [comments]

    Visibillity problem for Indie Games: Reallity in 2018

    Posted: 19 Feb 2018 09:18 PM PST

    Hi colleagues. We are an indie studio from Uruguay, and about to finish our first PC release. The name of the game is irrelevant as I don't want to use this thread to promote the game, I want to expose a problem we all have as game developers: visibility. First of all, I apologize for my imperfect english, I do what I can, my native language is Spanish.

    Much have been written about this visibility issue, but I think it got problematic in 2017 and getting even worser in 2018. First of all, our game is not finished, it's in beta stage. Which doesn't means is incomplete, it means it has only 5 levels. But more or less, they are finished. Most of the game idea is there. There are yes new features to add, some cool visual effects, etc. But the feedback we are getting is good even as we have it now, we got it played in a game summit in our country last year, when it was even an alpha and we saw what we expected to see: the game catched player's interest. They couldn't stop playing it. It didn't have many graphical brilliance back then, and still doesn't have it today, we are making an indie/retro game, we don't want gorgeous visuals either. It's a top-down/rpg/maze game, by the way. When we handed the links to some youtubers we got an excellent feedback/commentary. Now, the problem is not when we do this to reach for reviewers, the problem is having to do it because if you don't nobody, and I can't stress enough the word NOBODY will get to you. Of course, marketing is necessary if you have something to sell, but the reality of the indie scene today it's like if you should to go door after door with a laptop begging for people to play your game. It was not like this in 2010, 2012.

    The game it's right now uploaded in 3 of the main indie directories, it was first uploaded on 1/30 and just yesterday 2/18 the new v1.1. Here are the stats:

    • 1st. directory, 10 total views in 18 days, 3 downloads
    • 2nd. directory, 65 total views in 18 days, 16 downloads, 3 5/5 ratings
    • 3rd. directory, 519 total visits in 18 days, 27 downloads *currently at position 151 from 45,938

    You may say, "hey you are about to get into the first pages in 3rd. directory and doing well tehre". Well, our case with them is funny. 2 hours ago, the game was at position 90, with a total of 96 visits today. Just now, with 5 more visits (101), we are not in a better position, but with a drop to 151th. Just think how many games got added in that time-span. Just 2 hours. What to expect tomorrow? There were days when we didn't promote the 3rd. directory link at all anywhere, and drop to position 2500 easily. An issue with their algorithm? I don't know, but it's not helping at discovering our little game, for sure. It's mostly the quantity of games that have been probably added in that just short of time that can make you drop like that.

    Talk about 2nd. directory. There are 68k uploaded games there just now. The first 3 games that appear there, have been added, at the same time !! 3 at the same time ! This is 41 minutes ago at the time of writing this post. The 4th one was added 1 hour ago. And so on, I don't even want to look further to not get more deppressed. So this makes an average of 1 game added like every 15 minutes, and I am sure I am being generous here, it's probablye like 2 or 3 every 15 minutes...

    2nd. directory, this is the perfect example of what to expect if you don't promote your link. We are not linking to its game page in all of our nearly daily fb posts in groups, twitter. This is what 2nd. directory is doing for our little game: 10 total views in 18 day. And this goes beyond the "is the game good or not" topic, this shows the raw fact that nobody saw the game as so many titles have been added that I bet the initial 7 views we got it the first day, and that's it. In fact, it was like that: 8 views during the first couple of days, and 3 additional views in 17 days!

    This is the reality with the "Game directories" that out there to support the indie scene. They give a **** on you, if you worked 3 or 5 years. It's the same. They won't move a finger to move your game to the top, not even a "random" featured that could last 1 hour. You say, is it fair putting garbage featured for 1 hour in the front page? I think it's fair because eventually a good game could get there and get what the developers deserve. Pushing everyone equally to page 50, even good ones, it's not a solution either...

    At the time of writing this post, we placed a post in 2nd. directory in the "announcments" forum, where others are also posting their game announcements. We got 3 views there in 1 entire hour. The others? 8 views in 9 hours, 17 views in 11 hours, etc. It's not us, it's a general problem.

    Tell me, on a release day. What teh **** these sites think you can you do with 17 views of your announcement in 9 hours ? What's the help they offer? What's the support they give to those that are actually giving them content to show?

    We post regularly on facebook and Twitter. We have not much followers, but certainly I know other devs with a third of the nearly 800 followers we have on twitter and 1050+ in our facebook page. We get like 3 retweets to 4 on a lucky day, and 4 to 6 likes. And let's call it a succesful day. Twitter impressions? Maybe an average of 400 to 600 per tweet. On lucky days we got to 2k impressions if we get retweeted by influencers. (Do you want me to start talking how influencers, people in twitter with over 200k to 300k followers simply ignore you as if you where the last pile of **** in the street?). No matter if you approach them in a professional way, a funny way, an informal way. They simply don't reply, they are not even asking for a gameplay video to see what they could be helping promoting. And some others that reply, ask you for money to do it. This is the help you will get from those that "support the indie game scene". A stab in the back.

    We are paying some advertisement on facebook, notthing big, we don't have much money either. We get somehow like 10k impressions, in some cases something like 70 likes to any post, in some other cases promoting to asian countries, we get like 22k impressions and 800 likes. Do you think these click farms (yes, they exist), in indonesia, india and egypt did make ANY difference when being shown to people elsewhere, real people? If you see a post that has 800 to 1k likes, I am sure you should think that it's liked that much because of reason. I would think that, to be honest. And will catch my eye. Nothing happened, we didn't get 800 fb page likes because of that, not even 10. In those posts the directory links have been added. You see the numbers exposed on top. Where's the correlation between the impressions (10k impressions is not a low number) and so many low visits/downloads? Something is wrong. Yes, finally we realize not to include those 3 countries because of the click farms. But it's not getting any better now, with "quality" impressions, quality countries and quality likes. A the time of writing this post, we have a running ad in fb, with 400 impressions and 8 likes. This advertisement started today, it includes a video with gameplay/footage, with good quality, good fps rate. Nothing helps.

    So, directories doesn't help, twitter doesn't help, fb doesn't help , posting on fb groups doesn't help. You see other posts from other colleagues, and it's mostly the same, 10 likes here and there, some comments here and there. I don't see a sustainable business that could be make out of this, to be honest. And no matter how much we love making games, we can't do it if we can't eat properly, pay a rent and pay for electricity. The option of having a 2nd. income is not viable, I am going that route. Do you have an idea how many things changed since 2016 when I started with this? This is what happens when you do that "2nd. job", this is why some games take 3 to 5 years to complete, and the market changes drastically, specially IT.

    Now, the funny thing, we are not getting bad reviews/comments either, people telling the game is a pile of ****. All the contrary, those who actually see it post good things about it. Those who review it, say wonderful things about it. Hell! I am not bragging about the game, I am exposing a visibility problem, which is MORE SERIOUS than you initially think. Now, those saying good things do you think they are all of them friends of ours? Of course not. I don't have many friends. The problem is, you guessed it: the dreaded visibility issue. The media is not either being able anymore to discover games, you have to knock their doors. And most of the time they won't even reply back, not even having time to click at your link or read your game pitch. Or you get answers like "we are fully stacked for the week/month". Of course! With games being uploaded every 5 minutes everywhere, all of them desperate for a review how to not be!!!

    Talk about getting featured in those directories or stores. Good luck boy! It's not about "a good game gets noticed". It's not longer the case. Believe me,it's not. A good game is buried below the most possible **** ever you can do in a game engine in a week. Then they upload it, and call themselves game devs. It's just not true anymore that if your game is excellent you will have success, or get discovered. And even if you are the lucky winner, it's not fair that maybe 1 of 10 excellents games released in a month only 1 can get what it deserves. What about the other 9?

    Yes, it's a cruel world, I wasn't born yesterday. But this is ridiculous. I am saying all of this and at the same time I have to continue coding my game, as if none of this I am writing it's actually happening. And most fun of all : DO IT FOR THE PASSION OF DOING IT. "Because you have to do it because of that not because of the money". You know what, passion won't put food on your table, nor pay your electricity bill, but current money. What about dignity? What about spending 3 years on a game to sell 100 to 500 copies?

    So I am sure most of you would be thinking about the game we are doing, how good it is, or not, and again, the case is not exposing our game on this thread, if you want to see how good our game is or not, I will reply you privately with download link. The case here it's not if it's good, is that we are not beeing seen, we are invisible, as everybody else I spoke to. Every blog I read says the same, it exposes the visibility problem. I am seeing this happening for other developers, who post excellent gameplay footage on facebook and twitter, and unless they don't have 100k followers, they get 3 likes. This is the reality. 3 to 6 likes! Luckily someone encouraging you to go on, and that can't wait to play your game. Think of those 3 games uploaded at the same time today. They have their 15 minutes of glory just now, as we had when you browsed for 'new' releases. What about tomorrow? They will be in page 3 luckily. In a week they will vanish into nothingness.

    I actually told you that first time a streamer touched the game couldn't stop playing for 4 hours 30 min. non-stop, and I have the video. Similar to 2nd. one, same the third one who streamed it yesterday. The game is bad? Well, total strangers aren't saying that at all. We had it played at a game convention, all of what we received was good, besides feedback and stuff to add/improve, which we appreciate of course, since that's what happens when you show your game to public. And there's our own vision and instinct. I started with this game idea like over 1 year ago. I have had many issues in my personal life, two small kids and lot of other things to do for a living, so the development was delayed a lot, until June 2017 where the real Windows version started. The idea is good, the game is fun and addictive, it has tight controls, good mechanics and is difficult, enough to catch your attention for hours.

    So what to expect in 2 months, when the game hits Early Access in Steam? With these numbers I am showing you, what the **** to expect? 50 copies sold in a month? We "bought" the idea that could make it by doing an indie game, and sorry if I sound negative, but I am not sure if this true today, in 2018. I am far from sure.

    What about consoles? Do you think you can have them give you a dev. kit, as easy as that? It will be far from easy, it's not always just about how good your indie game is, as many developers think. All of us think our game is good, why are we doing it if not? it's about how much a publisher may think of you as an opportunity. Here in the game conference, I was approached by a publisher from Europe. He watched a guy playing the game, it got his interest because he didn't spoke with others showcasing their games. Do you think he asked me anything about the game? He asked me: "How many tweeter followers do you have ?". And I said "we have 300". A few talk here and there, he lended me his card and walked away. I wrote him an email, the guy never replied back. He was expecting maybe 10k. I am sorry guy, I didn't have that many and never would have. It is your job maybe getting US those 10k by actually doing your work.

    This lead us to the next big topic: Publishers. I don't think I have the time or energy to start writing about this. Do you want me to talk about questions like this guy made me or about the 40%, sometimes 50% comission they take for every game they sell on your behalf?

    The reality is not better in mobile, I think it's worse. People is used to "free" stuff, to a point that if you put your game on a mobile store, for as low as $3 or $5 it's like: "Are you kdding me? I want it for free". Luckily they will click in your ads and get you some cents, if they want. And when they get tired of the ads, they will uninstall it. The premium mode is no longer an option, and if you ask me, I hate games on mobile when I have to click on a video just to "advance" or to get a cool feature/power-up, otherwise I could NOT. It ruins the game experience. It's fraud, it's like playing with the player. It totally ruins the experience. Imagine you are playing a horror game, with dark music and ambience and then some funny latin/pop **** reggaeton comes up for 30 seconds? It ruins the game experience. Sorry I won't implement that on my mobile port, I value my product not to ruin it like this.

    So at this point, leading to the end of the development of our game, I don't know what to expect. The motivation is no longer what it was when we started it. We are two guys, I am the developer and game designer, and my team mate is the graphic designer. We work from our rooms, we do our best, I have 20+ years coding experience. Ask me if I have more energy to complete this game. Come on, ask me. I will do it, but for a matter of dignity.

    Would love to know your thoughts, experiences, numbers, whatever, so I don't feel so depressed about this. Or maybe I will feel worse, I couldn't care the less at this point.

    submitted by /u/backtotheabyssgames
    [link] [comments]

    Top Mobile Continuous Integration (CI/CD) Tools In 2018

    Posted: 20 Feb 2018 07:38 AM PST

    Recommendations for project management

    Posted: 20 Feb 2018 07:26 AM PST

    Hello,

    I'm looking at some sort of solution to manage the project I am working on. There is currently 3 of us and soon will be 4, I am looking for something which would be useful to track and make deadlines so we can monitor our progress better.

    So far I have been doing it in my head, however as the project is moving on this isn't really the best way and I lose track of stuff. I could just do an excel sheet but I am assuming there is other better ways?

    submitted by /u/Enaver
    [link] [comments]

    Flash Games Aren’t Dead, They’re Just In A Coma

    Posted: 20 Feb 2018 07:15 AM PST

    Can anyone recommend me a good networking tutorial?

    Posted: 20 Feb 2018 07:04 AM PST

    Hi,

    i am currently working on my mvp of my third person skill based brawler with rpg/moba elements.

    And while i have a basic multiplayer running, i noticed that i need to learn a lot of networking.

    So my question is, are there any good sources to learn networking for beginners?

    If it matters i am using UE4.

    Thanks in advance

    Feind

    submitted by /u/Feindhammer
    [link] [comments]

    Complaint against mobile app. Do they have any ground to have us removed?

    Posted: 20 Feb 2018 06:43 AM PST

    Good morning!
    The other day we had an email sent to us from the Ituines App Store from one of the developers on there. It stated that we are using a developers name and app icon. The thing is, we released our game while they had there app removed from sale on the app store, so there is no way we are trying to rip them off.
    They have the name 2048.io trademarked, so we did change our game name is 2-0-4-8.io. Would this not be enough of a name change to allow us to keep the app on the store? Also, they claim our icon is too similar to theirs, again we didn't even know their app existed. Even if we were a duplicate, as long as we created it ourself, would we not be able to keep the app icon the way it is?
    All in all, they want us to remove our game from the store. Do they have ground to force us to do this, or should we stand our ground?

    submitted by /u/spinout257
    [link] [comments]

    No comments:

    Post a Comment