expired6978 / skse64plugins Goto Github PK
View Code? Open in Web Editor NEWCollection of all SKSE64 compatible plugins
Collection of all SKSE64 compatible plugins
How difficult would it be to adapt SKEE to SKSE VR? It's more than just a recompile I guess. I actually only need the nioverride functionality. Could that be done? Or is it a lot of work to accomplish this?
I've got a reproducible crash to report:
Using the Bodygen feature with morphs created for the vanilla CBBE armors via BodySlide will always crash my game after minutes or even seconds of playing. I've created a minimal load order to make sure the problem stems from that feature:
https://pastebin.com/tTMZ3drK
This is my skee64.ini:
https://pastebin.com/HZqL03NS
In my test game I just run from Solitude towards Dragonbridge. It will crash no later than Dragonbridge. Setting bEnableBodyGen=0 will completely fix all crashes, which I have also confirmed with different saves in different locations. But obviously this no solution since I'd like to use the feature.
Setting bParallelMorphing to 0 or changing iLoadMode will make the CTD happen sooner.
I've created both my morphs.ini and templates.ini in meshes\actors\character\BodyGenData\RaceMenu.esp. If somebody needs them for reproducing the crash I can attach them.
Finally skee64.log with bEnableBodyGen=1 and a crash in the end:
https://pastebin.com/fwDes2qa
And same run from Solitude to Dragonbridge with bEnableBodyGen=0 and no crash in the end:
https://pastebin.com/WWpg1zhG
Not that I really have a perfectly stable game, no crashes whatsoever. As soon as BodyGen is activated there will be crashes left and right.
i can't seem to get the nioverride that comes with racemenu to work, any highheels that require are clipping in the ground
Instant CTD on showracemenu. Details: Previous successful conversion to SE. Swapped out old .dll and .ini files for newest version provided in skee. Using MO2, only SKSE64 and Racemenu activated. Previous test save and coc riverwood had same issue.
Memory Leak
skee64.dll is causing a memory leak. This is very noticeable in densely populated locations and almost imperceptibly in dungeons where there are no people. If use mods that add NPCs, for example Immersive Wenches, Deadly Wenches, memory leaks interfere with the game very much.
1.We go into any house in Whiterun and exit. I have + 200 Mb. We repeat, + 200 Mb more.
2. Fast travel Whiterun - Morphal - Solitude - Danstar - Winterhold - Windhelm - Riften - Ivarsted - Whiterun I get +2 Gb leaks. I repeat +2 Gb leaks.
The more NPCs, the more memory leak. Rather, when you revisit the cell, the memory for the NPC is re-allocated.
I started a new game, ran RaceMenu + Immersive Wenches + Deadly Wenches and got the problem. Then I hid skee64.dll in MO2.
and the problem was gone.
PS.
Wenches have almost no scripts.
Same with Interesting NPCs
Forgotten Vale walkthrough does not give any memory leaks
PSS.
On version 4.13 the same problem
Disabling .esp doesn't help. Dll only
Hi Expired. This is an issue for BodyGen.
For people using long templates lines, BSReadLine reads only 1024 characters, where lines can have more.
I'd suggest you to extend the buffer and the number of character read.
If you want to know more on how this issue showed up, here's where I was helping someone having it:
https://www.loverslab.com/topic/90812-jbs2bg-bodyslide-to-bodygen-convertergenerator/?do=findComment&comment=2372060
Thanks.
I've encountered a CTD while playing with the latest skee64/Racemenu version
Here's a crash log, via the .NET framework.
Crash_2018_12_28_23-29-59.txt
The hudextension.dll is causing CTD after updating for the latest Racemenu mod... Is it gonna be fixed or updated too?
After playing for a few hours and creating multiple saves, both auto and manual triggered saves. When restarting the game the next day, I selected the latest save and game will CTD. This happens after the game loading screen with the 3d item and 'fun fact' about skyrim is displayed for a few moments.
examined skse64 log and found: (note: i truncated paths in logs to show only relative to install dir)
checking plugin ...\SteamLibrary\steamapps\common\Skyrim Special Edition\Data\SKSE\Plugins\chargen.dll
couldn't load plugin ...\SteamLibrary\steamapps\common\Skyrim Special Edition\Data\SKSE\Plugins\chargen.dll (Error 193)
checking plugin ...\SteamLibrary\steamapps\common\Skyrim Special Edition\Data\SKSE\Plugins\Face2FaceConv.dll
registering plugin listener for SKSE at 3 of 4
plugin ...\SteamLibrary\steamapps\common\Skyrim Special Edition\Data\SKSE\Plugins\Face2FaceConv.dll (00000001 Simple Face2Face Conversation plugin 00000003) loaded correctly
checking plugin ...\SteamLibrary\steamapps\common\Skyrim Special Edition\Data\SKSE\Plugins\hudextension.dll
registering plugin listener for SKSE at 0 of 5
plugin ...\SteamLibrary\steamapps\common\Skyrim Special Edition\Data\SKSE\Plugins\hudextension.dll (00000001 hudextension 00000001) loaded correctly
checking plugin ...\SteamLibrary\steamapps\common\Skyrim Special Edition\Data\SKSE\Plugins\nioverride.dll
couldn't load plugin ...\SteamLibrary\steamapps\common\Skyrim Special Edition\Data\SKSE\Plugins\nioverride.dll (Error 193)
checking plugin ...\SteamLibrary\steamapps\common\Skyrim Special Edition\Data\SKSE\Plugins\skee64.dll
I uninstalled the mod I put together using this, and the problem went away.
I don't think it's an issue with the constructed mod as it refers to the specific DLLs.
Closed. Wait for expired
Your efforts on the race menu are awesome. The current alpha (6) already exceeds a lot of what's available in SSE. I did notice a problem with the preset functionality and wanted to let you know about it.
The character presets are not saving from the racemenu. there is no error, it just doesn't happen. loading new jslot files manually into the chargen folder do not get read in (are not displayed).
From asking around multiple people, it seems people on NAVI based AMD GPUs have extremely poor performance in the sculpt menu. This also extends into crashing after finalising the preset after importing a sculpt.
This is replicated on a 5700xt, 6800xt and 6800 GPU
I'm not sure what is causing it but the game crashes on every character for Racemenu when loading, quick, auto and even normal saves cause a CTD.
The initial character creation works fine. However, afterwards when I use showracemenu in console, it will go to the racemenu and spin to face my character just fine. Then it tries adjusting colors (same thing that happens when you load a preset) and crashes in the process.
EDIT: It may be when it is trying to load a face overlay texture but not sure. Face overlays seem to work in initial character creation
While debugging an issue where transforms sometimes wouldnt apply to actors in light mods I found the issue was in skse64, ResolveHandle in Serialization.cpp discards anything above 8 bits when modID == 0xFE.
Fixed that by changing
UInt8 modID = handle >> 24;
to
UInt32 modID = (handle & 0xFF000000) >> 24;
I also noticed that the registration map holders try to resolve the old handle right after calling ResolveAnyHandle.
TESObjectREFR * refr = (TESObjectREFR *)VirtualMachine::GetObject(handle, TESObjectREFR::kTypeID);
This obviously fails when the load order changes but I'm not sure if it's by design or a mistake.
So i tried to compile this project with skse vr. However soon i realised that skse vr is missing some of the datastructures skse has.
Most of the problems i encoutered where in ...::ApplyMorph in BodyMorphInterfaces that have a
NiSkinPartition:TriShape in their signature.
Concering racemenu as far as i could figure it out there are basically two missing objects in skse vr:
In skse64
class NiSkinPartition : public NiObject
{
public:
static UInt32 GetVertexAttributeOffset(UInt64 vertexDesc, VertexAttribute attr) {
return (vertexDesc >> (4 * (UInt8)attr + 2)) & 0x3C;
}
static VertexFlags GetVertexFlags(UInt64 vertexDesc) {
return VertexFlags((vertexDesc & DESC_MASK_OFFSET) >> 44);
}
static UInt32 GetVertexSize(UInt64 vertexDesc)
{
UInt32 vertexSize = 0;
VertexFlags flags = GetVertexFlags(vertexDesc);
if (flags & VF_VERTEX)
{
vertexSize += sizeof(float) * 4;
}
if (flags & VF_UV)
{
vertexSize += sizeof(UInt16) * 2;
}
if (flags & VF_UV_2)
{
vertexSize += sizeof(UInt16) * 2;
}
if (flags & VF_NORMAL)
{
vertexSize += sizeof(UInt16) * 2;
if (flags & VF_TANGENT)
{
vertexSize += sizeof(UInt16) * 2;
}
}
if (flags & VF_COLORS)
{
vertexSize += sizeof(UInt8) * 4;
}
if (flags & VF_SKINNED)
{
vertexSize += sizeof(UInt16) * 4 + sizeof(UInt8) * 4;
}
return vertexSize;
}
// 30
struct TriShape
{
struct ID3D11Buffer * m_VertexBuffer;
struct ID3D11Buffer * m_IndexBuffer;
uint64_t m_VertexDesc;
uint32_t m_RefCount;
UInt8 * m_RawVertexData;
UInt16 * m_RawIndexData;
};
but in skse vr:
// 10
class NiSkinPartition : public NiObject
{
public:
// 28
struct Partition
{
UInt16 * m_pusBones; // 00
float * m_pfWeights; // 04
UInt16 * m_pusVertexMap; // 08
UInt8 * m_pucBonePalette; // 0C
UInt16 * m_pusTriList; // 10
UInt16 * m_pusStripLengths; // 14
UInt16 m_usVertices; // 18
UInt16 m_usTriangles; // 1A
UInt16 m_usBones; // 1C
UInt16 m_usStrips; // 1E
UInt16 m_usBonesPerVertex; // 20
UInt8 pad22[2]; // 22
UInt32 unk24; // 24
void AllocateWeights(UInt32 numVerts);
};
UInt32 m_uiPartitions; // 08
Partition * m_pkPartitions; // 0C
};
and there is a call to:
CreateBSTriShape();
that does not exist in skse vr.
I think ether these are somwhere else in skyrim vr or not yet implemented in skse vr.
So i was wandering if anyone knew a way around this?
Hi ! I saw that there are already a code to dump a head. For some reason it copies/or attaches the head to artificially created root node..
Is it possible to hack the code to dump entire character's model?
This is not feature request, I'd like to try to do that myself..
I've noticed that I cannot load my saved game and it will CTD at the loading screen and that happened to me after installing alpha 6 plugins release and making my character in racemenu using these plugins... But when I delete the plugins (skee.dll hudextension.dll) the game will load normally.
I'm not usually super impatient, but ive been checking this site every few days waiting for a version of SKEE that actually works so that I can FINALLY update to XPMSSE 4.31, but to no avail, because there are no posted updates.
Some change from 0.2.12 to 0.3.0 broke the bodygen feature. Existing morphs will still be applied but in versions 0.3.0 and 0.3.1 it will not generate new morphs.
The following lines are completely absent:
BodyMorphInterface::EvaluateBodyMorphs - Generated 88 BodyMorphs for Lydia (000A2C94)
SKSEObjectLoadSink::ReceiveEvent - Applied 88 morph(s) to Lydia
Reverting back to 0.2.12 fixes the issue. Ini settings are the same for all versions except for
bEnableHeadExport=1
in the 0.3+ versions (so I'm using default settings)
The latest 1.5.39 .dll update is not
showing the floating health bar.
The previous v1.5.23 was working fine.
You just see vanilla health bar.
When test with same data, use racemenu (call from EFF tatoo menu) for NPC, it frequently stop to work even though it is same NPC and same clothing. It not cause CTD, but not apply the morph for the mesh. It often temporally corrected, then once they are loaded, change NPC, change clothing still work.
I tried to edit, SKEE.ini iLoadMode and uBodyMorphMemoryLimit, several times,
then it work temporally, but change cell and save, then load again it suddenly stop to work . (I keep all tri file for clothing and NPC)
I suppose when load slider data or up-date slider data from tri, for current active NPC,,
SKEE not work stable. and maybe those SKEE.ini setting not work as it designed. SKEE.log not show any infomation, which morph data are loaded about current NPC, so I can not confirm, actually BS data are loaded, but slider not work, or BS data not loaded from tri. then not change shape with slider.
If when change slider for morphs, in racemenu, if data not loaded, hope infomaton, failed or succeed, to confrim, and hope to get more precise log (which tri are loaded when change slider
and hope to see NPC name, currently I activate and use racemenu for, in SKEE64.log
can you update this dll for last update of skyrim se?
thanks
Hi, I noticed large changes made regarding the architecture of RaceMenu. Does this resolve the memory leak?
The issue is in skse NiObjectNET::AddExtraData
, the comparison function used while sorting m_extraData
can overflow since it casts the pointer difference directly to an int. This happens frequently when using Engine Fixes' memory manager, causing random issues with morphs/transforms since binary searches on the array fail at random.
I'm getting "random" CTD's after a playing for a while (are not crashing at same point and time, so after a CTD, I can restart and get past the point where it crashed). The crash reports are pointing towards skee64.dll. Latest 3 crashes has had the same exception, but they are not crashing at same place. I would say the CTD happens sometimes when some new npc loads in near you.
I wonder if there is any problems with XPMSSE weapon styles together with Bodygen? They are installed, but I have deactivated the styles and cloak from the MCM.
I'm using Racemenu 0.3.1 from Nexus.
And as you mentioned on Nexus, the BodyGen are not working correctly when using All|Female.
NetFramework crashlog:
Crash_2019_1_23_2-0-6.txt
ZIP with SKSE crashdump, NetFramework crashlog, Papyrus-, skee64-, skse64-logs and BodyGen template & morphs I'm using:
Racememu crashreport.zip
I hope these are helpful :)
Health Bar is not working with 1.5.62 as stated for this version.
Please update the .dll for 1.5.62.
Poser Hotkeys https://www.nexusmods.com/skyrimspecialedition/mods/17743 asks for alpha 14 for 1.5.97 but it does not exists on releases page
I converted alpha 5 to work with SSE a couple of days ago and it worked fine. I had to reinstall Skyrim on an unrelated problem and decided to use alpha 6 instead. I converted it and it opens like its supposed to, I can use it normally, presets work, everything does. That said, as soon as an enemy spots me, not even enough time for their health to appear, the game instantly ctd's, no error message. I went through my mods one by one to figure out which one it was before I found out it was racemenu. I removed and converted the file another 2 times and the problem still occurs. I went back to the alpha 5 version and it works fine.
EDIT: I googled for a bit and found it was the HudExtension.DLL causing the CTD for people with SkyHud. I don't have SkyHud but I converted the file again without the extension and it works fine now.
Setting bEnableBodyGen=0
disables loading custom morphs from save games, an example of this are CBBE morphs. I believe this is a bug and should use the bEnableBodyMorph
instead.
....Its so quite in here! >.>
Is bodygen one of those features that may be a sooner than later thing, or is it one of the more complex maybe someday feature? Im sure you're well aware there's some really neat stuff only that can do, so I figured I'd ask and put some activity into the issues cue! 👯♂️
Thanks so much for all your amazing code and goodies! :D
I am getting a CTD whenever I unequip a high heel. I can equip it just fine and it works perfectly, raises up off the ground, I can walk around just fine, etc. But when I switch to a non-heel type shoe I get a CTD... Haven't experimented with what happens if unequipped to a different high heel, maybe in the morning... This is with the new Alpha 6 build
Greetings,
This bug exists in racemenu (for skyrim se) version 4.16. My apologies in advance if it has been addressed in the unreleased update.
Description: When loading high poly head, eye socket geometry conflicts with eyeball geometry.
Steps to reproduce:
Work around that leads to possible solution:
4. Open racemenu again, note that problem as been corrected, eyes can be moved and geometry is not conflicting anymore.
Rationale for solution:
On load, racemenu must be resetting necessary values for proper display.
Solution:
The following edit was made so that the necessary reload happened on the face part slider change. Ideally, this call might exist in the selection logic above that matches the proper string for that slider value. Because I don't know the correct string, I put it here, ensuring that it updated the necessary values. (Of course that means I cannot guarantee it isn't the update when the eye height is adjusted that is doing it, but correlating with the above that the issue is corrected on racemenu reload seems likely.)
In racemenu.psc:
Event OnMenuSliderChange(string eventName, string strArg, float numArg, Form formArg)
If strArg == "ChangeTintingMask" || strArg == "ChangeMaskColor"
SaveTints()
UpdateColors()
Elseif strArg == "ChangeHairColorPreset"
SaveHair()
UpdateColors()
Endif
;From what I can tell, this is the essential call.
UpdateTints()
EndEvent
Thank you for your work and your time.
Trying to modify skee to add a "random faces" feature, One might even (not) call it FaceGen. I patched the ObjectLoaded and ObjectInit event handlers in ActorUpdateManager to load a random preset jslot onto NPCs exactly like "skee preset-load" does.
This works for all NPCs except those whose base ID starts with FF. Both my patched skee and the "skee preset-load" console command cause the faces of said NPCs to turn black. and no facemorphs are applied. This happens on HEAD and the latest release (I've only tested those).
Would you have any suggestions as to where to look next to make "skee preset-load" work for those NPCs?
I tried installing the Face-Discoloration-Fix SKSE plugin (relevant code here https://github.com/Exit-9B/Face-Discoloration-Fix/blob/main/src/FaceGenManager.cpp) in the hopes that it would force the engine to stop looking for prebaked data for FF NPCs and actually heed what "skee preset-load" is applying, ,but it didn't make a difference. Face would no longer be black but still no facemorphs are applied.
When not using RaceMenu (just vanilla), and just using skee for NIOverride - two extra categories in the top menu bar are still shown. $EXTRA and $EXPRESSIO. I don't know if you would class this as an unintended use case, but NIOverride Standalone on its own is still very useful for XMPSSE and DynDOLOD.
Calling AddSkinOverrideString(actor, sex, false, 0x04, 9, 1, tx, false)
sets the normal map for the body as expected, but it also sets the same texture to the hands. So you end up with the hands having the normal maps for the body.
Setting the hands with AddSkinOverrideString(actor, sex, false, 0x08, 9, 1, tx, false)
also sets the hands texture to the whole body.
It's like if the nif specification for SSE changed in that respect or something.
AddNodeOverrideTextureSet(actor, sex, "Body [Ovl5]", 6, -1, ts, false)
works as expected, but only for the player; not NPCs.
Also, I don't know why, but it only works specifically for "Body [Ovl5]", not "Body [Ovl0..4]".
Diffuse and specular maps seem to work alright. It seems this is only an issue with normal maps.
Please, this has been plaguing the game for way too long...
So i have installed some mods for female character but there is a problem with the racemenu. i have Bodyslide when i'm adjusting the weight then it happen this only the head is appearing what might be the cause? Did we found any solution to this problem?
I've tried to compile this code in visual studio to add a new feature but I can't seem to get it to compile. I have some other plugins in this same solution that are compiling fine. I've installed directx through the VC repositories and json cpp is installed but i still get some compiler errors that look like this:
LNK2019 unresolved external symbol "public: virtual class std::basic_string<char,struct std::char_traits,class std::allocator > __cdecl Json::StyledWriter::write(class Json::Value const &)" (?write@StyledWriter@Json@@UEAA?AV?$basic_string@DU?$char_traits@D@std@@v?$allocator@D@2@@std@@AEBVValue@2@@z) referenced in function "public: bool __cdecl FaceMorphInterface::SaveJsonPreset(char const *)" (?SaveJsonPreset@FaceMorphInterface@@QEAA_NPEBD@Z) skee64 C:...kse64_2_00_16\src\skse64\skee\FaceMorphInterface.obj 1
Looks like the compile erros all point to facemorphinterface and skeletonextender missing something json related. The project file shows a missing JSONCPPP project file, may have something to do with it even thugh I have multiple jsoncpp libraries installed at this point trying to fix it
And a lot of errors that look like that, in total about 100. Am I missing a dependency or what?
I'm also able to describe the feature to you and why it's important if you would prefer to implement it yourself
cant find where to put the files
Was decreasing the size of the health bar needed?
I would agree in decreasing its size, but the size right know in this
version is not small to see well.
Please either bring back the original size, or make it at least
10 to 25 percent smaller from the original size.
Also if some one here can confirm if this is also what their seeing.
.
Getting this when running SkyrimSE after client and SKSE64 updates:
checking plugin D:\Steam-Games\steamapps\common\Skyrim Special Edition\Data\SKSE\Plugins\hudextension.dll
plugin D:\Steam-Games\steamapps\common\Skyrim Special Edition\Data\SKSE\Plugins\hudextension.dll (00000001 hudextension 00000001) reported as incompatible during query
I've been fiddling with this for days and I just cannot figure it out. After activating enough mods (doesn't even seem to matter what they do), morphs stop updating, either in racemenu or when externally activated. Sometimes they will update for a single tick, then stop. Sometimes they don't update at all. When I equip and unequip clothes the morphs apply, but before that it's like you haven't done anything at all. On AE 1.6.342. Maybe this is fixed in the 1.6.353 version?
Using RaceMenu along with XPMSSE (no physics rig) causing the game to randomly CTD, usually occurs within 20-30 minutes of gameplay.
Removing XPMSSE and regenerating FNIS resolves the issue.
Seems like setting bEnableBodyGen to 0 in the skee64.ini file also resolves the issue even with XPMSSE enabled.
Dump file: https://mega.nz/#!3EADUSbR!SgRuJdDhFJVZxyTmwmvldozsi5c9YJXd9myIj1ShvLg (X64_APPLICATION_FAULT_INVALID_POINTER_READ_skee64+ba430)
At first I thought that might be on SSE Engine Fixes but no matter if that mod is enabled, disabled or even [Temporary] options set to false the issue is still present.
Very short mod list just for instance: https://imgur.com/a/ApUDtTY
Loading presets that were made in SKEE (32) for Legendary Edition do not result in the same head/face morphs as loading that preset in SKEE (32). ie. The faces don't match
The head shape in the Special Edition has remain unchanged. And importing a head mesh directly results in a perfect replica, so something has changed with the morphs.
Some investigation between LE version and SE versions was already performed by a user (not me) who found this:
[Quote]
Eye Shape and Eye Type morphs
I think there's a bug on the eye shape sliders and how "Eye Shape" (RM morph) and "Eye Type" (niaska morph) interact. The ECE morphs were incorporated into Racemenu LE from v2 or v3. You had to use one or the other, otherwise the eye shape would look weird. One bug that would happen if you tried to use both was that the eyelash would detach from the eyelid.
Therefore in RaceMenu LE when I used the "Eye Type" (ECE morph), I would always set "Eye Shape" (RM morph) to 0, which would disable it. However, it doesn't seem to work right in RaceMenu SE.
Screenshot below shows it's still detached with "Eye Shape" (RM) = 0 and "Eye Type" (ECE) = 24.
https://i.imgur.com/4N8cVrp.jpg
Bug 2: When I load the preset, it also has "Eye Shape" (RM) show up as 1, even though it's shape 0 if I flip it back and forth again. Seems like a UI bug there.
Update: I went back to compare against RaceMenu LE. It seems to be a problem with the RM shape morph sliders.
In RaceMenu SE, the "Eye Shape" = 0 and "Nose Type" = 0 sliders correspond to the "=1" in RaceMenu LE. This might apply to other ones as well but not sure.
I also compared the number of options in each slider and there were differences.
[Legend]: LE options / SE options (I will list them in the start/end range)
HEAD
Face Part: 0-2 / 0-0
Mouth Part: 0-1 / 0-0
FACE
Nose Type: 0-30 / 0-17
EYES
Eye Shape: 0-37 / 0-16 (Note: LE slider options 29-37 look like option 0)
MOUTH
Mouth Shape: 0-30 / 0-17 (Note: LE slider options 29-30 look like option 0)
[End Quote]
I'd like to add to this as well for Chin, Cheek and Cheekbone sliders.
Can we get a function to purge all BodyGen data of all actors so they may regenerate their morphs?
NiOverride doesn't seem to have the same ClearAll() function as FO4's BodyGen.
No netscript report. Attached ini and WER
wer.txt
skee64.txt
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.