Git Product home page Git Product logo

decima's People

Contributors

jandk avatar mithkr avatar nsacerdote avatar redxeye avatar shadelessfox avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

decima's Issues

Core Editor: Editor for references

Currently, it's impossible to change what file or entry a reference points to.

When choosing what entry it points to, possible entries must be filtered to exclude ones whose type doesn't match the type of the reference.

For example, when editing the Ref<Resource>, it can only point to entries that inherit from the Resource type, e.g. Texture, etc.

Need help, noob here :)

Hi, I'd like to try the tool, but I don't know how to create a project, I'm being asked about paths to some things that I don't know:

image

Sorry if this is a stupid question ๐Ÿ˜„

Could not initialize app

Im having this problem:

"Unrecognized option: --add-opens
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit."

I have the last version of JRE. Can someone help me?

Configuration for projects

A project resembles a game itself.

Every project contains information about a particular game: a path to the executable file, a path to the compressor library, etc.

This information should be exposed in the GUI for easy configuration.

Question .core files vs .stream files

Is it planned to support the export/import/replace of .stream files?

I'm still a noob on how hzd mods work, but I was watching this tutorial => https://youtu.be/_ti1L5UriKM?t=122

And it mentions the .stream files, they are not shown on the tree:
image

But if I search by name, I find it on the "unnamed" category:
image

It would be very useful to have the stream files together with their core files. As far as I understand the stream files have the actual data and the core files is just "metadata".

Core Editor: Display span next to each field

When inspecting raw bytes using an external hex editor, it's quite hard to map these bytes to the corresponding fields shown in Decima Explorer.

It will be useful to see a span (offset + length) of every field next to them.

Unable to save changes

When i make changes /ds/entities/gimmick/structure/construction_rshl.core i couldn't save changes! I got a lot of errors:
java.lang.IllegalStateException: Can't determine size of Java class
at com.shade.decima.model.rtti.registry.providers.JavaTypeProvider$JavaClass.getSize(JavaTypeProvider.java:121)
at com.shade.decima.model.base.CoreBinary.lambda$serialize$0(CoreBinary.java:61)
at java.base/java.util.stream.ReferencePipeline$4$1.accept(ReferencePipeline.java:214)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.IntPipeline.reduce(IntPipeline.java:515)
at java.base/java.util.stream.IntPipeline.sum(IntPipeline.java:473)
at com.shade.decima.model.base.CoreBinary.serialize(CoreBinary.java:61)
at com.shade.decima.ui.editor.core.CoreEditor.doSave(CoreEditor.java:266)
at com.shade.decima.ui.menu.menus.FileMenu$SaveItem.perform(FileMenu.java:108)
at com.shade.platform.ui.menus.impl.MenuManagerImpl.lambda$createMenuItem$1(MenuManagerImpl.java:244)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313)
at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
at java.desktop/javax.swing.AbstractButton.doClick(AbstractButton.java:374)
at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1028)
at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1072)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389)
at java.desktop/java.awt.Component.processEvent(Component.java:6391)
at java.desktop/java.awt.Container.processEvent(Container.java:2266)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Importing textures?

Does this tool allow you to import textures? I have one extracted but the import button is grayed out. Is this not possible or am I just missing something?

Exception when loading windows library on linux

Attempting to follow the wiki instructions for Death Stranding leads to an exception when attempting to load the compressor library:

