Jump to content
  • Advertisement

Tom Larkworthy

  • Content Count

  • Joined

  • Last visited

Community Reputation

129 Neutral

About Tom Larkworthy

  • Rank

Personal Information


  • Twitter
  1. Tom Larkworthy

    Corepox Explained: the Core

    In this devlog, we will focus on the Core: a critical component of each spaceship. The core represents you, the AI pilot. It is very important that the core remains intact during battles. The loss of the core will lead to defeat. Here is what it looks like when a core is destroyed. Read the full article at corepox.net
  2. We just rebuilt the Corepox website to improve performance and to extend our functionality with custom pages generated from game data. The website scores 99/100 on a page speed test, and cost less than $5 to host and can be extended and scaled horizontally We think the architecture might be of interest to other indie developers who are looking for highly customizable, high performance but low cost serving technology. Read the full article at corepox.net
  3. Tom Larkworthy

    Corepox Explained: the Lazer

    Today, we will discuss the lazer: a component that can help you destroy your enemy. A lazer shoots when its’ input is greater than zero. If no input is provided, then the lazer’s input is assumed to be 1. If the input is zero or negative, then the lazer does not fire. Here, you can see a small demonstration of the lazer. The lazers with positive or no input, fire a long range pulse of damage with the same shooting power. The actual value of a positive input is not proportional to the power of fire. The lazer with zero input, doesn’t shoot at all. Read the full article at corepox.net
  4. Tom Larkworthy

    Corepox Explained: the Engine

    In today’s devlog we will be talking about the engine: a vital component to any moving spacecraft. The engine gives a propulsive force proportional to the numeric value of its’ input. If the input is lower or equal to zero, then it is counted as zero and the spaceship remains idle. Here, you can see a brief demonstration on how the input of each engine affects the speed of each spaceship. As you can see, the bigger the input is, the faster the engine is. Read the full article at corepox.net
  5. Tom Larkworthy

    Website Upgrade Complete! Mobile Users Rejoice

    Yay, we have migrated to a new provider. Quite a lot of new pipes were installed, which has improved our page speed a fair bit, particularly for mobile users. The old Wix site was particularly annoying for having a jerky cursor which is the terrible input latency. It took 30 seconds before you could interact with the page too!!! Mobile Page Speed for Wix siteDesktop users were not treated quite so bad, but still noticeable input latency.The new site is a vast improvement, though still room for improvement on mobile. No more jankyness! Mobile latency is smashed, most stats are improved except time-to-paint. I think Wix games that metric though.Wow, the desktop site scored 99/100The other improvements are that the site is responsive now, and I added some proxying so I can mix-in Google Cloud Functions under the same domain and behind a common CDN. I’ll explain that stack in another post. It took 4 full days to build migrate, which is time I would prefer to use coding on the game, but I think the results are worth it! Read the full article at corepox.net
  6. Tom Larkworthy

    Web site migration

    Thanks! Wix was a good first pass for understanding what I wanted. Now I am building it properly. I have a reverse proxy setup with Firebase hosting, which merges a managed wordpress install for the blog, and some serverless dyanmic pages that query the game content. I leverage Firebase Hosting's CDN to cache the website pages and serverless pages under a single domain. I will write up this stack properly soon, I just been waiting for a decent enough site to be worth posting the content too! Soon! See this for what I wanted merged on a single domain:-
  7. Tom Larkworthy

    Web site migration

    Hi, our Wix.com website performance has not been satisfactory. Pages are slow, sometimes content does not load, the mouse jerks around etc. So I have been preparing to move host, which should go live over the next day. I've been testing the new site and there are a few things to get right that I can't test in advance, and the consequence of misconfiguration is emails get marked as forged. Fingers crossed I can do this correctly, but if you see some weirdness tell me about it at tom@corepox.net and know that its probably just a symptom of the move. Here is our bad google page speed test at the moment. Fingers cross those numbers go up soon! I particularly dislike the input latency slowness, this is Wix using a lot of clientside javascript rendering on the main thread which is causing the jerky pages. Wix has a lot of great features. I love the speed I built the site, and the widgets are gorgeous. However, the site isn't responsive and I can see mobile users are abandoning the site. So reluctantly I have to say goodbye to Wix. Read the full article at corepox.net
  8. Tom Larkworthy

    Top ships

    Some are monolithic, some are swarms, some use hyperdrives, some do not. The design space is massive! These are a selection scraped from our tester’s leaderboard. Read the full article at corepox.net
  9. Tom Larkworthy

    Corepox is now on #instagram

    You can now follow Corepox on Instagram @corepox.game. On Instagram, we will be sharing pictures & stories giving you a sneaky peak on what happens behind the scenes during Corepox development. Follow us now! Read the full article at corepox.net
  10. Tom Larkworthy

    Corepox explained: the Constant

    Today we look at the most used component in Corepox spaceships, the constant. A constant is basically a numeric output. It is one of the simplest components in Corepox. However, its meaning and magnitude changes according to the number configured & the part that is connected to. Below there are two cases that show how the constant’s meaning and power, changes in different situations. Engine <-> Constant Constant connected to an engine An engine has an input which symbolizes its thrust. When connected to a constant, the speed of the engine is proportional to the value of the constant. If the constant is zero or less, the engine is off. Engine <-> Lazer Turret Constant connected to a lazer turret The lazer turret has an input that defines the direction the turret shoots. This input is called the angle input. When a constant is connected to the turret, then the turret will fire in the direction the constant specifies. Depending on each spaceship design, this component can change power and magnitude. Now, it’s up to us to discover how to use it wisely to make our battles victorious. Read the full article at corepox.net
  11. Tom Larkworthy

    The Joy of Player Designed Ships

    I am overwhelmed by the variety of designs that early testers have developed. Some of these ships solve problems in less components than I thought possible, and this is the point of Corepox. We are exploring the design space together! Here are a few choice designs I found today The Turreted Tank This medium sized ship features three turrets. The outer turrets are steered by dedicated radars, while the center turret is steered by averaging the two adjacent radars! It also has two unguided explosive missiles pre-launched. This ship is likely to remain partially operational even when a radar is destroyed thanks to the redundancy. It just keeps fighting. The Hunter This compact small ship is brimming with lazers. It has an innovative reversed radar guidance system which increases its turn speed. This means this ship will be able switch to new targets very quickly. It has additional armor protecting its critical binary component. The Multiship This is likely the strongest ship of the three. In battle, enemies will tend to concentrate firepower on the top left gun drone. Meanwhile, the fixed turret station is using a radar to aim a single lazer accurately. The gun drone shows some serious engineering by possessing a guidance system that doesn’t require a binary function! That’s a pretty smart size optimization that illustrates how thoughtful ship design provides advantages in Corepox. I can’t wait to see other unexpected innovations in the Corepox universe! Read the full article at corepox.net
  12. Tom Larkworthy

    Happy holidays from Corepox!

    I remember playing Lego when I was a child to create beautiful structures that matched my imaginary world. With Corepox you can do that too. You can create a ship that looks any way you want. The magic of modular designs allows your creativity and makes your ship unique: your own fingerprint. Happy holidays 2018! Phoenix Read the full article at corepox.net
  13. Tom Larkworthy

    Serverless Unity Game Hosting

    You can run Unity in a serverless function, with graphics, in less than 70 lines of code! Full demo code is on github. But why? Serverless is a new cloud trend, you place a snippet of application code in the cloud, and let the cloud providers spin up resources to execute them per execution. It completely eliminates idle serves saving money when you have low traffic, its stateless, its simple to use and it scales massively when you have high traffic bursts, yet scales to zero (i.e. free) when you have no traffic! It sounds awesome (and it is), but there are some drawbacks, you need your application code to run in docker (implying linux). For corepox, I want to be able to render game replays which requires running the Unity binary. Despite the linux build options, I was unable to coax headless rendering into working on systems without GPUs. You can get GPUs with VMs, but gets real expensive fast (>$600 a month). Plus, I don’t want to manage a VM anyway, its a headache. I want serverless! But how to get rendering to work? Here is the solution. 1. Chrome now ships with a WebGL software rendered called swift shader. 2, Unity can compile to a wasm WebGL application. 3, You can run headless Chrome within a function. So, putting it all together, you run Chrome in a function, which pulls your Unity WebGL build and runs it. At this point you have your game running in a function! Its dynamic too, you can pass in arguments to your game binary via the URL query string, and you can read messages from the running game via console instrumentation! I use the latter to trigger when a screenshot is taken. Chrome can take a screenshot of a DOM element, and pass the image data to the function, then the function can return that to the requester as an image/png. A http function becomes an ordinary web image link, whose content is dynamically generated by a unity binary that can read the URL query string. Its a wobbly tower of technology, but the code required is trivial. I have a complete demo of a screenshot service on github. Its 70 lines of custom code (mostly URL parsing, :s)! I’ve included the full WebGL build too so you can test the idea on your own infrastructure without compiling anything. Here is the custom code: The Unity scriptThe snapshotter.cs is a custom behavior inserted into the starting Unity scene. It reads the URL, to alter the color of a text component. It waits for a frame to render before emitting a special log message. Very trivial. You then generate a WebGL binary, then upload it to a storage bucket to serve. You can do this in one action at console.cloud.google.com/storage/browser by using the upload folder option. You do not need this to be world readable as functions can be given storage access. However, I uploaded the demo as world readable so you can see the binary in the flesh in your browser yourself now. Try changing the r, g, b params in the URL: https://storage.googleapis.com/public_website/examples/unity-serverless/build/index.html?r=0.5&g=0&b=0.4This is the link the Cloud Function will see in its own instance of Chrome. You can see the Unity log output in the DevTools console. The Google Cloud FunctionThe GCF function copies its own URL params to a url passes to a Chrome instance. We then wait until we see the special console message and take a snapshot focused on the div hosting the game. That snapshot data is returned with an image content type. To deploy the function you run: gcloud beta functions deploy screenshot_example –trigger-http –runtime nodejs8 –memory 2048MB We max the memory as that also maxes the CPU power too. Once its deployed you can visit the URL in your browser and get a simple an image back! (note its dog slow, like 30 seconds) https://us-central1-corepox-staging.cloudfunctions.net/screenshot_example?r=0.1&g=0.9&g=0.3 Voila! Its works! That image was generated by dynamically running Unity, serverlessly, using Swift Shader to avoid a hardware GPU dependency!!! Gotchas Unity throws OpenGL errors if anti-aliasing is on and fails to render. Switch it off in the Quality settings! I am pretty sure the same idea would work in an AWS Lambda too. Read the full article at corepox.net
  14. Tom Larkworthy

    The Corepox Devlog

    This Devlog is about gameplay, tech and business. I’ll be posting short blogs about the game mechanics and graphics. I’ll also be posting larger posts on how I build, monitor and monetize the game. So stick around if that interests you! Read the full article at corepox.net
  15. Tom Larkworthy

    Top ships

    Some are monolithic, some are swarms, some use hyperdrives, some do not. The design space is massive! Read the full article at corepox.net
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!