Jump to content

Introducing Leadwerks Marketplace

Admin

1,926 views

Steam Workshop was a compelling idea to allow game asset authors to sell their items for use with Leadwerks Game Engine. However, the system has turned out to have some fundamental problems, despite my best efforts to work around it.

  • Free items are not curated, causing the store to fill with low quality content.
  • Some people have reported trouble downloading items.
  • The publishing process is pretty tedious.
  • The check-out process requires adding funds to Steam Wallet, and is just not very streamlined.

At the same time, three new technologies have emerged that make it possible to deliver a better customer and seller experience through our website.

  • Amazon S3 offers cheap and reliable storage of massive amounts of data.
  • Paypal credit card tokens allow us to safely store a token on our server that can't be used anywhere else, instead of a credit card number. This eliminates the danger of a potential website hack revealing your information.
  • Invision Power Board has integrated both these technologies into our commerce system.

it would not have been possible to build a web store a few years ago because the cost of server space would have been prohibitive, and storing hundreds of gigs of data would have made my website backup process unsustainable. So at the time, the unlimited storage of Steam and their payment processing system was very appealing. That is no longer the case.

To solve the problems of Steam Workshop, and give you easy access to a large library of ready-to-use game assets, I am happy to introduce Leadwerks Marketplace.

Image1.png.24d14b7a0b167925a73218b14beb0d80.png

The main page shows featured assets, new content, and the most popular items, with big thumbnails everywhere.

storefront.thumb.png.e20b26529cb6297776f8693763ea425c.png

 

When you view an item, screenshots, videos, and detailed technical specifications are shown:

specs.png.347d5fcdf0d41ff48ef33faf51ba2553.png

How does Leadwerks Marketplace improve things?:

  • Easy download of zip files that are ready to use with Leadwerks. You can use File > Import menu item to extract them to the current project, or just unzip them yourself.
  • All content is curated. Items are checked for compatibility and quality.
  • Clear technical specifications for every file, so you know exactly what you are getting.
  • Cheap and reliable storage forever with Amazon S3.
  • Any DLCs or Workshop Store items you purchased can be downloaded from Leadwerks Marketplace by linking your Steam account to your profile.
  • Easy publishing of your items with our web-based uploader.

We're launching with over 50 gigabytes of game assets, and more will be added continuously. To kick off the launch we're offering some items at major discounts during the Summer Game Tournament. Here are a few assets to check out:

Get "The Zone" for just $4.99:

Or download our Mercenary character for free! Just create your free Leadwerks account to gain access.

Other items will be featured on sale during the Summer Game Tournament:

After purchasing an item, you can download it immediately. All your purchased items will be shown in the Purchases area, which you can access from the user menu in the top-right of this the website header:

Image5.png.3510cc6303be8a5d1c03da90480c62d8.png

Here all your purchased items will be available to download, forever:

Image1.png.2a3f4a55872f3633a9d25639d35c74e4.png.6434392e4f8e5c7239a50fea3704407f.png

If you are interested in selling your game assets to over 20,000 developers, you can upload your items now. Sellers receive a 70% royalty for each sale, with a minimum payout of just $20. See the content guidelines for details and contact me if you need any help. If you have a lot of good content, we can even convert your assets for you and make them game-ready for Leadwerks, so there's really no risk to you.

Browse game assets now.

 

  • Like 4


19 Comments


Recommended Comments

That is very cool! Actually I never used the old asset shop, it was very clunky had bad loading times, at least for me and it just was no much fun to browse around in it. I think a good asset store is very important and I think this is one of the reasons why Unity is so popular as their asset store is filled with high quality assets. Now this just need some more good content :)

Share this comment


Link to comment

Nice , please add space/scifi assets:  asteroids, comets , quality skyboxes, satellites, space stations etc

Share this comment


Link to comment
1 minute ago, aiaf said:

Nice , please add space assets:  asteroids, comets , quality skyboxes, satellites, space stations etc

Is there a specific author who's content you would like to see added?

 

 

Share this comment


Link to comment

Would like some modular space stations, ships, turrets and more skyboxes.

Hmm can this market be extended to have some artist do some custom unique work for us ? would be nice as option.

Share this comment


Link to comment

Needs 1 or more ways to find sale items.   OK to have some in rotator but I think it only shows some.  I can pretty much guarantee that if I ever go to the shop I will specifically look at sale items as a priority.   If I can get 2 items for the same cost as 1 then this equates to double time saved (sort of)....it's not just because I'm a cheapskate!  :)

 

 

Share this comment


Link to comment

will the stuff we got on steam show in are account or is that lost and once steam stop we lost 

thanks and it looking good as well

Share this comment


Link to comment
22 minutes ago, carlb said:

will the stuff we got on steam show in are account or is that lost and once steam stop we lost 

thanks and it looking good as well

If your Leadwerks account is linked to your Steam account, then the permissions will transfer and you can download that item from its page in the Marketplace. This works for both DLCs and Workshop items. These will also continue to be available on Steam, forever.

Share this comment


Link to comment
1 minute ago, awgsknite said:

Can we use these marketplace assets that we buy in another game engine ?

Yes, they are yours to use in any games. Almost all of them include the source art files as well.

  • Thanks 1

Share this comment


Link to comment

Not just assets are there, Luawerks (a back end framework) is 50% off at $4.99/USD! Use this to cut hours of devtime with your tournament projects. There is a bug tracker (currently no reported bugs) and mini articles over on GitHub. 

Any questions, I'm just an email away and I'll get back to you as soon as I can. 🙂

  • Like 1

Share this comment


Link to comment
50 minutes ago, awgsknite said:

Does that apply to the assets I bought on the Steam marketplace as well ?

I just checked the EULA, and there is nothing in there that says what system the content can be used with. Individual DLCs may vary.

  • Thanks 1

Share this comment


Link to comment

Some feedback: When viewing categories, can you show a price tag? Also sorting on price would fit common webshop capabilities:

image.thumb.png.588b0c523a8849d5923dc019e9aa25b6.png

  • Like 2

Share this comment


Link to comment
39 minutes ago, AggrorJorn said:

Some feedback: When viewing categories, can you show a price tag? Also sorting on price would fit common webshop capabilities:

I added the price to all file thumbnails.

  • Like 1

Share this comment


Link to comment

There are a lot of cool model packs. Really tempting not to buy all kinds of stuff that I do not need. 