java.lang.IllegalStateException: java.lang.UnsatisfiedLinkError: Unable to load library '/home/sparr/.steam/steam/steamapps/common/DEATH STRANDING DIRECTORS CUT/oo2core_7_win64.dll':
/home/sparr/.steam/steam/steamapps/common/DEATH STRANDING DIRECTORS CUT/oo2core_7_win64.dll: invalid ELF header
/home/sparr/.steam/steam/steamapps/common/DEATH STRANDING DIRECTORS CUT/oo2core_7_win64.dll: invalid ELF header
Native library (home/sparr/.steam/steam/steamapps/common/DEATH STRANDING DIRECTORS CUT/oo2core_7_win64.dll) not found in resource path (/home/sparr/Downloads/decima/decima-0.1.12/lib/decima-0.1.12.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/decima-ui.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/platform-ui.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/decima-model.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/platform-model.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/logback-classic-1.4.4.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/gson-2.10.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/reflections-0.10.2.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/miglayout-swing-11.0.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/flatlaf-extras-2.6.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/flatlaf-2.6.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/jna-5.12.1.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/picocli-4.7.0.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/logback-core-1.4.4.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/slf4j-api-2.0.1.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/javassist-3.28.0-GA.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/jsr305-3.0.2.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/miglayout-core-11.0.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/svgSalamander-1.1.3.jar)
    at com.shade.platform.ui.controls.tree.TreeModel$LoadingWorker.done(TreeModel.java:345)
    at java.desktop/javax.swing.SwingWorker$5.run(SwingWorker.java:750)
    at java.desktop/javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:848)
    at java.desktop/sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112)
    at java.desktop/javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:858)
    at java.desktop/javax.swing.Timer.fireActionPerformed(Timer.java:311)
    at java.desktop/javax.swing.Timer$DoPostEvent.run(Timer.java:243)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.UnsatisfiedLinkError: Unable to load library '/home/sparr/.steam/steam/steamapps/common/DEATH STRANDING DIRECTORS CUT/oo2core_7_win64.dll':
/home/sparr/.steam/steam/steamapps/common/DEATH STRANDING DIRECTORS CUT/oo2core_7_win64.dll: invalid ELF header
/home/sparr/.steam/steam/steamapps/common/DEATH STRANDING DIRECTORS CUT/oo2core_7_win64.dll: invalid ELF header
Native library (home/sparr/.steam/steam/steamapps/common/DEATH STRANDING DIRECTORS CUT/oo2core_7_win64.dll) not found in resource path (/home/sparr/Downloads/decima/decima-0.1.12/lib/decima-0.1.12.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/decima-ui.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/platform-ui.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/decima-model.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/platform-model.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/logback-classic-1.4.4.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/gson-2.10.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/reflections-0.10.2.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/miglayout-swing-11.0.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/flatlaf-extras-2.6.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/flatlaf-2.6.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/jna-5.12.1.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/picocli-4.7.0.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/logback-core-1.4.4.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/slf4j-api-2.0.1.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/javassist-3.28.0-GA.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/jsr305-3.0.2.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/miglayout-core-11.0.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/svgSalamander-1.1.3.jar)
    at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:307)
    at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:467)
    at com.sun.jna.Library$Handler.<init>(Library.java:192)
    at com.sun.jna.Native.load(Native.java:622)
    at com.shade.decima.model.util.Compressor.<init>(Compressor.java:36)
    at com.shade.decima.model.app.Project.<init>(Project.java:44)
    at com.shade.decima.model.app.ProjectManagerImpl.openProject(ProjectManagerImpl.java:91)
    at com.shade.decima.ui.navigator.impl.NavigatorProjectNode.open(NavigatorProjectNode.java:35)
    at com.shade.decima.ui.navigator.impl.NavigatorProjectNode.loadChildren(NavigatorProjectNode.java:70)
    at com.shade.decima.ui.navigator.impl.NavigatorProjectNode.loadChildren(NavigatorProjectNode.java:23)
    at com.shade.platform.ui.controls.tree.TreeNodeLazy.getChildren(TreeNodeLazy.java:20)
    at com.shade.platform.ui.controls.tree.TreeModel.getChildren(TreeModel.java:285)
    at com.shade.platform.ui.controls.tree.TreeModel$LoadingWorker.doInBackground(TreeModel.java:322)
    at com.shade.platform.ui.controls.tree.TreeModel$LoadingWorker.doInBackground(TreeModel.java:309)
    at java.desktop/javax.swing.SwingWorker$1.call(SwingWorker.java:304)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
    at java.desktop/javax.swing.SwingWorker.run(SwingWorker.java:343)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    at java.base/java.lang.Thread.run(Thread.java:1623)
    Suppressed: java.lang.UnsatisfiedLinkError: /home/sparr/.steam/steam/steamapps/common/DEATH STRANDING DIRECTORS CUT/oo2core_7_win64.dll: invalid ELF header
        at com.sun.jna.Native.open(Native Method)
        at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:197)
        ... 19 more
    Suppressed: java.lang.UnsatisfiedLinkError: /home/sparr/.steam/steam/steamapps/common/DEATH STRANDING DIRECTORS CUT/oo2core_7_win64.dll: invalid ELF header
        at com.sun.jna.Native.open(Native Method)
        at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:210)
        ... 19 more
    Suppressed: java.io.IOException: Native library (home/sparr/.steam/steam/steamapps/common/DEATH STRANDING DIRECTORS CUT/oo2core_7_win64.dll) not found in resource path (/home/sparr/Downloads/decima/decima-0.1.12/lib/decima-0.1.12.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/decima-ui.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/platform-ui.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/decima-model.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/platform-model.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/logback-classic-1.4.4.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/gson-2.10.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/reflections-0.10.2.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/miglayout-swing-11.0.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/flatlaf-extras-2.6.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/flatlaf-2.6.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/jna-5.12.1.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/picocli-4.7.0.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/logback-core-1.4.4.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/slf4j-api-2.0.1.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/javassist-3.28.0-GA.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/jsr305-3.0.2.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/miglayout-core-11.0.jar:/home/sparr/Downloads/decima/decima-0.1.12/lib/svgSalamander-1.1.3.jar)
        at com.sun.jna.Native.extractFromResourcePath(Native.java:1145)
        at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:281)
        ... 19 more

