Jump to content
  • Advertisement

snacktime

Member
  • Content Count

    52
  • Joined

  • Last visited

Community Reputation

456 Neutral

1 Follower

About snacktime

  • Rank
    Member

Personal Information

  • Role
    Technical Director
  • Interests
    Programming

Social

  • Github
    https://github.com/gamemachine/gamemachine

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. I'm using planar shading with a single global texture, that and being at distance, triangulation can be a complete mess and it won't matter as long as there are no holes.
  2. I don't need the delaunay triangulation for all of LOD1. I think the simplest is to just start with LOD0 as the base for LOD1, remove all verts except for the ones creating the outer edge. Then fill back in with the simplest triangulation that works. I could drop in a premade square mesh that fits inside all edges, then just use a simple pattern to create the outer triangles. Draw lines from each edge vert to center place new verts where they interset premade mesh, something like that. Doesn't matter if it's a mess just that vert count is low enough, and no gaps.
  3. Been struggling to find the best way to create LOD's for a delaunay triangulated terrain mesh. Currently I triangulate the entire area, then have a simple chunk system where triangles are assigned to chunks by their center. Naturally this results in the jagged edges as shown in the pic, so it's nearly impossible I think to create LOD's from that. But triangulating by chunks has it's own set of issues. Mainly that chunk edges would not match exactly. And even if they did, it would be visible in a bad way. I haven't found any free mesh decimation tools that can retain the edges correctly. Plus any tools here need to integrate into a procedural pipeline in Unity. I was thinking maybe there was some way to handle this in a shader. I'm using a single global texture with planar mapping for the terrain, so I was thinking maybe I could use a stencil buffer in some way to get the pixels representing the gaps in the LOD's? Any ideas appreciated.
  4. So for a number of reasons I'd really like to go with a low poly/vertex lit terrain for my game. But I don't necessarily want that everywhere. Like characters I definitely do not. Water not either. The following screens show my test scene with low poly and normal surface shaded heightmap terrain. Trees are purely placeholders for functionality. Low poly terrain has a number of significant advantages to this specific game. It will be far less time intensive to create the number and type of terrains needed, texturing and lighting becomes much simpler. I just don't know enough to know if it can be pulled off. Mixing the low poly terrain look with stylized but surface shaded assets. Mainly characters and water are where I simply can't go low poly. Or rather I strongly believe at that point it wouldn't be a good trade off for other design reasons.
  5. snacktime

    Optimizing multiple field encoding

    Ya I should have said the reason to skip fields is default values. It's really more of an experiment. Since I had to revisit this code anyways it seemed like a good time to re evaluate optimization of the value per field approach. We use the protobuf packed approach for high frequency stuff. Flatten the data into array per type. In our case we are pretty much always on the edge, so even less frequent messaging I'll go further to optimize then most games, although there are limits. High frequency messaging a couple bytes is a big deal. Lower frequency stuff some of it in burst it can be a big deal. So if I can find a good way to keep fairly normalized messaging and have it almost as good as packed, that would be ideal.
  6. So I'm working in C# and normally I use protocol buffers and heavy usage of varints, but the best existing library boxes value types. So for a handful of our high traffic messages I created a simple code generation based encoder. To signify which fields to include in the stream I use a bit per field. Then encode those bits as varints and they go in the header. I use 32 bit chunks for this (BitVector32 as it just makes bit twiddling easier). An obvious more efficient approach is to just create more granular messaging so you don't have a lot of fields with default values, or leverage other things that are context specific. I'm trying to find the perfect middle ground. It seems that there should be a way to use less then a bit per field. Like some type of mask that takes less, maybe some type of lookup table, even if it does use a bit of memory.
  7. snacktime

    Rpg magic alternatives

    The sail vs crystal drive is I think history. For some of the reasons you noted. Going backwards was just an issue when navigating like around docks. But I'm ok with a sailing ship going backwards at low speed even if it makes no sense in the real world. I don't really want to put a ton of time into solving that, it's just not that important. Right now I'm thinking you have to apply energy to the crystals for them to release energy. How to do that exactly I've hit a few roadblocks. Applying pressure as a way to release crystal energy is an approach that gives me something I needed, which is explosives. So a projectile rich in crystal ore could have an explosive effect on impact. Solar power driving them I don't really like. Using say a mechanical device on ships driven by movement, like from water or something, to apply pressure to the crystal turrets. Don't really like that idea but it's an example of what's floating around in my head. The main thing though is most of this is driven by the combat that I want. If I have to go a bit higher fantasy that's ok. Low fantasy games that make heavy use of ships in combat are usually not that fun. I've found a lot more fun mechanics in space combat games like Eve online. So I'm copying a good amount of design elements from those games, and so far it's working fairly well. Like the crystal turrets are actually quite fun. Right now I have them buffing resistances and speed/accuracy. Debuffs are next on my list to play around with.
  8. snacktime

    Rpg magic alternatives

    Ya I forget to mention, I'm using #2. I think it fits better into how the larger economy works, where there is a lot of item destruction, items don't stay around forever.
  9. snacktime

    Database Structure for MMO's

    I've worked on games from small to huge scales, and for mmo type games now days I really prefer document stores. The thing is that handling stuff like transactions is generally just simpler to do in code. And what people often forget is you can mess up db transactions easily also, they are not a magic bullet and they only protect you for a small surface area. One that I don't find as important for most of the stuff we do in game logic. Add in the fact that at scale, you have significant caching layers which are often in the pipeline anyways, like write behind caching, and the benefits of ACID start to get smaller, because the surface area of the db just gets smaller and smaller. Note that I do use schema's. Just because the database doesn't care doesn't mean you have to extend that approach into your code. That's a choice. I'm also not saying relational databases are not good at this, I just think document stores like mongodb are more of the sweet spot for reasons that are specific to this type of game.
  10. snacktime

    Rpg magic alternatives

    So thought I'd throw this out here. The game is multiplayer, kind of an mmo/moba hybrid. The setting is low fantasy and I'm trying to keep magic subdued. There is a strong emphasis on vehicles and siege type weapons, and naval combat is a large part of the game. Right now I'm focusing on naval combat, that's where most of the functionality has been fleshed out. Currently I have the equivalent of ballistas and catapults, I call them bolt thowers and lobbers right now. Probably also worth mentioning that you build your own ships. You get a choice of hulls that are premade, and then you can place weapons/armor, etc.. All of it crafted. SO anyways current naval combat is lobbers do damage to the ship itself primarily, plus some small splash damage to weapons. Bolt throwers do high damage vs mounted weapons, low damage to the ship structure itself. But what I want is to have more support type effects. Something similar to Eve online logistics. Right now the best idea I have is crystals. I've started to run with it as it's the best I have, but it's in the early stages. So now ships have sails and a crystal drive for power. You can be using one or the other not both. Crystals drives move slower but can go backwards (solves a practical issue). On the combat side I'm starting to try and flesh out the idea of a crystal 'turret'. Since I want magic subdued, these turrets for the most part just provide buffs/debuffs. I'm also thinking that I need classes for combat ships, to constrain ships to either having the normal weapons or the crystal turret, support vs damage dealer concept. I also started to kind of run with some other ideas around crystals. The game is made up of regions/zones, and I'm thinking of having the origin of crystals being they fall from the sky, maybe some neighbor planets collided resulting in all these crystal fragments that occasionally fall. So if I create a shower of valuable crystals in an area, that should be a good way to get pvp action going. This also feeds into doing more with the treasure hunting mechanic I wanted, so oceans over time would build up more and more crystals. And when a new region is discovered, it could have a lot of them. In any case I'm not entirely certain about the crystal idea so was looking for some more feedback. I am certain about a lot of the underlying mechanics and abilities, so I'm pushing forward using crystals. If I change gears it won't effect much of the implementation. I think the biggest part of what I'm not certain about is can I subdue the magical feeling of crystals. Like if I can come up with some science behind why they work like they do. For instance maybe the core of the planet is made of some material that gives power to the crystals. Or if the crystals drop from the sky, their power could come from how close to the sun they got (if they originated from say another broken planet on the other side of the sun). Anything to avoid the whole idea of 'magic crystal'.
  11. You need to do more research and get to the point where you understand why some formats are more efficient.  Formats like protobuf not sending field names is an obvious one.  Varint compression is huge once you understand how it works (you can send X-bit integers using fewer then X bits). But the big picture is that it's a combination of a number of things that impact network usage and overall performance.  Using techniques to simply not send data you don't need to send is just as if not more important then optimizing the data format.  Structuring your code to take the best advantage of things like varint compression, makes a huge difference.   For example a trick I use is I never send floats for stuff like position updates.  I send integers using varint compression and decide on the highest decimal precision I actually need.  I multiply/divide to convert floats to ints and visa versa at that precision.  That results in huge savings for the type of data that makes up most of my network traffic.   Currently the best general approach I know of is varient/MSB encoding combined with using integers to represent as much as you can.  I've just found it to give the best results over the largest variety of use cases in multiplayer games.   And I also have to factor in integration with other frameworks I might be using.  Like I might be using Akka or MS Orleans as my core server framework, and if they natively support protobuf, well that means I don't have to take the GC hit to deserilize my format and then serialize again into theirs.  And on the server if you are working with message rates normal to say an mmo or fps game, it's object creation and GC that eventually becomes your bottleneck.  What I always tell people that are relatively new at this is no, don't even think about creating your own format until you first have a solid understanding of how existing formats work and you have gone through creating at least one working game of the specific genre you are tackling.  That's the best overall advice I can give.          
  12. snacktime

    Is art programming?

    Both require being proficient in dealing with abstractions and being creative.  Aesthetics is a major part of writing code. The people who created many of the algorithms we use in programming, that's definitely a creative work. I don't know if I would try to equate art to programming, but you can certainly create art with programming, and the ability of algorithms to match what a real person can do has gotten progressively better.  It's no where near what a good artist can do, but it's moving in that direction. And if you narrow it to the more technical aspects, programming beats the human.  You can't draw a perfect mathematically based shape, but a computer can. But a computer cannot bring complex ideas to life like a human can.  The best ai we have can still only reason about a small number of things at a time compared to the human brain.  There are a lot of problems that we can solve in a second that would take a computer years to do given the current algorithms we know about.  But both the speed of computers and the algorithms we use are improving.
  13. snacktime

    MMORPG networking Solutions

    It's been a while since I've mentioned it, but it's come a long ways and I just released a new version.   Game Machine.   Game machine is an open source server platform that excels at large virtual worlds with lots of players in the same area.  It's focus is on solving a core set of hard problems not just networking.  It has built in persistence that scales well.  The best space optimization of any platform I'm aware of, and a well defined structure for writing game logic that runs concurrently.  Plus a bunch of built in functionality such as multiple characters, groups/chat, area of interest, etc..   The default client is for Unity.  Biggest market it's where I put my focus for all the client side implementation.  But it's fairly simple to integrate with the server as the core protocol is protocol buffers, and I moved stuff like reliable messaging to a higher level of abstraction.  So the networking layer is very dumb (as it should be IMO).   I wrote a completely functional open world mass pvp combat mmo in under 3 months using it, it was an eat your own dogfood project.  And all of the server side code for that is also open source and comes with.  So there are a ton of examples for how to solve most of the things you might tackle in an mmo.  
  14. snacktime

    Game content source repository?

    Github is coming out with large file support, and there is a commercial git based platform that supports large files, can't remember the name.  It's based on git-annex.   So the future is looking brighter.   Even though perforce handles binary/large files really well, I just can't give up github workflow for code.  So I've been using amazon S3 for large binary files.  Managing versions gets tricky when working in teams.  Let me rephrase, it outright sucks.  But it's been manageable.
  15. I have a sandbox pvp mmo where I'm trying to model some of the elements of Eve online that I like.  Overall the gameplay is a mix of Eve and say GW2.  Much of the functionality is already playable, running on live servers, it's not just in the design phase.   So one of the key tactical elements in Eve is stargates that act as chokepoints, and I've been trying to think of something similiar to put in the game.  Practically speaking it's not really possible to have different parts of the map that only have a couple of narrow access points, it's a huge open world that is procedurally generated then hand tweaked.  Hand crafting a world this size just isn't practical for an indie studio, so we had to take a compromise route.    I was thinking that I can apply specific access points for trade via roads, which is kind of the angle I'm going with now.  I have npc cities and player run cities, and the general idea is you have to transport your goods from your player run city to an npc city to be able to sell to players outside your guild.  To transport your goods you have to stay on a road.  If you are on a road you can carry a lot of weight, if you go off, you become extremely  encumbered.  To make things more interesting I was going to put a couple of watch towers on the road between every player run city and the npc cities, and watch towers are also player controlled.  So if you own the watch towers, you effectively control the trade along that road (opposing factions will get easily killed if they don't bypass the watch tower, and you can't do that if carrying a lot of stuff).   Anyone have other ideas on this?
  • 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!