Share this comment


Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Blog Entries

    • By Josh in Josh's Dev Blog 0
      The Leadwerks 5 beta will soon be updated with particle emitters and an example particle system plugin. Previously, I showed some impressive results with physically interactive particles that collide with and exert forces on the environment. I decided to use the plugin system for controlling particle behavior, as this offers the best performance and can be run on the physics thread. 
      A particle system plugin uses some predefined structures and functions to modify the behavior of particles when they are emitted or as they are updated. This allows for unlimited features to be added to the particle system, because anything you want can be added with a plugin. A system for sending settings to the plugin will be implemented in the future so you can adjust the plugin settings and see the results. The default particle settings and features will probably stay pretty barebones and I will just use the plugin system to add any advanced functionality since it is so flexible.
      void EmitParticle(ParticleModifier* mod, ParticleSystem* particlesystem, Particle* particle) { if (mod->emissionshape == EMISSION_SHAPE_BOX) { particle->position[0] = Random(-mod->area[0], mod->area[0]); particle->position[1] = Random(-mod->area[1], mod->area[1]); particle->position[2] = Random(-mod->area[2], mod->area[2]); } else if (mod->emissionshape == EMISSION_SHAPE_CYLINDER) { particle->position[0] = Random(-mod->area[0], mod->area[0]); particle->position[1] = Random(-mod->area[1], mod->area[1]); particle->position[2] = Random(-mod->area[2], mod->area[2]); auto l = sqrt(particle->position[0] * particle->position[0] + particle->position[1] * particle->position[1] + particle->position[2] * particle->position[2]); if (l > 0.0f) { particle->position[0] /= l; particle->position[1] /= l; particle->position[2] /= l; } } particle->position[0] += particlesystem->matrix[12]; particle->position[1] += particlesystem->matrix[13]; particle->position[2] += particlesystem->matrix[14]; } There are three other new Lua examples included. Coroutines.lua shows how a sequence of actions can be added to an entity before the game starts, and the actions will be executed in order:
      --Create model local model = CreateBox(world) --Add some behaviors to be executed in order model:AddCoroutine(MoveToPoint, Vec3(3,0,0), 2) model:AddCoroutine(MoveToPoint, Vec3(-3,0,0), 2) model:AddCoroutine(MoveToPoint, Vec3(0,0,0), 2) --Main loop while window:Closed() == false do world:Update() world:Render(framebuffer) end This is great for setting up cut scenes or other sequences of events.
      An example showing how to enable tessellation is also included. Tessellation is now a per-camera setting.
      camera:SetTessellation(10) The number you input is the size in pixels of the tessellated primitives. Use zero to disable tessellation. Tessellation is disabled by default on all cameras.
      Finally, an example showing how to use a texture loader plugin is included. All you have to do is load the plugin and after that textures can be loaded in VTF format:
      local vtfloader = LoadPlugin("Plugins/VTF.dll") local tex = LoadTexture("Materials/wall01.vtf")  
    • By Josh in Josh's Dev Blog 4
      I made some changes to the design of the particle system. I am less concerned with the exact behavior of particles as they move around and move interested right now in building a system with good performance and deep physics interactions. Although I want particle behavior to be customizable, I don't think scripts are the right tool for the job. C++ plugins are better suited for this for two reasons.
      C++ is much faster, and particles are a system that will make heavy use of that. Lua scripts can't be run on separate threads. In Leadwerks Engine 4 we have basic particle collisions, but I wanted something more interactive in the new system. I move the particle update code into the physics thread. I implemented collision as well as the ability for particles to exert forces on other objects. Here's what happens when some slow-moving smoke particles interact with a scene: The lower platform rotates freely while the upper platform is motorized.
      When the particle velocity is increase they start to behave like a stream of water:
      Best of all, the speed is surprisingly fast. 4000 particles with collision update in just 2 milliseconds. The code scales well across cores so if you have a lot of CPU cores simulations with 100,000 particles are possible.
      Right now particles are processed in the physics thread, and get sent to the rendering thread for display, but right now the main thread actually never sees the individual particles.
      This is fast enough I think particles will default to full physics. Instead of just being a dumb visual effect we are going to have fully interactive fluids and gases. Flamethrowers can fill a room with fire and it will creep around corners to fill a space.
    • By Josh in Josh's Dev Blog 7
      For finer control over what 2D elements appear on what camera, I have implemented a system of "Sprite Layers". Here's how it works:
      A sprite layer is created in a world. Sprites are created in a layer. Layers are attached to a camera (in the same world). The reason the sprite layer is linked to the world is because the render tweening operates on a per-world basis, and it works with the sprite system just like the entity system. In fact, the rendering thread uses the same RenderNode class for both.
      I have basic GUI functionality working now. A GUI can be created directly on a window and use the OS drawing commands, or it can be created on a sprite layer and rendered with 3D graphics. The first method is how I plan to make the new editor user interface, while the second is quite flexible. The most common usage will be to create a sprite layer, attach it to the main camera, and add a GUI to appear in-game. However, you can just as easily attach a sprite layer to a camera that has a texture render target, and make the GUI appear in-game on a panel in 3D. Because of these different usages, you must manually insert events like mouse movements into the GUI in order for it to process them:
      while true do local event = GetEvent() if event.id == EVENT_NONE then break end if event.id == EVENT_MOUSE_DOWN or event.id == EVENT_MOUSE_MOVE or event.id == EVENT_MOUSE_UP or event.id == EVENT_KEY_DOWN or event.id == EVENT_KEY_UP then gui:ProcessEvent(event) end end You could also input your own events from the mouse position to create interactive surfaces, like in games like DOOM and Soma. Or you can render the GUI to a texture and interact with it by feeding in input from VR controllers.

      Because the new 2D drawing system uses persistent objects instead of drawing commands the code to display elements has changed quite a lot. Here is my current button script. I implemented a system of abstract GUI "rectangles" the script can create and modify. If the GUI is attached to a sprite layer these get translated into sprites, and if it is attached directly to a window they get translated into system drawing commands. Note that the AddTextRect doesn't even allow you to access the widget text directly because the widget text is stored in a wstring, which supports Unicode characters but is not supported by Lua.
      --Default values widget.pushed=false widget.hovered=false widget.textindent=4 widget.checkboxsize=14 widget.checkboxindent=5 widget.radius=3 widget.textcolor = Vec4(1,1,1,1) widget.bordercolor = Vec4(0,0,0,0) widget.hoverbordercolor = Vec4(51/255,151/255,1) widget.backgroundcolor = Vec4(0.2,0.2,0.2,1) function widget:MouseEnter(x,y) self.hovered = true self:Redraw() end function widget:MouseLeave(x,y) self.hovered = false self:Redraw() end function widget:MouseDown(button,x,y) if button == MOUSE_LEFT then self.pushed=true self:Redraw() end end function widget:MouseUp(button,x,y) if button == MOUSE_LEFT then self.pushed = false if self.hovered then EmitEvent(EVENT_WIDGET_ACTION,self) end self:Redraw() end end function widget:OK() EmitEvent(EVENT_WIDGET_ACTION,self) end function widget:KeyDown(keycode) if keycode == KEY_ENTER then EmitEvent(EVENT_WIDGET_ACTION,self) self:Redraw() end end function widget:Start() --Background self:AddRect(self.position, self.size, self.backgroundcolor, false, self.radius) --Border if self.hovered == true then self:AddRect(self.position, self.size, self.hoverbordercolor, true, self.radius) else self:AddRect(self.position, self.size, self.bordercolor, true, self.radius) end --Text if self.pushed == true then self:AddTextRect(self.position + iVec2(1,1), self.size, self.textcolor, TEXT_CENTER + TEXT_MIDDLE) else self:AddTextRect(self.position, self.size, self.textcolor, TEXT_CENTER + TEXT_MIDDLE) end end function widget:Draw() --Update position and size self.primitives[1].position = self.position self.primitives[1].size = self.size self.primitives[2].position = self.position self.primitives[2].size = self.size self.primitives[3].size = self.size --Update the border color based on the current hover state if self.hovered == true then self.primitives[2].color = self.hoverbordercolor else self.primitives[2].color = self.bordercolor end --Offset the text when button is pressed if self.pushed == true then self.primitives[3].position = self.position + iVec2(1,1) else self.primitives[3].position = self.position end end This is arguably harder to use than the Leadwerks 4 system, but it gives you advanced capabilities and better performance that the previous design did not allow.
×
×
  • Create New...