There may be a way to get this working by loading the library through wine or proton. Or some of the functionality may be useful without the library?

Core Editor: Allow adding/removing elements of arrays

As the title says, you can't do that.

When creating a new element, a dialog must be present with all possible types inherited from the contained type of that array.

For example, when having the Array<Resource>, a user must choose from a set of types that inherit from the Resource type, e.g. Texture, LocalizedTextResource, etc.

Unable to start release 0.1.14

I got this message:
Unrecognized option: --add-opens
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

DMF export is broken

DMF export is broken after 0.1.9 (last working release). I have bisect with git and found that export is broken since commit
c81ef53

~/Development/decima> git bisect reset bisect/bad
Vorherige Position von HEAD war e616f19 Core Editor: Add shortcut for "Inspect Value"
HEAD ist jetzt bei c81ef53 RTTI: Improve data source reading
~/Development/decima> gradlew build

BUILD SUCCESSFUL in 1s
9 actionable tasks: 7 executed, 2 up-to-date
~/Development/decima> tar -xf build/distributions/decima-0.1.9.tar 
~/Development/decima> ./decima-0.1.9/bin/decima
20:28:45.470 [main] INFO org.reflections.Reflections - Reflections took 114 ms to scan 1 urls, producing 192 keys and 777 values
20:28:46.439 [SwingWorker-pool-1-thread-3] DEBUG com.shade.decima.model.rtti.registry.providers.ExternalTypeProvider - Found message handler for type 'DataBufferResource' that handles message 'MsgReadBinary'
20:28:46.444 [SwingWorker-pool-1-thread-3] DEBUG com.shade.decima.model.rtti.registry.providers.ExternalTypeProvider - Found message handler for type 'LocalizedTextResource' that handles message 'MsgReadBinary'
20:28:46.446 [SwingWorker-pool-1-thread-3] DEBUG com.shade.decima.model.rtti.registry.providers.ExternalTypeProvider - Found message handler for type 'PhysicsShapeResource' that handles message 'MsgReadBinary'
20:28:46.448 [SwingWorker-pool-1-thread-3] DEBUG com.shade.decima.model.rtti.registry.providers.ExternalTypeProvider - Found message handler for type 'WaveResource' that handles message 'MsgReadBinary'
20:28:46.449 [SwingWorker-pool-1-thread-3] DEBUG com.shade.decima.model.rtti.registry.providers.ExternalTypeProvider - Found message handler for type 'IndexArrayResource' that handles message 'MsgReadBinary'
20:28:46.450 [SwingWorker-pool-1-thread-3] DEBUG com.shade.decima.model.rtti.registry.providers.ExternalTypeProvider - Found message handler for type 'TextureList' that handles message 'MsgReadBinary'
20:28:46.451 [SwingWorker-pool-1-thread-3] DEBUG com.shade.decima.model.rtti.registry.providers.ExternalTypeProvider - Found message handler for type 'Texture' that handles message 'MsgReadBinary'
20:28:46.456 [SwingWorker-pool-1-thread-3] DEBUG com.shade.decima.model.rtti.registry.providers.ExternalTypeProvider - Found message handler for type 'VertexArrayResource' that handles message 'MsgReadBinary'
20:28:46.458 [SwingWorker-pool-1-thread-3] DEBUG com.shade.decima.model.rtti.registry.providers.ExternalTypeProvider - Found message handler for type 'UITexture' that handles message 'MsgReadBinary'
20:28:46.460 [SwingWorker-pool-1-thread-3] DEBUG com.shade.decima.model.rtti.registry.providers.ExternalTypeProvider - Found message handler for type 'Pose' that handles message 'MsgReadBinary'
20:28:46.930 [ForkJoinPool.commonPool-worker-1] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/DLC1_Arabic.bin'
20:28:46.938 [ForkJoinPool.commonPool-worker-3] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/DLC1_Italian.bin'
20:28:46.950 [ForkJoinPool.commonPool-worker-3] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/DLC1_German.bin'
20:28:46.961 [ForkJoinPool.commonPool-worker-3] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/DLC1_Russian.bin'
20:28:46.962 [ForkJoinPool.commonPool-worker-5] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/Initial_LATAMSP.bin'
20:28:46.964 [ForkJoinPool.commonPool-worker-4] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/Initial_German.bin'
20:28:46.971 [ForkJoinPool.commonPool-worker-3] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/DLC1_Polish.bin'
20:28:46.982 [ForkJoinPool.commonPool-worker-3] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/DLC1_Portugese.bin'
20:28:46.983 [ForkJoinPool.commonPool-worker-2] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/Remainder_LATAMPOR.bin'
20:28:46.986 [ForkJoinPool.commonPool-worker-1] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/Initial_English.bin'
20:28:46.992 [ForkJoinPool.commonPool-worker-5] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/Initial_LATAMPOR.bin'
20:28:46.992 [ForkJoinPool.commonPool-worker-3] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/DLC1_French.bin'
20:28:47.003 [ForkJoinPool.commonPool-worker-3] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/DLC1_Spanish.bin'
20:28:47.013 [ForkJoinPool.commonPool-worker-3] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/DLC1_English.bin'
20:28:47.017 [ForkJoinPool.commonPool-worker-5] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/Initial_Polish.bin'
20:28:47.017 [ForkJoinPool.commonPool-worker-4] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/Initial_Portugese.bin'
20:28:47.047 [ForkJoinPool.commonPool-worker-2] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/Remainder_LATAMSP.bin'
20:28:47.052 [ForkJoinPool.commonPool-worker-5] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/Initial_Russian.bin'
20:28:47.054 [ForkJoinPool.commonPool-worker-2] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/FGRWin32.bin'
20:28:47.066 [ForkJoinPool.commonPool-worker-4] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/Initial_Italian.bin'
20:28:47.087 [ForkJoinPool.commonPool-worker-5] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/Remainder_French.bin'
20:28:47.103 [ForkJoinPool.commonPool-worker-4] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/Initial_Spanish.bin'
20:28:47.110 [ForkJoinPool.commonPool-worker-5] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/Remainder_Spanish.bin'
20:28:47.120 [ForkJoinPool.commonPool-worker-5] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/Remainder_English.bin'
20:28:47.122 [ForkJoinPool.commonPool-worker-4] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/Initial_French.bin'
20:28:47.124 [ForkJoinPool.commonPool-worker-4] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/DLC1_LATAMPOR.bin'
20:28:47.126 [ForkJoinPool.commonPool-worker-5] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/Initial_Arabic.bin'
20:28:47.131 [ForkJoinPool.commonPool-worker-4] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/DLC1_LATAMSP.bin'
20:28:47.135 [ForkJoinPool.commonPool-worker-5] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/Remainder_Portugese.bin'
20:28:47.141 [ForkJoinPool.commonPool-worker-5] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/Remainder_Polish.bin'
20:28:47.145 [ForkJoinPool.commonPool-worker-4] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/Remainder_Italian.bin'
20:28:47.154 [ForkJoinPool.commonPool-worker-5] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/Remainder_Russian.bin'
20:28:47.155 [ForkJoinPool.commonPool-worker-4] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/Remainder_German.bin'
20:28:47.164 [ForkJoinPool.commonPool-worker-5] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/Remainder_Arabic.bin'
20:28:47.269 [ForkJoinPool.commonPool-worker-3] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/DLC1.bin'
20:28:47.281 [ForkJoinPool.commonPool-worker-2] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/Patch.bin'
20:28:47.374 [ForkJoinPool.commonPool-worker-1] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/Initial.bin'
20:28:47.459 [SwingWorker-pool-1-thread-3] INFO com.shade.decima.model.packfile.PackfileManager - Mounted '/data/SteamLibrary/steamapps/common/Horizon Zero Dawn/Packed_DX12/Remainder.bin'
20:29:03.861 [SwingWorker-pool-1-thread-3] INFO com.shade.decima.ui.data.viewer.model.DMFExporter - Exporting RegularSkinnedMeshResource
java.lang.RuntimeException: java.lang.IndexOutOfBoundsException
        at com.shade.decima.ui.data.viewer.model.ModelViewerPanel.lambda$new$1(ModelViewerPanel.java:79)
        at com.shade.platform.ui.dialogs.ProgressDialog$1.doInBackground(ProgressDialog.java:37)
        at java.desktop/javax.swing.SwingWorker$1.call(SwingWorker.java:304)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.desktop/javax.swing.SwingWorker.run(SwingWorker.java:343)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.IndexOutOfBoundsException
        at java.base/java.util.zip.DeflaterOutputStream.write(DeflaterOutputStream.java:203)
        at java.base/java.io.ByteArrayInputStream.transferTo(ByteArrayInputStream.java:208)
        at com.shade.decima.ui.data.viewer.model.dmf.DMFInternalBuffer.serialize(DMFInternalBuffer.java:26)
        at com.shade.decima.ui.data.viewer.model.DMFExporter$JsonBufferSerializer.serialize(DMFExporter.java:1515)
        at com.shade.decima.ui.data.viewer.model.DMFExporter$JsonBufferSerializer.serialize(DMFExporter.java:1511)
        at com.google.gson.internal.bind.TreeTypeAdapter.write(TreeTypeAdapter.java:88)
        at com.google.gson.Gson.toJson(Gson.java:825)
        at com.google.gson.Gson.toJsonTree(Gson.java:695)
        at com.google.gson.Gson.toJsonTree(Gson.java:672)
        at com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl.serialize(TreeTypeAdapter.java:172)
        at com.shade.decima.ui.data.viewer.model.DMFExporter$JsonListSerializer.serialize(DMFExporter.java:1505)
        at com.shade.decima.ui.data.viewer.model.DMFExporter$JsonListSerializer.serialize(DMFExporter.java:1497)
        at com.google.gson.internal.bind.TreeTypeAdapter.write(TreeTypeAdapter.java:88)
        at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:70)
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:196)
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:366)
        at com.google.gson.Gson.toJson(Gson.java:825)
        at com.shade.decima.ui.data.viewer.model.DMFExporter.export(DMFExporter.java:115)
        at com.shade.decima.ui.data.viewer.model.ModelViewerPanel.export(ModelViewerPanel.java:145)
        at com.shade.decima.ui.data.viewer.model.ModelViewerPanel.lambda$new$1(ModelViewerPanel.java:76)
        ... 7 more
