tag:blogger.com,1999:blog-3779956188045272690.post6436442699417336859..comments2024-03-22T01:46:59.425-04:00Comments on Procedural World: Big DataMiguel Ceperohttp://www.blogger.com/profile/17586513342346629237noreply@blogger.comBlogger22125tag:blogger.com,1999:blog-3779956188045272690.post-50531900988010783752011-09-16T09:04:00.389-04:002011-09-16T09:04:00.389-04:00@Squash: This may be a viable future for a popular...@Squash: This may be a viable future for a popular MMO franchise like WoW. RPG won't be killed by the small latency added by server-side rendering. WoW will get a lot of users, investing in that kind of infra-structure would not be a problem for them. It would allow for a very rich and detailed world, unlike anything we have seen. Think of movie CGI quality level. It could be experienced by anyone, even in mobiles and tablets. Network issues affecting multiplayer gameplay would be gone, you could have massive raids where thousands of players take place. A new age of gaming, and the technology is already proven. It is a matter of time and will.Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-24003646868229282022011-09-16T03:30:49.216-04:002011-09-16T03:30:49.216-04:00Your mention of OnLive along with huge data sets i...Your mention of OnLive along with huge data sets is interesting. It wouldn't work for your own hobby project, of course, but for a game specifically targeting OnLive as its primary platform you could get away with some insanely huge datasets. All the OnLive servers could read from a single copy of all the game's static world data, so you you get away with a space requirement that would be impossible if each system needed it. And streaming data from a server isn't that hard when the server is in the same room.Squashnoreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-42770353438901445992011-09-15T17:48:48.450-04:002011-09-15T17:48:48.450-04:00I was imagining sharing the generation of data, ra...I was imagining sharing the generation of data, rather than just bandwidth, although that's obviously not useful for your system. Your way does solve the trust problem though.<br /><br />For latency, if you could try requesting small chunks of data at a time, then you can easily use multiple peers and swap out slow peers without losing much time/data.<br /><br />I don't have much P2P experience either. I suspect there is a great solution there, maybe organising data requests with something like OpenCL events, but it'd probably take more time than 1 person has to invest when it's only a small part of their project.John Keyworthhttps://www.blogger.com/profile/08166300196571589063noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-22599485155197159322011-09-15T17:16:15.873-04:002011-09-15T17:16:15.873-04:00@John: P2P is very appealing. I have considered it...@John: P2P is very appealing. I have considered it for hosting the world data files. As the player moves, the data for the next cells could come from other players instead of coming from a server. A karma system could encourage you to leave the a portion of the client running so other players can be served while you don't play.<br /><br />Security is not a big concern for static data. I could use some sort of asymmetric signature to make sure the files are the really the originals. <br /><br />What I did not like about it was that latency could bee too high. I would still need to involve a server to coordinate p2p transfers and make sure karma is honored, then it cannot be really guaranteed peers will respond in a timely manner.<br /><br />But I have very little experience with P2P. I may be wrong and missing on a great solution.Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-16039127916319504582011-09-15T16:55:45.808-04:002011-09-15T16:55:45.808-04:00Another way to get more processing power is using ...Another way to get more processing power is using P2P, for multiplayer games anyway. Especialy useful if you can convince idle users to keep their machines running (i.e. EVE mining).<br /><br />Obviously it has issues(like trust) and makes everything that much more complicated to manage, but it could have great rewards.John Keyworthhttps://www.blogger.com/profile/08166300196571589063noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-59820382251981907032011-09-15T09:40:34.427-04:002011-09-15T09:40:34.427-04:00I started to read your posts from the oldest and I...I started to read your posts from the oldest and I now catch a glimpse of your vision. It is enough crazy to be revolutionary and surely meets all my admiration and regards. Too daring for me though. Definitely I will follow another path. However I keep on reading your posts that are interesting and detailed, providing my modest opinion if you like.Pietro De Nicolahttps://www.blogger.com/profile/06628441281080471327noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-79638489044799053932011-09-14T03:48:17.803-04:002011-09-14T03:48:17.803-04:00@Miguel: Thank you. But what you do now, I hope to...@Miguel: Thank you. But what you do now, I hope to be able to do in 5 years :)Pietro De Nicolahttps://www.blogger.com/profile/06628441281080471327noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-1193706985625221692011-09-13T16:50:32.393-04:002011-09-13T16:50:32.393-04:00@Pietro: Very nice work. It is among the nicest lo...@Pietro: Very nice work. It is among the nicest looking heightmap rendering I have seen.Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-32059922618312587602011-09-13T16:12:32.233-04:002011-09-13T16:12:32.233-04:00@Jonathan: Thanks a lot for the info. Very helpful...@Jonathan: Thanks a lot for the info. Very helpful.Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-43642353395752513382011-09-13T15:59:08.412-04:002011-09-13T15:59:08.412-04:00Also, regarding specs, though they are only regard...Also, regarding specs, though they are only regarding steam users, there are some solid metrics here: <br /><br />http://store.steampowered.com/hwsurveyJonathan M.https://www.blogger.com/profile/13053063838125968099noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-27514143988410926452011-09-13T15:57:35.024-04:002011-09-13T15:57:35.024-04:00I'm confident that complex procedural generati...I'm confident that complex procedural generation client side and runtime is feasible. Maybe my vision is wrong. However it is worth to debate about this subject.<br />As far as I've seen, Flavien (programmer of Infinity) has tried simple vegetation (trees) and procedural cities as well. <br />I think tiles can help to find a good trade-off. A palette of 10 branches can generate millions of different trees. No need to generate every thing. <br />Regarding my hobby work, go to <br /><br />http://gdevice.blogspot.com <br /><br />and just watch the video in the last post. It takes 5 minutes. <br />It's yet another heightmap based viewer. No complex geometries. Maybe interesting the fact that it generates runtime, while the observer moves, that it allows a huge distance view even though the terrain is densely tessellated, and that it's written against OpenGL 1.2.Pietro De Nicolahttps://www.blogger.com/profile/06628441281080471327noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-5090770816821006732011-09-13T15:54:10.646-04:002011-09-13T15:54:10.646-04:00@MCepero: This is off the cuff, but I'd be pi...@MCepero: This is off the cuff, but I'd be picturing the lowest end of a usable spectrum of PC, as mid-level level PC, bought 2 years ago.<br /><br />Something on the lines of which is used as minimum specs on some newer games:<br /><br />- Operating system: Windows XP, Vista or 7<br />- Processor: Dual Core 2.0 GHz or better<br />- Memory: 3 GB<br />- Video: Nvidia GeForce FX 5900, ATI/AMD Radeon X300, Intel GMA X4500 or better.<br /><br />Ultimately, the results you are getting, the beauty and the detail are top notch. Graphically speaking getting anywhere near real time at max settings is going to MAX out any modern rig, BY ANY MEANS!<br /><br />To me this means targeting higher end systems, but still not just top of the line:<br /><br />To me this close to "decent", from a gaming perspective:<br />- Operating system: Windows XP, Vista or 7<br />- Processor: Core 2 Duo 2.2 GHz or better<br />- Memory: 4 GB<br />- Desktop Video: Nvidia GTS 250 or better<br />- Notebook Video: Nvidia GTX 200M series or better<br /><br />You are quite intelligent :) <br />...but as you've already said there are just limits to what current, let alone older tech can do... And as much as I think cloud computing can do, I'm not yet convinced you can make a business case to deliver more, within a price point people would be willing to spend... but I've not crunched any of those numbers as you have, I'm excited by the direction you are looking into.<br /><br />I think the MOST important aspect of a successful indi product is a COMPELLING game that people just "HAVE to talk about" (ala. Minecraft). <br /><br />With the visuals you have shown are possible, if you can optimize the processing so it's usable on ANY current (even close to top of the line) hardware: then the internet (1080p/720p Let's Plays on You-Tube) will sell it the rest of the way. I think people will play it dumbed down greatly, if they know they can eventually crank up the quality as their hardware improves, or if you are able to build more robust streaming versions.<br /><br />Anyway, I'm biased because I WANT to walk in the lands you've made :)<br /><br />P.S. I you know this, but it's crucial that the game-play is solid, and fun, in itself, in spite of the visuals... Once you've dealt with other things to your satisfaction, you may want to give yourself some direction on where you want to take it (you may have already done that and aren't discussing it publicly, which is fine too).Jonathan M.https://www.blogger.com/profile/13053063838125968099noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-38631266637224366862011-09-13T14:56:02.276-04:002011-09-13T14:56:02.276-04:00@Pietro: Sure I'd like to see your work. If yo...@Pietro: Sure I'd like to see your work. If you have a live link please post it here so others can benefit too.<br /><br />Both client hardware and bandwidth will not change much in one or two years. I have crunched the numbers. What average clients can do, and will do in the short future is not enough. They cannot do the amount of detail I want to have. Also why wait if a solution involving the cloud is possible now?<br /><br />I have seen Infinity. It is impressive at planetary scale. However when you get close at human eye level it is not detailed at all. Terrain is heightmap based, no complex botany, no complex architecture. It suits their goals, but it is far from what I want.Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-40409120897537791742011-09-13T14:39:08.542-04:002011-09-13T14:39:08.542-04:00@Miguel: Think first to the benefits having a comp...@Miguel: Think first to the benefits having a complete runtime generation at client side. Don't consider for a moment the new operating conditions. Those can be reviewed later. Also consider that for the time you will come out with a complete product, clients hardware will be better, while bandwith probably not.<br />There are interesting examples out there. I would point you to "Infinity - quest for earth". I believe its generation is completely runtime and client side. <br />I see you are doing a great work and I hope that you will continue at best. So if watching a video of my hobby work you will get curious about any detail, feel free to ask, I will be happy to share.Pietro De Nicolahttps://www.blogger.com/profile/06628441281080471327noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-51441357303832895922011-09-13T12:35:47.776-04:002011-09-13T12:35:47.776-04:00@-=Y=-: It is a possibility, but then having a con...@-=Y=-: It is a possibility, but then having a consistent transition zone between the two scopes will be very challenging. The transition could be very noticeable if too close to the player. If you placed it far enough, then the amount of generation done locally would be too much.Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-78430470430022686832011-09-13T10:50:12.288-04:002011-09-13T10:50:12.288-04:00why not split world in 2 scopes. bigger one is gen...why not split world in 2 scopes. bigger one is generated and stored on server. smaller is generated form data send from server on client machines.<br />simple example:<br />server generate forest, for every tree generate seed that describe its shape (this seed isnt pure random).<br />server send to client position of tree and its seed.<br />client can now build form that part of forest.<br />if generating every tree shape in this arena is to costly for that machine and trees are only decoration it can create only one tree shape and copy it to every other tree position.-=Y=-https://www.blogger.com/profile/11657917258935097478noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-51363704515296034572011-09-13T09:35:33.396-04:002011-09-13T09:35:33.396-04:00@Jonathan: I'm just curious, what would you co...@Jonathan: I'm just curious, what would you consider as "decent hardware"?Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-867614780644167852011-09-13T08:37:22.924-04:002011-09-13T08:37:22.924-04:00@Pietro: The problem with proceduralism as compres...@Pietro: The problem with proceduralism as compression is that you need to "decompress" in a timely manner. For instance, if it takes you 10 seconds to walk trough a patch of land, but it takes you one minute to generate it from scratch, your procedural output won't be able to cope with the user's experience.<br /><br />You are left with two options: Either reduce the complexity of the world so you can have patches generated in less than 10 seconds, or do some of the work beforehand and load it from a device like a disk or the network.Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-36333516341642258382011-09-13T07:55:45.998-04:002011-09-13T07:55:45.998-04:00Procedural is compression. This is a great benefit...Procedural is compression. This is a great benefit. You just say "I'm at (x,y)" and the algorithm will generate the portion of the static world around you. So why don't let the clients to generate the static world and servers only stream moveable object's positions? This would cut down your bandwidth. <br />Google Earth can't do this because deals with non procedural content.<br /><br />PietroPietro De Nicolahttps://www.blogger.com/profile/06628441281080471327noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-53583840313562561812011-09-12T23:57:25.680-04:002011-09-12T23:57:25.680-04:00Another way to manage data is to cut it down into ...Another way to manage data is to cut it down into load-screens and areas. <br /><br />If I were making a game (I'm not, and don't know enough to even start), I'd probably run it at two different resolution. Much like the game Neverwinter Nights, I'd have sections cut around logically-consistent areas, with loading screens in between. Beyond the edge of the screen, a lower-resolution backdrop would be visible. The faroutside off distance could be rendered as a wallpaper (or even dynamic wallpaper, with waving grass or something). <br /><br />Sectioning off areas for loading screens I'd think could be logical too. Cities (or districts of cities) can be divided. Large plains can be divided smoothly. Mountains have edges, both along the cliffs and between peaks. Depending on how each section is processed, the 3d model could be created on the fly, with simple png files (or low-resolution poly's, or whatever), can be saved for each section.<br /><br />That would require an larger intitial download (which could be spread out via bittorrent really), but there would be a lot less streaming data than streaming video or rendering info.<br /><br />But that's just how I would do it, and it obviously has the drawback of loading screens.Nathanhttps://www.blogger.com/profile/05308318459535348460noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-13040535287887385232011-09-12T21:59:47.203-04:002011-09-12T21:59:47.203-04:00Looking forward to next post... I think it's ...Looking forward to next post... I think it's going to be all about optimization of resources, knowing the algorithms you have created, understanding their requirements (order of operation etc.), and trying to let each part do what it does best.<br /><br />Strategically using deterministic algorithms is a good way of moving the load around from up-front to real-time computation for certain things.<br /><br />Realizing that "if my screen shot of a hill has slightly different tufts of grass than yours", no one is going to care, should give you some leeway. <br /><br />Personally, I think the greatness of what you've created thus far is in your voxel, terrain, flora (though more to do there certainly) and city, roads, building engine.<br /><br />Things that don't have to be done upfront:<br />- Flora display, if significantly driven by the fixed terrain.<br />- Populating the world, with people and animals, to make it "feel" alive.<br />- Populating the world with movable objects, and then their dynamic location stored if moved.<br />- Some game mechanics, dynamic quests, events, etc...<br /><br />------------<br /><br />- Storage IS "cheap", no getting around that! So perhaps preprocessed base-seeded terrain data, with a number of post-processes applied to make it a detailed terrain.<br /><br />- Client side CPU can be powerful, or not, but it's good at some things. Best pinned to things that can have "quality sliders"... controlling populations of NPC, Ambient Audio complexity, text overlay/display or other things.<br /><br />- Client Side GPU can be powerful, or not, but it's good at some things. Best pinned to things that can have "quality sliders"... Post processing effects, bloom, antialiasing, shaders.<br /><br />-----------<br /><br />I do think you will be best served not trying to tackle "the holy grail" of a completely cloud based computing structure etc... Especially because on-line only options are may cut into your user base.<br /><br />My opinion: For the people who would get excited for your eventual game, a 4 GB+ install folder is nothing. If you get it to run decently on decent hardware, you can ALWAYS leverage things like On-Live to get it to run on weaker devices, or tackle the online mobile market later... once the money is rolling -- then release a mobile version that does all the sexy remote rendering for a small monthly fee, or whatever :)Jonathan M.https://www.blogger.com/profile/13053063838125968099noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-35455426030381917022011-09-12T12:18:10.571-04:002011-09-12T12:18:10.571-04:00It is essentially about the trade-off between cont...It is essentially about the trade-off between content data size and content generation speed. But it's not all black-and-white, one or the other. It seems to be that there must be some optimum where the power of the user's pc is harnessed to generate the final data, while you do all the prep work. This would result in less data than when you do all the work, and less user generation time than when the user would do all the work, while utilizing both to the max.D. Pelsmaekerhttp://www.16tonweight.com/noreply@blogger.com