Mods / Kingdom of Science: Photographic Memories
Author: Moby_
Side: Both
Created: Mar 12th 2023 at 1:27 PM
Last modified: Jun 10th at 12:50 PM
Downloads: 11994
Follow Unfollow 215
Latest file for Various v1.19.x:
kosphotography_1.4.3.zip
1-click install
This mod requires ChemistryLib (1.1.0 or higher).
The new camera model was made by Ruddi
If you find a bug, have a suggestion or want to talk, feel free to join my Discord server!
About the mod
Kingdom of Science: Photographic Memories is the second mod of the Kingdom of Science series, a series that aims to add modern-ish technologies in a vanilla-friendly, primitive way.
(also this mod is my magnum opus, don't expect me to make things as great as this too much xD)
It adds photography to the game, in a vanilla-friendly way.
In this mod, you'll find a few new items:
The Camera, the item you'll need to use if you want to take a picture. To take a picture, hold a camera (you can hide your GUIs with f4 to remove the crosshair as well), aim and right-click. The picture will work like a screenshot: you can take selfies using the third-person camera, for instance.
You'll need to hold photographic paper in your off-hand to take a picture.
Photographic paper, you'll need to hold it in your off-hand if you want to take a picture. It's made in the crafting grid with a container containing silver nitrate and a salted paper.
Photograph, an exposed photographic paper. This is the item that you'll get after taking a picture. You can put it (using right-click) in any of the photograph frames, and you can rename it using the /photoname [PhotographNameWithoutSpaces] command.
You can also duplicate a photograph by right-clicking with it in the air while having photographic paper in the off-hand. (note: names aren't duplicated)
Salted paper and Silver nitrate are the ingredients that you'll need to make photographic paper. Their recipes are in the handbook.
Photograph frames are the blocks used to display photographs. Three variants exist: framed (on the wall, like a painting), borderless (similar to frame, but fills the entire block without any border) and a smaller frame (nightstand frame-style), that can be placed on top of any solid block.
Configuration
Currently there is one configuration option: photograph resolution. You can set it as any power of two.
The default resolution is 128x, which means that a 4k texture atlas should support over 500 pictures loaded at the same time on client side. 256x would support around 144 concurrent pictures on an otherwise unmodded game.
Note that starting in 1.19.0, the texture atlas is now infinite, so it's not really a problem.
Development
Planned features:
- Color photography. Would be pretty expensive, probably based on the Lumière Autochrome?
- Better feedback when taking a picture (like flashing the screen), disable the GUI automatically... Make the thing more user-friendly
- A way to export pictures after they're taken (get them as a png or a bmp)
- A way to load custom pictures (ones that weren't taken in-game). Maybe this could work with the way to duplicate pictures? export + load?
- Maybe add actual developing, so pictures will be more labor-intensive? Probably some recipe balancing, photography might not be expensive enough
Known issues:
- Sometimes the game crashes when handling photographs in your inventory (mostly when shift+clicking). This is probably due to the fact that photographs hold 65 kilobytes of data each and the inventory system isn't that fond of moving such a large amount of data instantly.
- When not crashing, it's common to experience lag spikes when handling photographs. Again, this is probably due to the large amount of data that they hold.
- Unpredictable behavior that could involve crashes when changing the painting LOD in the settings while having already taken pictures in a world
- The pictures look dark. I already multiplied their brightness by three, I don't really know what to do without risking severe overexposure and artifacts but I'll look into that. Mostly fixed by adding automatic exposure
Translation:
English and French by myself
Ukrainian by Omi
Getting a client crash when trying to load onto a dedicated server with the most recent version (1.4.2). Switching back over to 1.4.1 works. I also noticed that 1.4.2 contains a zip for the 1.3.3 version of the mod inside it?
System.Exception: Don't know how to instantiate item of class 'ItemCamera' did you forget to register a mapping?
at Vintagestory.Common.ClassRegistry.CreateItem(String itemClass) in VintagestoryLib\Common\ClassRegistry.cs:line 274
at Vintagestory.Common.ItemTypeNet.ReadItemTypePacket(Packet_ItemType packet, IWorldAccessor world, ClassRegistry registry) in VintagestoryLib\Common\Network\ItemTypeNet.cs:line 195
at Vintagestory.Client.NoObf.ClientSystemStartup.PopulateItems(List`1 items, Int32 listSize) in VintagestoryLib\Client\Systems\Startup.cs:line 570
at Vintagestory.Client.NoObf.ClientSystemStartup.LoadItemTypes() in VintagestoryLib\Client\Systems\Startup.cs:line 388
at Vintagestory.Client.NoObf.ClientSystemStartup.HandleServerAssets_Step1() in VintagestoryLib\Client\Systems\Startup.cs:line 341
at Vintagestory.API.Common.TyronThreadPool.<>c__DisplayClass12_0.<QueueTask>b__0(Object a) in VintagestoryApi\Common\TyronThreadPool.cs:line 120
at System.Threading.QueueUserWorkItemCallback.Execute()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart()
I've really enjoyed taking photographs with this mod, Im just seconding what Romix said, I would love to see everything from the Planned features. color photography with a limited color-depth would look awesome, and I think adding developing would (like youve said) add a more appropriate level of labor involved, and personally I would just love to have a little development area. Im excited for all your future mods, Im using all but jonas cycle right now and very much enjoying them!
Lumière Autochrome as a basis for the color photography would be good, but I would argue color wouldn't be right in a game like this. Sepia, however, would be perfect alongside the pre-existing silver.
I'm having an issue where this mod stops you from disabling the HUD, and after testing, it seems to cause this problem regardless of what other mods are installed.
I would really like to see everything from the "Planned Features" list! Very atmospheric and good mod. Runs on version 1.19.4.😍
Jobnor Joy of Painting has a resolution cap at 32x (due to having three channels for color, they store a lot more data than photographs), but you can split pictures so they span across multiple blocks to get more pixels
oh, shucks! does that mod have a resolution cap? i'm hoping to import images that are slightly less crunchy than base game res lol
Jobnor I added custom image import to Joy of Painting so it's probably not going to come to KoS:Photographic Memories :)
Although I still want to make a way to duplicate photos between worlds, but that might use Itemizer's planned "attributes copy" feature
very excited to be able to import custom images, ehehe
Pursec I'm not really sure why that happens but i'll check it. Also, if you change the LOD from 7 to 8 to take "some 256x photos", note that they'll go back to rendering at 128x if you ever put the LOD down again.
Now that 1.19 fixed texture atlases, I might turn photograph resolution into a feature at some point. Like, with a better camera come better pictures, or have it be a tool setting (like the propick things)
Get this crash if I modify the Photograph LOD in the config (trying to just change it from 7 to 8 for some 256x photos) and load into an already made world (which has a photo placed already in it, taken with the 128x/7LOD config). Tested on a brand new world with the modified config and works right as rain with the modified value.
System.DivideByZeroException: Attempted to divide by zero.
at kosphotography.BlockEntityPhotograph.genPhoto() in D:\Documents\Developpement\_Vintage Story\vsmods_vscode\kosphotography\kosphotography\src\BlockEntity\BlockEntityPhotograph.cs:line 160
at kosphotography.BlockEntityPhotograph.FromTreeAttributes(ITreeAttribute tree, IWorldAccessor worldAccessForResolve) in D:\Documents\Developpement\_Vintage Story\vsmods_vscode\kosphotography\kosphotography\src\BlockEntity\BlockEntityPhotograph.cs:line 124
at Vintagestory.Client.NoObf.ClientChunk.AddOrUpdateBlockEntityFromPacket(Packet_BlockEntity p, ClientMain game) in VintagestoryLib\Client\Model\ClientChunk.cs:line 437
at Vintagestory.Client.NoObf.GeneralPacketHandler.HandleBlockEntities(Packet_Server packet) in VintagestoryLib\Client\Systems\GeneralPacketHandler.cs:line 423
at Vintagestory.Client.NoObf.ClientMain.ExecuteMainThreadTasks(Single deltaTime) in VintagestoryLib\Client\ClientMain.cs:line 769
at Vintagestory.Client.GuiScreenRunningGame.RenderToPrimary(Single dt) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenRunningGame.cs:line 200
at Vintagestory.Client.ScreenManager.Render(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 675
at Vintagestory.Client.ScreenManager.OnNewFrame(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 650
at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame(FrameEventArgs e) in VintagestoryLib\Client\ClientPlatform\GameWindow.cs:line 88
at OpenTK.Windowing.Desktop.GameWindow.Run()
at Vintagestory.Client.ClientProgram.Start(ClientProgramArgs args, String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 318
at Vintagestory.Client.ClientProgram.<>c__DisplayClass9_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 128
at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 93
Mendall Good idea! There are a few pictures on the mod banner but I guess they're kinda hard to see, I'll check to see if I can use some of the screenshots sent on discord by people using the mod (they got better pictures than what I can do, and some in multiplayer :D)
A mod of this type seems to me to be screaming out for a few screenshots of sample photos so we can see what to expect.
Novalee ChemistryLib is a purely json mod, it's not going to break probably ever. Vintage Story is amazing for mod backwards compatibility.
There are no known issues with Lavoisier in 1.19 either.
I'm a bit confused; This says it's for 1.19, but the chemistrylib mod it depends on is for 1.18
Does chemistrylib still work? Does Lavoisier?
Hello, that’s 1.19 friendly ? Really great mod.
It's working again and it is glorious!
Boukyaku Just finished college today so I'm finally free (or at least more free) to get back to modding, I haven't made it work but I have a potential lead, I'll try that.
Thank you for liking the KoS mods :D
Once I figure out how .NET7 modding works, I'll definitely get back to it
Photographic Memories is also one of my favorite mods so I definitely want to make it work again x)
(in fact, I haven't even tried to fix the other KoS mods yet, I think that they're mostly fine but I just really want KoS:PM to work again)
Hi, any luck making it work? This is my favorite mod, so I'm looking forward to using it on 1.19 and beyond.
Btw love all of your Kingdom of Science mods, so thank you!
artemax44 The significant changes brought by .NET 7 made the mod incompatible, I'm currently trying to make it work
Moby_
The mod for version 1.18.8 with the new .NET7, doesn't work. No error comes out. The mod just doesn't show up in the game. It is as if he did not have it on, that he does not recognize it.
I will wait for it to be resolved.
I believe this isn't compatible with the .NET7 build of the game, doesn't show up in singleplayer and causes a crash on mutliplayer.
Switched to main branch and now it works fine.
I'm so close to declaring this as my favorite mod, but I have two major issues with it:
120 days to barrel mix spirit of nitre is insane. Lavoisier makes it faster but I have other issues with that mod (mostly sub-0.1l amounts not being present/readble, making portioning extremely difficult).
The other issue is that the photos don't seem to sync to other players in multiplayer, until they go pick the photo out of the frame, and then put it back.
Those two fixed, as a photographer, would make this my top 1 "I will always run this as long as it's working" mod. On the note of pictures being dark, they seem a bit more easily viewed when there's sunlight directly on them; artificial light from torches, lanterns, etc. don't seem to illuminate them at all.
Wow interesting, I'd like to add a suggestion about adding some obscures cameras, collodion process by Scott Archer, maybe some daguerrotype method (some copper plate/glass plate with thin layer of silver or brass plate) or more cheaper variant of first negative ligth sensetive material is calotype (paper that washed with silver nitrate water or silver iodide) of course it can be reworked and adapted to the game process with big amount of simplifications 😊
You could try to add flash overlay by using sleeping overlay as example
Ruyeex Sadly you can't, I don't think the book renderer can handle images... And I know that it can't handle storing items.
I might see if it would be possible to create a book variant with illustrations though, although I'll have to optimise photograph items first, holding potentially megabytes of data in a single item slot will surely crash the game a lot.
But can you add photos on books?
Finally I can rest with a old case of my suggestion
simply awesome!!
What a fabulious idea! Likely will help with someones, "Drifters in the mist." documentary.
The best mod in VS history