20:29:08.457 [AWT-EventQueue-0] ERROR com.shade.decima.ui.Application - Unhandled exception
java.lang.RuntimeException: java.lang.IndexOutOfBoundsException
        at com.shade.decima.ui.data.viewer.model.ModelViewerPanel.lambda$new$1(ModelViewerPanel.java:79)
        at com.shade.platform.ui.dialogs.ProgressDialog$1.doInBackground(ProgressDialog.java:37)
        at java.desktop/javax.swing.SwingWorker$1.call(SwingWorker.java:304)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.desktop/javax.swing.SwingWorker.run(SwingWorker.java:343)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.IndexOutOfBoundsException: null
        at java.base/java.util.zip.DeflaterOutputStream.write(DeflaterOutputStream.java:203)
        at java.base/java.io.ByteArrayInputStream.transferTo(ByteArrayInputStream.java:208)
        at com.shade.decima.ui.data.viewer.model.dmf.DMFInternalBuffer.serialize(DMFInternalBuffer.java:26)
        at com.shade.decima.ui.data.viewer.model.DMFExporter$JsonBufferSerializer.serialize(DMFExporter.java:1515)
        at com.shade.decima.ui.data.viewer.model.DMFExporter$JsonBufferSerializer.serialize(DMFExporter.java:1511)
        at com.google.gson.internal.bind.TreeTypeAdapter.write(TreeTypeAdapter.java:88)
        at com.google.gson.Gson.toJson(Gson.java:825)
        at com.google.gson.Gson.toJsonTree(Gson.java:695)
        at com.google.gson.Gson.toJsonTree(Gson.java:672)
        at com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl.serialize(TreeTypeAdapter.java:172)
        at com.shade.decima.ui.data.viewer.model.DMFExporter$JsonListSerializer.serialize(DMFExporter.java:1505)
        at com.shade.decima.ui.data.viewer.model.DMFExporter$JsonListSerializer.serialize(DMFExporter.java:1497)
        at com.google.gson.internal.bind.TreeTypeAdapter.write(TreeTypeAdapter.java:88)
        at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:70)
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:196)
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:366)
        at com.google.gson.Gson.toJson(Gson.java:825)
        at com.shade.decima.ui.data.viewer.model.DMFExporter.export(DMFExporter.java:115)
        at com.shade.decima.ui.data.viewer.model.ModelViewerPanel.export(ModelViewerPanel.java:145)
        at com.shade.decima.ui.data.viewer.model.ModelViewerPanel.lambda$new$1(ModelViewerPanel.java:76)
        ... 7 common frames omitted

