User Tag List

Page 1 of 2 12 LastLast
Results 1 to 40 of 52

Thread: Scissor2D - A new 2D toolkit plugin

  1. #1
    4

    Scissor2D - A new 2D toolkit plugin

    Last edited by Structure; 06-13-2017 at 10:27 AM.

  2. #2
    0
    Yes!!!! The list sounds awesome.
    One addition I'd like to see is 2D collision or at least non-capsule collision on Character blueprints. Its pure hell to work with this and I would prefer to use the character blueprint/class with Box or Sphere collision on paper 2d characters.

  3. #3
    0
    Luminary
    Join Date
    Mar 2014
    Posts
    1,675
    Hey @Structure -

    Got a few requests for this.
    1. Being able apply a sprite to a billboard similar to Wolf3D or DooM would be awesome.
    2. Being able to use Spine, DragonBones, or Spriter with this toolkit would be useful.
    3. A Top down character template would be awesome as well.
    4. A DooM 1 or 2 Like Character Controller would be useful as well. Unsure if this falls into the scope of the project though.

  4. #4
    0
    Game Maker Studio 2: UE4 Definitive Version. `Nuff Said.
    Looking for help in real-time or want to help others? Join us at UE4's Unofficial Chat courtesy of Discord. Find me: @victorburgos

    Join me on stream: https://www.twitch.tv/victorburgos_ for UE4 Game Dev. If you need help, just stop by and ask!

    Subscribe to www.youtube.com/c/victorburgosgames for UE4 Tutorials, Live Streams and also Past Streams.

  5. #5
    0
    My biggest issues in paper2d is animation handling. Controlling how animations play as in do they loop or not and making sure certain animations play all the way through before another can begin etc. I also had trouble with animation state machines in paper2d. I must be doing something wrong but I can not for the life of me seem to make it work properly. Maybe my checks are not done well enough I don't know but for whatever reason I can not get the animations to properly switch using any of the ways I have seen examples of. I tried everything I can think of and it just never works. I can't even imagine what would happen if I had a ton of different animation states.

    Having a better way to control these things would make using unreal for 2d games so much better than it is right now.

  6. #6
    0
    Quote Originally Posted by TriNityGER View Post
    I'd like to see is 2D collision or at least non-capsule collision on Character blueprints.
    Yes this is something I want to support but I will need to plan how this will work. Currently Paper2D tries to add Box2D as a replacement physics backend, I think this has had limited success due to differences in feature set available in the physics engines (3d vs 2d). My feeling at the moment is that Box2D should be integrated as a separate set of 2D Physics Components, but the downside to this is you will lose some functionality written to the current physics interface. This will then need a set of new components (such as character controllers etc) that are specialised to use the new 2D physics components. With this we can support any collider type that Box2D supplies, and this will all be covered by the toolkit.

    Quote Originally Posted by HeadClot View Post
    Got a few requests for this.
    1. Being able apply a sprite to a billboard similar to Wolf3D or DooM would be awesome.
    2. Being able to use Spine, DragonBones, or Spriter with this toolkit would be useful.
    3. A Top down character template would be awesome as well.
    4. A DooM 1 or 2 Like Character Controller would be useful as well. Unsure if this falls into the scope of the project though.
    1) 2D in 3d workflow is something I would like to support, but I will need to investigate the implications for auto batching of sprites interfering with other 'non sprite' geometry. This comes down to where I can do the batching of geometry in the render pipeline, while still keeping the functionality in a plugin. For example, say you had 2 billboard sprites with another actor with a mesh component in between then when viewed from the camera. If I auto batch these billboards together and send them as one draw call, this will produce incorrect draw order when drawing all 3 items. Some experimentation will be needed here
    2) We use Spine in our current workflow so this is something we would be keen to integrate. Other solutions may come over time depending on demand.
    3) A top down character template does sound awesome, I'll put it on the list!
    4) Probaby out of the scope of this, but if i end up messing around with billboards enough it could be a good example project.

    Quote Originally Posted by VictorBurgos View Post
    Game Maker Studio 2: UE4 Definitive Version. `Nuff Said.
    Game Maker Studio 2 is looking pretty solid. Apart from the integrated asset production tools it is my goal for this plugin to surpass its functionality for 2D work, while still having all the joys of the UE4 ecosystem

    Quote Originally Posted by Corpsecrank View Post
    My biggest issues in paper2d is animation handling
    I will be doing a full review of animation handling both in Paper2D and other engine solutions to find an enjoyable workflow. Ideally this should be controllable from tooling, blueprints and c++ with ease.


    Thanks everyone, this feedback is very useful and will help shape the plugin into something great for everyone to use. I am currently investigating where in the Unreal render pipeline I can insert a batch renderer for sprites, there are a few options so I will need to do some prototyping and see what works well.

    Keep the feedback / ideas coming!

  7. #7
    0
    Question: If you're going to be building out this functionality why not use what's already available but finish the implementations or rework the current implementations? The reason I ask is because it might be easier to put in pull requests on the git that Michael Noland can approve of and everyone can get via engine updates (with the added benefit Epic approval and maintenance ) instead of having to constantly manage another plugin to their source code.

  8. #8
    0
    Quote Originally Posted by Demoneyejin View Post
    why not use what's already available but finish the implementations
    Yep, this is a good question that I've been considering myself.

    As this is a commercial plugin, I would like to not rely on core functionality from another plugin that could potentially change significantly in the future. Although initially there will be quite a bit of core implementation overlap, I think this is the way to go for long term stability for the users.

    I have evaluated the code supplied by Paper2D and I would need to rewrite parts of how the internals work to achieve some of our feature goals. This creates an issue where I would need to push functionality into Paper2D to move forwards with the features I need to implement, but still leave it in a usable state without this plugin.

    This will be a bit of a maintenance headache as I will not have control over when Paper2D functionality is updated or what could change underneath me.

    Hope that makes sense!
    Last edited by Structure; 04-05-2017 at 06:23 AM.

  9. #9
    0
    1.
    Autotiling at mapping.
    F.e. select and tag Tiles that work as autotile via mapping.

    2.
    Animated tiles

    3.
    Layer Data Control.
    In Paper2D is no control for setzing visibility of layers in a tilemap, or changing materials of specific layers only..etc

    Would bring Maps forward

  10. #10
    0
    Quote Originally Posted by Chaosgod_Espér View Post
    1.Autotiling at mapping
    2.Animated tiles
    3.Layer Data Control
    1) Not exactly sure what you mean here, but if you are talking about tiles that lay themselves out correctly depending on their neighboring tiles, yes I plan to support customisable tile brushes with placement logic
    2) Yep!
    3) I can add these features to tile editor yes

  11. #11
    0
    Supporter
    Join Date
    Jan 2015
    Posts
    1
    For me, having Flipbooks (or a replacement) support all the same (non-bone specific) animation functionality that skeletal mesh animations do would be huge. So, animation blueprint stuff, state machines, anim notifies, montages (with branching points), animation curves, etc. etc. You can already do a lot of 2d bone animation stuff using run-times from Spine and Creature, but they are all outside of the UE4 built-in functionality. In other words, I really just want the 2d sprite animation to work just like the standard 3d animation asset and use the standard editor features. Sounds easy

  12. #12
    0
    Sounds great!

    How many people will be working on the new 2d system at your company?
    Why did yall choose unreal over other engines with better 2d features? (lol, I had you yall here before edit)

    I mainly want better physics and notifications from animations.
    Last edited by jacobgood1; 04-09-2017 at 09:55 AM.

  13. #13
    0
    Quote Originally Posted by jzela View Post
    having Flipbooks (or a replacement) support all the same (non-bone specific) animation functionality that skeletal mesh animations
    Yes I would like to see this too, but it will depend on how decoupled the tooling is from the 3d skeletal mesh system. If it is not then I would like to provide alternative GUI tooling for this functionality.

    Quote Originally Posted by jacobgood1 View Post
    1) How many people will be working on the new 2d system at your company?
    2) Why did you yall choose unreal over other engines with better 2d features?
    3) I mainly want better physics and notifications from animations.
    1) We are just a small indie studio, so initially it will be me working on this full time (with contractors for example assets)
    2) Yes agreed there are alternatives with much better 2d toolsets, but I feel Unreal outshines them in all other areas. Specifically: c++ with source, feature set / platform support, engine licensing model, Epics long term stability and great community!
    3) Noted!

  14. #14
    0
    How are things going? Is there a github repo where we can view progress? Trello for a roadmap? Thanks!

  15. #15
    0
    Quote Originally Posted by jacobgood1 View Post
    How are things going? Is there a github repo where we can view progress? Trello for a roadmap? Thanks!
    Hi jacobgood1, the plugin is just in planning at the moment so early days for such things. I am currently making some prototypes for how the batched renderer can work with the underlying Unreal renderer, while still remaining a plugin. I will post some updates about this when I have something I'm happy with. It is important to get the design of this right as everything else will build off off how this works

    Reg a public github repo, this is a commercial plugin, so that is not possible, but I will be providing full source through the marketplace. Trello roadmap is a great idea and I'll get one set up a little further down the road.

  16. #16
    0
    I dont have enough knowledge to make any technical suggestions, but clear documentation is a must for less technical guys like me. The more the better!

    But really looking forward to this and hoping you get it off the ground.
    My work in progress thread: Pixel Art Sidescroller

  17. #17
    0
    Just wanted to reply in support of this plugin. I love Unreal Engine, but currently the tools available for 2D just feel incomplete. I use Unity and other engines to build my 2D projects. It would be so amazing if this plugin could work towards feature parity with Unity's 2D toolkit.

  18. #18
    0
    I'm a huge fan of the Sprite Lamp unity plugin, IMO it creates by far the most art-driven sprite lighting approach vs. Sprite Illuminator and other automated normal map generators. It's a time-consuming workflow but you don't have to use it for everything, e.g. use auto-normal mapper for environment stuff, Sprite Lamp for characters. You should reach out to (Finn) and see if he can't write you a shader. He's an awesome guy and super responsive.



    And in general the more features you include from Ferr2D (procedural / spline based terrain tools), Corgi engine (aka actually fun, raycasting platforming), and Adventure Creator (2d characters that can rotate and fake z-depth by scaling according to sorting layers or navmesh and a million other things), the more "take my money" I'd be. Mega bonus points for time-of-day / weather / seasons.
    Last edited by soylent_me; 04-15-2017 at 04:40 PM.

  19. #19
    0
    Quote Originally Posted by dbInteractive View Post
    Just wanted to reply in support of this plugin
    Thanks for your support! Feature parity with Unity is the plan in the short term, but I have a few extra ideas as well

    Quote Originally Posted by soylent_me View Post
    I'm a huge fan of the Sprite Lamp unity plugin
    Lighting models for 2D work is definitely something I will be doing a full review of when the time comes. I'll have to have a think about what tooling I want to support for the import pipeline vs doing everything in editor. Thanks for the video! very cool!

  20. #20
    0


    Hi Everyone! Time for a quick progress update on Scissor2D!

    My initial focus has been to prototype ways to make a batched geometry renderer that will allow individual actor components to submit draw calls that can then later be layer sorted and batched together if they are using the same materials and textures. Ideally this would be done at a render command level inside the Unreal render loop, but I am having to work with the limitations of what I can do in a plugin. So for now my plan has been to have a centralised ScissorRendererActor that you place into the scene, other Actor Components can then send scissor draw commands to the ScissorRendererActor that then on its render call, does all the batching / layering magic.

    The goal of this approach is to give the performance of using a Paper2DGroupedSpriteComponent while still maintaining the convenience of using individual actors with their own sets of components attached. Also because the ScissorRendererActor just accepts dynamic geometry to render each frame, all Scissor2D components such as sprites, terrain, tilemaps etc will be able to go through the same renderer and be batched and correctly layer sorted.



    I have setup a quick benchmark test in Scissor2D, Paper2D and Unity(5.6) so we can track performance metrics as the plugin is developed. Currently the benchmark just spawns 5000 identical sprites randomly over the screen. Keep in mind fps measuring is non linear as you get to very low frame millisecond times, so it is much better to look at the ms per frame for comparison.

    I am testing this on a i5-3570, 660gt at 1280x720



    Empty Scene 1.26ms (800fps)
    Scissor2D 2.1ms (470fps)
    Paper2D 76.0ms (13fps)
    Unity 5.4ms (185fps)

    From this I can say initial results are looking good performance wise! But there are some downsides to this approach that I am yet to tackle / solve. Unreal does its editor selection logic via what has been rendered onto the screen, but as you are always clicking on geometry that has been rendered via the ScissorRendererActor, it will not select the original actor that represents the geometry in the scene. I am looking at ways to get around this at the moment in this thread (if anyone has any ideas!) https://forums.unrealengine.com/showthread.php?142218-Making-a-Batched-Sprite-Renderer-Selection-Issues

    Another issue is going to be mixing things rendered via the ScissorRenderer and other unreal mesh types. Batching has the potential to break scene draw order if a mesh comes between a number of sprites that can be batched together. This is only really a problem for 2D in 3D setups, but something to keep an eye on.

    But this is all just one sprite! I hear you cry. Yes correct, the focus of the next bit of prototyping is the sprite import pipeline. Currently the sprite texture is just hard coded into a placeholder material. Once I get the import pipeline setup we can get on to testing atlas batching and layering correctly.

    Thanks for reading! Keep the ideas / feedback coming! it is all very useful

  21. #21
    0
    Thanks for the reply, I'll make sure to keep watching this space for updates. Really hoping for something Sprite lamp-esque that supports self-shadowing. Any word on raycasting platforming / 90's Lucasarts-esque fake z-depth?

  22. #22
    0
    Luminary
    Join Date
    Mar 2014
    Posts
    1,675
    Amazing! Keep up the awesome work!

  23. #23
    0
    This is great stuff! I'm excited for what's to come.

  24. #24
    0
    Supporter
    Join Date
    Apr 2015
    Posts
    5
    I want to express my support for your project, though I will also admit that it sucks there's so little development on Paper2D that it has come to this to make it happen. My team is currently working in Paper2D and there are so many brick wall limitations in it right now.

    The highest priorities for me would be:

    Support for other collision shapes besides capsule (this is a big one)

    Layer locking

    More flipbook animation control

    2D collision and physics


    Best of luck with it, I hope you're able to make the improvements we'd all like to see.

  25. #25
    0
    First update looks good!

  26. #26
    0
    Hi all, thanks for your encouragement and feature suggestions. I am noting them all down, so keep them coming! Time for a quick progress update



    My focus at the moment is to make a VERY rough and ready prototype of the core feature set the plugin needs to be usable. This is so I can discover any blocking issues early before I come back and reimplement everything properly. I have made a basic asset pipeline for setting up sprites and rendering them through the batched renderer. This also includes auto creating dynamic materials inside the renderer dependent on what the sprites need.


    Doing this has highlighted some issues that are a little problematic:

    1) I cannot see a way to implement priority layer rendering that will override depth sorting into scene. This means all render sorting must be done via camera depth, which is not ideal. I can still implement layer helpers that will control visibility, selection and auto depth placement, but it will not be as flexible as having a true render order ability.

    2) Editor selection on batched geometry is also proving problematic. The only way I have managed to solve this atm is to not batch anything while in the editor viewport. This allows things to be selected individually in editor and then batch as normal in game view. The downside to this is performance in editor and selecting things when testing the game will not work correctly. There may be a better solution to this that I'm still investigating.

    Next I want to dig into how the layer system will work as this is potential blocker to the plugin being developed if a usable solution cannot be found.

  27. #27
    0
    Luminary
    Join Date
    Mar 2014
    Posts
    1,675
    I am loving the rapid progress on this

  28. #28
    0
    Great work! Thanks for the update. I think the layer helpers would be sufficient if there is no better solution, as long as the workflow is intuitive, and you can keep two objects from inter-shuffling their child actors

    I'll throw two more in for the wishlist:

    1 - I'd love to see some kind of improved Matinee (Sequencer?) support for 2D types, being able to control flipbooks or change 2D specific properties on the timeline would be fantastic.
    2 - If there was some way to author root-motion for 2D animations, that would be excellent. I've always wanted to have my 2D animations have pixel-perfect movement without having to teleport the root. (ie. climbing up a ledge, and have the player root actually move each frame with the animation, and ending up at the top of ledge). Not sure how feasible that would be to implement, but I'm throwing it out there.
    Last edited by dbInteractive; 05-02-2017 at 02:27 PM.

  29. #29
    0
    Quote Originally Posted by HeadClot View Post
    I am loving the rapid progress on this
    Haha thanks! It feels like that atm because I am just writing prototype code to explore how everything can fit together. It will probably take a few months to come back and write this all to a production standard with everything hooked up to Blueprint and all the editors / thumbnail previews / versioning etc working. But we'll see

    Quote Originally Posted by dbInteractive View Post
    I think the layer helpers would be sufficient if there is no better solution
    Some good news about layering in my next post!

    Quote Originally Posted by dbInteractive View Post
    1 - I'd love to see some kind of improved Matinee (Sequencer?) support for 2D types
    I'm not that experienced with Sequencer's code implementation atm, so I cant say if that is possible or not, but it sounds like something I should support if it is.

    Quote Originally Posted by dbInteractive View Post
    2 - If there was some way to author root-motion for 2D animations
    Interesting, are you talking about frame by frame sprite animation here or 2d skeletal?

  30. #30
    0
    Hi all! Some good news about layering




    I've been experimenting with different solutions to implement layering support and I've discovered that because all Scissor Components are drawn through a single renderer actor, I actually have explicit control over draw order to do whatever layering solution I like! Here I have setup a prototype with SortingLayer and OrderInLayer variables. You can see as I change them the draw order updates accordingly even though they are all drawn at the same depth value.




    In fact SortingLayer will override scene depth, so it is possible to have something that is physically behind something else, draw on top of it. SortingLayer & OrderInLayer are what another popular engine uses for their sprite sorting, but I'm open to suggestions if anyone has any ideas for a better system.

    As always, there are some tradeoffs to this implementation. For this to work all Scissor Components must only use translucent materials as opaque materials are drawn in a separate render pass that can only be correctly scene combined via scene depth. At first I thought this was a deal breaker, but then I noticed that Unity also only supplies translucent materials for their sprite implementation. If you change a Unity sprite to use an Opaque shader it will indeed break render order and their sorting no longer works.

    A more significant downside is because the ScissorRendererActor that actually does all the render calls to the underlying engine is always at the root of the world, this messes up layer sorting with other non Scissor things that need drawing (such as meshes or particles). I'm looking into a way to get the renderer to spawn a new component (that can have a real depth) for each sorting layer that may alleviate some of this, but I'm not sure yet.

    Next I want to take a quick look at how 2d physics can work. I feel like it will need to be a separate implementation to the current physics interface, so I want to try and work out the implications of that.
    Last edited by Structure; 05-05-2017 at 04:01 AM.

  31. #31
    0
    Excellent! That looks very promising, great work. I would add that Unity has recently added a Sorting Group functionality, which allows one object's entire hierarchy to pass over/under another, even if they share sorting layers and orders that would otherwise shuffle their parts together. See here for more detailed explanation with pictures: https://docs.unity3d.com/Manual/SortingGroup.html

    Quote Originally Posted by Structure View Post
    Interesting, are you talking about frame by frame sprite animation here or 2d skeletal?
    For my use case, it was frame by frame. I had a sprite sheet animation of a dude climbing up a ledge and I needed an elegant and seamless way to transition the player character up the ledge with the animation. I don't remember exactly what I tried, but I wasn't able to get a good solution for all my 2D cinematic needs so I switched to Unity which allowed me to create a frame by frame animation with associated transform changes per frame. The root motion in Unity was still not working as intended, but I was able to get something I could work with.
    Last edited by dbInteractive; 05-10-2017 at 11:12 AM.

  32. #32
    0
    Awesome!

    Here is another motivational bump!

  33. #33
    0
    Keep up the great work! looking forward to the results.

  34. #34
    0
    Quote Originally Posted by dbInteractive View Post
    For my use case, it was frame by frame.
    Ah, I see what you mean now. Yes I've hit this issue in the past and I'm not sure there is a perfect solution. Root motion is something I'd like to consider for skeletal animation, so let me have a think about what we can also do for frame by frame stuff.

  35. #35
    2
    Hi everyone, I was a little ill last week so I only had a couple of days to work on the plugin.

    I have spent that time investigating possible options to fully integrate Box2D for 'real' 2D physics support. I can see in the engine source that Paper2D made some headway on this, but has also hit a few issues due to the differences between how box2d works and what is required for the Unreal physics interface. Reading around the forums a little has highlighted that box2d will also need some extension work itself to fully fill out the Unreal physics interface requirements and that I would need to do all this via pull requests to continue that integration further.

    This lead to me making a quick prototype to see if we could just have Box2D running as a completely separate 2D physics world, with its own set of custom components. This way I can fully expose everything box2d has to offer without having to shoehorn it into the current Unreal physics interface.




    Here I have setup some Actors that each have a ScissorSprite, ScissorPhysicsBody and ScissorPhysicsPolygon components. Like the renderer side, you have to add a ScissorPhysicsWorld to your level that the components can register and set themselves up with.




    As a quick test this approach does seem like a promising direction, but the downside will be any other system outside of Scissor land will not have access to the physics as it expects. This means that things like the character controller etc will not work out of the box. But it is my intention to include a more platformer orientated controller that can take advantage of everything Scissor2D has to offer anyway, so it may be fine.

    I have one final area I want to explore before I start to go back and work on everything property and that is what we can do to make the viewport better for 2D work. Ideally I would like a real 2D mode that can support perspective cameras properly while having a good interface to move the world around and edit things in view.

    Investigations ahoy!
    Last edited by Structure; 05-15-2017 at 10:53 AM.

  36. #36

  37. #37
    0
    Thanks for explaining your process and considerations. It's very interesting, and I hope to learn from your implementations if/when source code becomes available. I'm very good at Unity C#, and I'm trying to learn Unreal C++ which seems to be taking more time to really click for me than Unity did.

    Anyways thanks for the update, and great work!

  38. #38
    0
    Man, I will only say the following.
    If you start selling this solution and already works better than paper2d on the span of June to July. I would buy it immediately. I have a budget for critical tools on our company and this fits the definition pretty well.

    So , you have my support, and if you start selling it please send me an IM asap.
    Good luck

  39. #39
    0
    Must... have... another... update...


  40. #40
    2
    Hi everyone! thanks for your patience.

    I've been digging into what I can do to customize the editor for 2D work via plugins. There isn't a huge amount of documentation for this kinda thing other than looking into the engine source to see how other things have been implemented, so everything has been a little slow going.




    But my investigations have proved fruitful, here I have made a little prototype of a possible "2D Mode" for the perspective camera, that takes over the scene view perspective controls and fixes the rotation down the Y axis and also gives drag scene controls like the orthographic view.

    There is a lot I can do with different editor modes, and it will be my intention to make a Tilmap & 2D Landscape modes that can be accessed similarly to the current 3D Landscape mode. Each of these will have a set of tools that lets you edit the scene directly in the scene view instead of a separate asset viewer as Paper2D does now.

    This work brings my initial prototyping to an end, the next step is to make a more detailed production plan for all the features I want to cover and then we should be able to get a better view on a future release schedule. As always if you have any requests or ideas you'd like to see, please do let me know
    Last edited by Structure; 05-29-2017 at 11:21 AM.

Page 1 of 2 12 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •