• Content Count

  • Joined

  • Last visited

Community Reputation

1 Neutral

About FiftyTifty

  • Rank

Personal Information

  • Specialty

Recent Profile Visitors


  1. Anyone know what the biggest texture size is for 3.3.5a? I know it has shaders for SM 3.0, so it has a mimimum of 8192x8192, but I'd like to make as few texture atlases as possible, so if it does support a max of 16384x16384, that would be great to know.
  2. Yeah vertex only animation is usable for very few things, always better to use bones. Making an important tool behind a paywall is terrible, not going to support that. Guess I'll be waiting for Blender Studio, where I'll prep the model in 3DS Max then punt it into Blender. Has there been any ETA on Blender Studio?
  3. Grouping all data rows by Light Params? Mind clarifying what that means? I should have added text labels, but if you hover the mouse over the text boxes, hints will show up that tell you what the parameters do. As for adding and deleting data strings, do you mean more LightIntBand records? You can do that already by selecting an entry in the tree view, and using the delete/instert keys.
  4. I've spent the past few weeks working on a tool that makes editing LightIntBand.dbc so much easier. You can get it here, along with instructions: And you can get the source here:
  5. Version 1.01


    There are generic .dbc editors available, but they are absolutely not geared towards being good for editing specific .dbc files, the first one I came across being LightIntBand.dbc. So I decided to make a program that is much easier to use, intuitive, and gives you an idea of what your changes will look like. Made with Delphi community edition. Should work on XP, will definitely work on Windows 7, 8, 8.1, and 10. Github repository: It's very simple to use. Here are the steps: 1. Much of the interface is disabled when first run. To enable it, click on File -> Load... -> Select LightIntBand.dbc 2. Now the interface will appear, after freezing for a couple seconds. That's normal, the tree list of all the records just takes a short while to be populated due to all the records present. 2a. If you want to add new records, make sure the tree list is selected, and press the insert key. 2b. If you want to remove records, make sure a node is selected, and press the delete key. 3. Select a record from the list. There is a text box above it where you can enter an ID to go straight to that record. 4. The two text boxes above the 16 GUI entries on the right show the ID of the currently selected record, and the number of entries that will be processed by the client. 5. To change the number of entries that will be processed, click on the text box to the right with the drop-down arrow, and pick a number from the list. 6. To keep your changes, click on the Apply button. Note: This does not save the changes to the file. 7. To save the changes to a file, click on File -> Save... -> Save as LightIntBand.dbc -- There shouldn't be any bugs, as I've tested extensively. If any appear, please report them with as much detail as possible.
  6. Speaking of particles, I noticed that there are significant slowdowns in scenes where there's many of them being rendered, which I assume is due to the increase in draw calls. Optimization would be a great topic to deliberate on; does the engine use instancing at all for particles, and if so, how do we ensure that it's active? If there's no instancing, is there a way to fake particles, such as by having the particle texture have an alpha map on a gradient, with the animation just being a bunch of skinned polygons at different positions being moved by a bone? For making .m2s, one thing I've noticed is that the assets are very unoptimized for draw calls, as there's little in the way of texture altases. Now, with the sheer number of texture variations, it is unfeasible with Direct3D 9 to have large textures, as VRAM is mirrored into RAM. One solution, would be to make use of vertex colours, with the texture being completely greyscale. Is that possible with WoW's engine? If so, that would be a good topic to cover; using vertex colours to create coloured variations without having to create an individual diffuse map for each variation.
  7. Aye, having something about animations would be ideal. I've been searching for a while, and can't find anything on editing/creating animations for .WMO and .M2 objects.
  8. There are plenty of tutorials on exporting and importing models as .m2 files, but I can't find anything on making new animations. Are there any guides available on how to work with them?
  9. Still working on this, in-between the other stuff I'm doing and researching. Made more progress. Since the string block for LightIntBand.dbc is literally a single byte with a value of 0x00, adding and removing records is painless to code. So that's a new feature; you can add and remove entries. And since Delphi uses pointers to fill that tree panel on the left, it's also easy to make another TMemoryStream, read all the records that are still present in the tree as well as those that have been added, chuck them into an array, punt the header and string block in, and bam. New LightIntBand.dbc file that requires no other programs to work with, and it's just much easier. Any feature requests? I'm not a proper programmer, so I won't be able to do fancy stuff.
  10. Batching's different; that's when the 3D data of multiple models is combined at runtime. Instancing is where the same object is drawn once, and then the GPU just redraws that same object wherever there are other objects with the same 3D data, rather than issuing another draw call. I'm certain that the grass uses instancing, as increasing the density barely adds to the draw call count. If there's no way to trigger instancing, are there other ways to reduce the number of draw calls for a large number of actors with the same model and texture? I imagine that creating proper WMO's with texture atlases is a way of reducing the total draw call count, but man, it would be great for Ice Crown to have decent framerates with the draw distance maxed.
  11. After digging through the renderer, I found that there are areas that issue a huge number of draw calls when the server's distance is maxed. Icecrown in particular is a bad offender, with there being over 8,000 draw calls issued at certain vantage points. Now, the grass uses instancing, so I'm wondering; is it possible to have other .m2 models use instancing? In Icecrown, it's filled with a hundreds of the same skeleton mob wandering around, a prime candidate for instancing. How would I go about making them instanced?
  12. Wait, it's just one byte in size? If that's the case, I can just add a wee button that allows the modder to append a new record.
  13. For a renderer mod that's being developed, I need a way to tell which zone the player is in, and the only real way of doing that is to detect for a specific mesh being rendered on the screen. I've looked at other addons, and came up with the following: local frame = CreateFrame("Frame", nil, UIParent) frame:SetPoint("Center", 128, 0) frame:SetWidth(256) frame:SetHeight(256) frame:SetAlpha(1) local model = CreateFrame("PlayerModel", nil, frame) model:SetAllPoints(frame) function ModelBasics_UpdateModel() model:SetModel("Interface\Buttons\talktome.m2") model:SetRotation(math.rad(0)) model:SetAlpha(1) model:SetCustomCamera(1) model:SetCameraDistance(1) local x, y, z = model:GetCameraPosition() model:SetCameraPosition(x, y, 0) model:SetPosition(0, 0, 0) end ModelBasics_UpdateModel() Which displays the following model: For some reason, I can't change it's position by editing "model:SetPosition(0, 0, 0)". It just stays in that exact same place. Is there anything I can do to change the object being rendered, and to rotate, and move it?
  14. As an update, here's what I've got so far: The only thing I need to know now, is how to handle the string block. Is it just 1 character for each record in LightIntBand.dbc?
  15. Aye that clears it up, thanks. So how it works, is that the header is 20 bytes in size, and the following records are 136 bytes in size. I took a look at using C# for this, but it's really not made for writing to hex, especially with arrays not having a fixed size option. Decided to use Pascal, and going to use Deplhi to give the IDE a try as it looks better than Lazarus.