Arbitrary data search within packfiles

It's quite hard to find useful bits of information by blindly inspecting each core file one at a time.

It will be a lot faster to scan the entire packfile for a given sequence of bytes, words, dwords, and etc and then show core entries that contain these.

an error occurred during program exectution

version: 0.1.18
jvm: 17.0.9
DEATH STRANDING DIRECTORS CUT

java.lang.IllegalArgumentException: Class 'UnknownEntry' has no field called 'EffectType'

java.lang.RuntimeException: java.lang.IllegalArgumentException: Class 'UnknownEntry' has no field called 'EffectType'
at com.shade.decima.ui.data.viewer.model.ModelExportDialog.lambda$buttonPressed$2(ModelExportDialog.java:132)
at com.shade.platform.ui.dialogs.ProgressDialog$1.doInBackground(ProgressDialog.java:47)
at java.desktop/javax.swing.SwingWorker$1.call(SwingWorker.java:304)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.desktop/javax.swing.SwingWorker.run(SwingWorker.java:343)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:842)
Caused by: java.lang.IllegalArgumentException: Class 'UnknownEntry' has no field called 'EffectType'
at com.shade.decima.model.rtti.RTTIClass.getField(RTTIClass.java:43)
at com.shade.decima.model.rtti.objects.RTTIObject.get(RTTIObject.java:21)
at com.shade.decima.model.rtti.objects.RTTIObject.str(RTTIObject.java:49)
at com.shade.decima.ui.data.viewer.model.dmf.DMFExporter.exportMaterial(DMFExporter.java:1244)
at com.shade.decima.ui.data.viewer.model.dmf.DMFExporter.exportDSMeshData(DMFExporter.java:1217)
at com.shade.decima.ui.data.viewer.model.dmf.DMFExporter.regularSkinnedMeshResourceToModel(DMFExporter.java:987)
at com.shade.decima.ui.data.viewer.model.dmf.DMFExporter.exportRegularSkinnedMeshResource(DMFExporter.java:443)
at com.shade.decima.ui.data.viewer.model.dmf.DMFExporter.exportResource(DMFExporter.java:130)
at com.shade.decima.ui.data.viewer.model.dmf.DMFExporter.export(DMFExporter.java:106)
at com.shade.decima.ui.data.viewer.model.dmf.DMFExporter.export(DMFExporter.java:93)
at com.shade.decima.ui.data.viewer.model.ModelExportDialog.lambda$buttonPressed$2(ModelExportDialog.java:127)
... 7 more

