Jump to content


  • Posts

  • Joined

  • Last visited

Everything posted by DorHans

  1. Hi Anatinus, thanks for reporting this issue. I simply fogot the symbol for the gyrocopter, sorry. Made a new release version 1.11.2020.0206. Enjoy!
  2. Thanks, Bubo. Feedback is always appreciated, especially the good one.
  3. Version 1.11 Happy new year! Based on the idea from dynamis_dk, I added an option to render the biome map. Big thanks to the Fun Pimps for outputting these files with the current random gen! There's also a new option to render the prefabs. This option needs to know the folder, where 7 Days to Die is installed (I call this directory "game folder" or "game root"). Please check the settings and choose your installation folder. As the names of the prefabs easily overlap each other, I also added new bigger TileSizes. The picture above is made witch "DoubleSize". Please be aware, the resulting picture is limited to about 20000 by 20000 pixel. You will get an error message, if the TileSize is to big. To create larger images, I would have to reprogram the whole thing.
  4. Happy Holidays! Hey guys, long time no see. The ttp file format is a topic on its own, so I decided to ditch this part and implement a simple text search. With version 1.10 you will have your ingame waypoints, but no spawnpoint (bed symbol), no dropped backpack and no quick marker. @dynamis_dk I really like the idea to include the biome map and the prefabs. Would like to include this in the next release. Well, my commenting skills aren't the best. But if you want to know how the map is rendered you just need this file: https://github.com/DorHans/7DTD-SMR/blob/master/7DTD-SingleMapRenderer/src/Core/MapRenderer.cs The method getAllTilesFromMapFile will read all tiles from the map file and returns a dictionary. The key consists of the x-z-coordinates of this tile (or chunk). The value is a 512 byte array, which is the raw bitmap data. The method renderTiles extracts the x and z coordinates, creates a bitmap from the raw data and draws this into the map. If you want to code yourself, you can change the method RenderWholeMap. The variables minX, maxX, minY, maxY, sizeX and sizeY control the size of the resulting image. (E.g. a 4k map would be something like: min=-128, max=127, size=4096) @Lain I haven't used NitroGEN, so I don't know what files it generates. I assume it doesn't generate a map file. So it would be out of the scope for this tool. Maybe Damocles could add an option to output a height map as well. Enjoy your holidays!
  5. Definitely yes, but not this month. Tbh, I haven't played in months. So thanks for letting me know, there is a new version.
  6. Hi guys and gals, what have I been up to lately? I've been trying to render a map from the region files. From what I have observed, and that may be incorrect, the game saves data the following way: It creates the "hub cell data", which I think is for the distant terrain. These files contain the names of POIs, "asphalt" and some binary data. Maybe the height and/or biome map? The creation takes some time, but I expect that you see this data, when you use "Editing Tools" (Random Gen World Previewer). Each hub seems to represent 9 regions. The actual blocks are stored in your region files. Each region is 512 x 512 blocks big and reaches from the bedrock to the sky. The region is divided in 32 x 32 = 1024 chunks, each of them being 16 x 16 blocks big. When you first step into a region, the game creates an empty region file and only generates the chunks around you. From where I stand, the map gets rendered 4 chunks in each direction. The region files contains additional 4 chunks in each direction. This may be because of my view distance being 9? Beyond that point the chunks aren't created or saved. There is a console command called "visitmap", with that you can force the creation of specific regions and chunks. The command expects two X-Z block coordinate pairs. If you want to create the region 0,0 you have to type "visitmap 0 0 511 511". It than creates and checks all 1024 chunks in that region. Here are some numbers. These are only estimates, as I don't want to spend so much time testing this out. A random world is about 40 x 40 = 1600 regions big. Each region consists of 1024 chunks, resulting in about 1.6 million chunks. The visitmap command can compute about 22 chunks per second (on my system). Generation of the whole world would take 74,000 seconds or 20 hours. Each region file takes about 8-10 MB, so the whole world would be 12-15 GB. Rendering the map is a lot faster, and happens at about 1100 chunks per seconds (on my system) -- resulting in about 26 minutes for the whole world. The image would be 20,000 x 20,000 pixels and about 130 MB big. TLDR: It is possible to render a map from region files, but -- and that's a huge butt -- it takes a tremendous amount of time to create the regions. Currently it can only render the terrain, no blocks or decorations. Maybe because blocks can be painted, and therefore the map color must be extracted from the texture? And it also renders underwater terrain. The code is very experimental and far away from production use. So don't expect a release in the near future. Finally something to look at. The four images on the left are a comparison between the rendered regions and the ingame map. I hope, you can see the limitations mentioned above. The right image shows what additional information you may get. The magenta overlay marks the chunks saved in the region file, that are not on your ingame map. Nice, but pretty much useless? Any thoughts on this feature? Any wishes? Maybe extend your ingame map with information from region files? You know a faster way to generate the whole world?
  7. Thank you guys for all your feedback! It' always a pleasure to read, even if you find it useless. And thanks, Eihwaz, very nice spotlight. I like how you explain every option and detail. This reminds me of writing a short wiki on github...
  8. Version 1.9 Yesterday I released version 1.9 which features a RegionViewer (in the menu under "Experimental"). I don't know if it is useful or not. So tell me if you have an idea. Currently it takes your selected map and renders each region individually. When you select a region from the list, you will see the rendered image and a grid overlay. Each grid cell represents a chunk and has a X and Z value.
  9. Hi Darkweaver, for a list of included symbols see post #22. There you will also find information on how to use your own symbols. And thanks for mentioning, the ingame waypoints broke again. I hope to fix this issue this weekend. No promises made!
  10. Sorry for answering this late. You are right, I completely forgot to commit the app.config. But you don't really need it anyway, it is almost empty. And yes, you also need the FunPimps.dll from the binary release. As for the POIs / waypoints: A POI is just a map marker with a name, symbol and coordinates. All waypoints, you've added to your map, are read from from player profile (.ttp). The POIs are read from a csv file (plain text file with default encoding). These symbols are static and not accessible from ingame. 1000,760,book,store This line will add a book symbol with the name "store" at 1000 north / 760 east to the rendered map. I assume, that airdrops are saved in the chunk files. So you might end up reading all 7rg files, searching for airdrop blocks, extract their coordinates and create an instance of the POI class for each airdrop. It is possible, but requires some work. @Pr00ch: Well, uncovering the map is not that simple. First you would need the game to create all region files. Then you would parse these files for the highest terrain block. Then you would need the material of that block. Then you need the color of that material. Then you need the orientation of the block (a block in a mountain slope has a different color than in a plain). Then you might compute the color of that pixel on your map. Since we have an ingame preview of the map, I don't really see the need for that.
  11. Hi Llathrum, the map rendering still works with the very first version of this tool. I assume you have problems with the UI changes since version 1.4. I think you tried to open a map using the "Browse" button. Please see this screenshot. To choose the map, you want to export, you just have to select it from the combo box. In my case it is a "Random Gen" game I called "GreenForest". Below the combo box you will see the path to your map file. The button labeled "Browse" does search for a poi file (points of interest). This feature was implemented shortly before in game waypoints were introduced. (see post #22) So, please try again by selecting your save game from the combo box.
  12. Bad news is, that I don't own a console. So I have to rely on others to provide data and test the program. But I like the idea. You could have a look at your PS4 save game and see if it contains a *.map file. You then just open this file with the SinglePlayer Map Renderer. If this doesn't work you may send me an example. (Or upload it to a cloud storage ...) Well, what this tool really does, it takes your ingame map and exports it as a png file. It does not render maps from region files or generate regions from a seed. And it also doesn't support multiplayer.
  13. Good news, waypoint rendering is back. Almost on time with the release of Alpha 15. So, go out and explore the world!
  14. Just tested with the latest experimental build (Alpha 15 b78) and it is compatible. Well, I don't really expect the Fun Pimps to change their map storage. But they changed their save file format, so no waypoint rendering at the moment. Beware of spoilers as I uploaded the Navezgane map here: https://1drv.ms/f/s!ApcUH5b5Fus_02NG_HWZ-NQXXnOI
  15. If it works for you, use it. Please note, that pixels are stored in System.Windows.Media.PixelFormats.Bgr555 (https://www.theimagingsource.com/support/documentation/ic-imaging-control-cpp/PixelformatRGB555.htm). Your compare method doesn't really compare the brightness, but the pixel with more red in it will win.
  16. Thanks for your compliments! I really appreciate it. @rebdog, that was something I haven't done on purpose. This python script (7DTD Leaflet) does a great job for multiplayer server: https://7daystodie.com/forums/showthread.php?14947-Export-discovered-map-to-png. That was the tool, that I based my work on. They use a SQLite database to efficiently store and retrieve all maps from all players. As for my tool, a tile matches a chunk and measures 16 x 16 blocks (or pixels). The map file stores its data as keys and values. The key is composed of an x- and y-coordinate, the value contains the pixel data and is 16 x 16 x 2 bytes. So, if you are going to merge maps from different players, I would recommend the concept from 7DTD Leaflet. You read each tile from a map file and combine it with the file's time stamp. Then you check your dictionary if this tile is already in and decide whether to keep the old or new one. I've already done something similar. The game deletes tiles if the map file gets to big (it stores 131,072 tiles max). To circumvent this, I store all tiles in a MapDataStore. Have a look at the method "MapRenderer.getAllTiles", from there on you can easily combine multiple map files.
  17. Version 1.7 Heyho, just released version 1.7, which brings back the ingame waypoints. This also renders the spawn position (bedroll), dropped backpack and quick map marker. Not sure if this code will be compatible with future versions. Since I was not able to use the original game code from Assembly-Csharp.dll, I ripped some code out of it and made a small assembly to read the player profile file. I added a datastore to circumvent the restriction of map files. These can only hold up to 131 072 tiles or be 64 MB big. If you explore a wider area, than the first map tiles will get deleted. As this may take some disk space, you have to activate this under Menu -> Settings -> Edit settings. Let me know what you think or if you found a bug.
  18. Well, this tool only exports your ingame map to a png. It's not really useful for checking a seed, as you have to explore the map first. Wish we had this tool: http://joelhuenink.tumblr.com/post/127193667768/robert-otherwise-known-as-kinyajuu-is-working-on.
  19. This tool still works. It only doesn't render any ingame waypoints. At the moment I'm not sure how to tackle the problem with the reading of the player profiles, so I can't say when this feature will be back in.
  20. Thanks guys for all the feedback. This really cheers me up. And over 250 downloads for the current release, that is really great. @Life_For_Dead I haven't had this error before, so I can only guess. Make sure you have at least .net Framework 4.5 installed. If this doesn't help, please provide some more information. Like, when do you get this error. Or post the entry from your systems event log. Btw, my code broke. The new save file format with Alpha 14 broke the reading of the waypoints. Don't worry, the app will not crash, it simply doesn't render any waypoints. So, now I have to implement a more sophisticated method. I tried to use the original game assembly, but the unity engine uses system calls, which are only allowed for system assemblies. And yes, reverse engineering the games code works, but I'm not really happy with releasing such. Well, I've seen this thread https://7daystodie.com/forums/showthread.php?36649-Player-save-load-code. That might be heading in the right direction, but is very similar to the games code. If you guys have a good idea, please post it below.
  21. Version 1.6 Hi guys and gals, here it is, the brand new version capable of rendering ingame waypoints. Hope you like it. As I am now messing around with the player file (id.ttp), the rendering may break with the next 7DTD release. The POI.csv is extended with a name column (just like in game): Latitude,Longitude,Symbol,Name -400,680,book,"Book store" ;comment -350,680,chest,warehouse Tell me, if you encounter any problems.
  22. Version 1.5 You can now draw your own symbols to a map. This works with a plain CSV file. For the latitude applies: + is north and - is south. For longitude is + east and - west. Latitude,Longitude,Symbol -400,680,book ;comment 400S 680E bookstore -350,680,chest Within the application are these symbols included: book, house, star, fork chest, medic, tick, gun, shield drugs, radiation, hammer, fire Feel free to add own symbols or replace the existing ones! (I recommend a size of 32x32 pixels.) Create a folder called "Resources" in your application directory. Inside this folder create a new one called "png". In there you may put your "<name>.png". Inside the poi.csv you can now use <name> in the symbol column. See this screenshot: And I added some experimental tools (from v1.4 debug): * Font test: Renders an image with all installed fonts. Choose your favorite with ease. * XML to CSV converter: Convert blocks.xml, items.xml and materials.xml into a handy csv file. Maybe interesting for balancing your own mods or if you are curious on which blocks mobs can spawn on. As always, tell me you think.
  23. Version 1.5 beta 1 Here it is, the first version with a command line interface. Tell me what you like and what you want to see improved! (The download is "hidden" here: https://7dtdsinglemaprenderer.codeplex.com/releases/view/617880) 7DTD-SingleMapRenderer.exe /? will print the following help:
  24. Version 1.4 This version brings a small UI improvement, so you can select your save game rather than a map file. And there are new options for rendering the names of region files: (Note: You may change the font and the size to your needs.) Last point: I added a settings.xml to the application directory. Be sure not to put the program under "C:\Program Files" or "C:\Windows", however "C:\ProgramData" or any other directory with full access is fine, like "C:\Users\<username>" or "C:\Temp". (Otherwise the program is not able to write the settings to disk and forgets about everything.) @GaryP: I use XnViewMP as image viewer. A command line version is clearly possible, just give me some time. But please be sure, not to use this tool as a live viewer. 7DtD writes the map file every few seconds and if the reading and writing collides, you may end in a mess.
  25. Just awesome. Thanks for this review! Keep up your great work. I really like your idea about aligning the grid to regions - should come in handy. That's definitely on my list.
  • Create New...