Support for editing RTTI object fields

The purpose of this tool is not only to show data but also to allow modifying it.

An entire model for editors must be built to support such a feature.

We'll need to figure out a way of tracking our changes. There are some problems:

  1. An editor may be "dirty" e.g., contain changes. Since a single editor represents a single core file, we will repack an entire packfile after editing any file and saving it.
  2. We could track two different changes levels: the first is packfile-based, and the second one is core file-based (as described in no.1). Then, after editing a core file, we may submit it to the upper level (and maybe store it in some database to allow restarting the application without losing local changes?), and then the packfile could be repacked.

Also, we'll need to figure out a way of repacking data in the first place:

  1. We could write all changes to the "patch" packfile
  2. We could repack the source packfile (adaptive "in-place" repacking if possible, beware of segmentation)

Packfile Manager: Validate packfile structure before loading it

In some crazy scenarios, a packfile might contain invalid offsets and other values. It won't be evident until you try to open a file or two, then you will be welcomed with bizarre-looking errors:

Caused by: java.lang.ArrayIndexOutOfBoundsException: arraycopy: last source index 339058 out of bounds for byte[262144]
    at java.base/java.lang.System.arraycopy(Native Method)
    at com.shade.decima.model.packfile.Packfile$PackfileInputStream.read(Packfile.java:175)
    at java.base/java.io.InputStream.read(InputStream.java:218)
    at com.shade.decima.model.packfile.Packfile$PackfileInputStream.readAllBytes(Packfile.java:122)
    at com.shade.decima.model.packfile.Packfile.extract(Packfile.java:51)
    at com.shade.decima.ui.editor.binary.BinaryEditor$1.doInBackground(BinaryEditor.java:36)
    at com.shade.decima.ui.editor.binary.BinaryEditor$1.doInBackground(BinaryEditor.java:32)
    at java.desktop/javax.swing.SwingWorker$1.call(SwingWorker.java:304)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.desktop/javax.swing.SwingWorker.run(SwingWorker.java:343)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)

We will need to:

  • Validate offsets and file/chunk count found in the header
  • Validate file offsets and their lengths
  • Validate chunk offsets and their lengths

instructions for how to create a new project

Please add instructions for creating a new project. I'm able to add executable and Oodle library but am not sure what you mean by game packfile folder path? is that "\DEATH STRANDING DIRECTORS CUT\data"? Also what/where is the RTTl metadata path? I can't find any json in the install. I've also unpacked the entire game with decima without the json file.

Stop treating archive names as hashes

DS uses MurmurHash3 of the original archive name, HZD uses human-readable archive names.

This causes problems when creating hash โ‡” archive mappings:

hashToArchive.put(Long.reverseBytes(Long.parseUnsignedLong(hash, 0, 16, 16)), archive);

There's no purpose in having such mappings. Archives must be referenced by their original name.

To provide human-readable names for DS, we could create an external file with mappings and use it from the UI part only.

Load `RTTI` information and use it for fetching files

Decima Engine uses RTTI that represents type information at runtime. There are hundreds of different objects for which we don't want to write wrappers. Instead, we can use RTTI information to reconstruct object hierarchy for reading, writing, pretty-printing, and displaying these objects.

But we should be aware of internal objects that are not exposed via RTTI.

Director's Cut Not Loading Repacked BIN

This tool is coming along nicely, yet I cannot seem to get the game to load after repacking even just one BIN file.
From what I understand, Death Stranding will not load any BIN files other than the default ones it comes with it and so it is needed to repack and not create a new independant BIN file.
Is there a specific repack method that needs to be done to keep it the same as the original BIN? Maybe possible there is a method to get DS to load other BINs and I'm just totally missing it.
The tool "Decima Explorer" seems to do alright for repacking, but gives no export options so not sure what should be selected when saving from this tool.
I've tried pretty minor edits to core file values and have confirmed the Decima-edited exported core file can repack fine in Decima Explorer, just not in this tool.
I'm currently using ds_paths.txt.gz as there is not a different one for dsdc- not sure if that is correct.

Start differentiating between DS and DS: Director's Cut

Currently, we assume that both games refer to GameType#DS.

This breaks support for an ongoing mesh exporter that expects specific fields to exist, but they don't.

Acceptance criteria:

  • Introduce a new game type, GameType#DSDC
  • Make sure existing value handlers, viewers, and editors work correctly in DS and DSDC

Show exceptions within dedicated window (popup)

Currently, every unhandled exception is shown only in the console.

Running the application standalone or with the obstructed console, it would be unclear why a particular behavior does not happen.

By showing a popup with the error, it would make clear that something went wrong.

The application hangs when loading a lot of lazy editors

After opening a lot of editors and restarting the application, it will attempt to load them all and will do it indefinitely.

Ideally, it should initialize the active editor only.

This problem needs a research. Can be solved by decreasing the amount of opened editors.

Where is "compressor library" and "type information" located for Horizon Zero Dawn?

I'm trying to get into modding Horizon Zero Dawn and come across this application. If there is a comprehensive guide for it, that would also be appreciated. When creating a new project, the program asks for following information:
image
Compressor library asks for a .so file and type information asks for a .json file. Tried searching for these file extensions in my game directory but couldn't find anything.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.