Kylljoy's Devblog : Efficiencity
Github RepoWhat is this?I've noticed that I work better when people are observing and silently judging me, and I've also noticed that I've had a dry spell recently where I haven't really been working on any Crayon games. Combining the two, I think that perhaps starting a public Devblog here on the forum will motivate me to actually work, since people will be able to see where the work stalls.
It may also spur new people into developing for Crayon, since they'll be able to see the repo as it develops in real-time, and get an idea for how the development process works. It could also work as a pseudo-tutorial, since you would be able to watch the code get written into the repo and dissect it yourself.
As such, I'm starting this thread, devoted to my work on a new Crayon-based CitySim,
Efficiencity.What is Efficiencity?Efficiencity is my response to the CitySim genre. It will be primarily focused on industrial optimization, starting from a small village and building your way to an urban city. The core of the game focuses on urban planning and logistic networks, which I think could be a fun, self-imposed puzzle.
The reason I want to work on
this game idea in particular is fourfold:
1.
It's complex. Every game since
Accelerative has been simplified with one or two core mechanics. This will be a much more complex and ambitious project, and therefore something I want to get back to.
2.
It's established. The city sim genre is already prevalent enough that there are plenty of ideas and example to draw from. I can therefore use those as inspiration going forward, and as landmarks if I get stuck, while still being able to put my own unique spin on it.
3.
It's continuous. This is one of the first game ideas I've had where I can see myself using a continuous update model. There are many features (national systems, complex economies, diseases, war systems, etc.) I have ideas for implementing, so if the interest is strong, I can continue to work on the game once it's "finished".
4.
It's long. This is one of the only potential games (again, besides
Accelerative) that has a long-term play window. Every other game is something where the average session lasts two to five minutes. This could feasibly be spun out to a client-side game that could last anywhere from minutes to days.
What should I do?I'm going to be posting daily updates (barring days where I have exams or lots of work) on this project going forward. If you are interested in it, follow the thread. More importantly, post your disappointment if I miss an update. That way, I am pressured into putting work into this.
Why should I care?If this system works and I actually manage to produce something within a decent amount of time, I will be producing more games using a devblog system. This means a more populated arcade, and more opportunities for you guys to goof off during class, or play games on the site.
Sound good? Cool.
Day 1 update will be posted tomorrow evening.
604.316 days ago
Oct 14, 2021 - 12:14 AM
I'm so following this thread
604.297 days ago
Oct 14, 2021 - 12:40 AM
I love city building games. I'll be watching from the shadows.
604.294 days ago
Oct 14, 2021 - 12:45 AM
City building game? You have my attention.
604.28 days ago
Oct 14, 2021 - 1:05 AM
It'll be fun watching the repo develop! I haven't gotten into Crayon but this may be my chance to see what's it's like to develop in.
604.278 days ago
Oct 14, 2021 - 1:07 AM
Simcity owned by Kylljoy, oh boy I can't wait to play
604.237 days ago
Oct 14, 2021 - 2:07 AM
Now, does Kylljoy have the energy to do it? Does he need some caffeine?
604.236 days ago
Oct 14, 2021 - 2:08 AM
Devblog - Day #1I'm going to establish a style for these posts. Standard black means just a general thought or update.
Blue indicates tips or tricks that I use while working, in case people are using this as an impromptu tutorial.
Bold references key ideas or mechanics.
Italics represents asides.
As with most games, the first few days are focused on key mechanics and ideas.
I have a notebook set aside where I jot down ideas for mechanics so they can be easily documented. At its core, Efficiencity is a
resource-balancing game. Balancing your workers, your resources, and your well-being is essential to the system the game is built on. I think that the statistics that the game uses can be split into two separate sections -
status and
resources.
Status statistics represent the well-being of your city as a whole. The core statistics that status represents are overarching elements that apply to the entire city. These are the hardest to change with the introduction of a single factory, and require planning ahead of time to balance out.
- Population represents the total amount of people working for you. Population is key to the city, as you can't have one without it, and is the single most important status statistic. You need people to run resource nodes (which produce raw resources), work in factories (which produce refined resources), run transport (unless factories are chained, you need a method of transporting the products of one into the ingredients of another), and build structures (how any new buildings are made in the first place). Population increases when happiness passes a certain threshold, when food and water are adequately met, and when there is space in dwelling units. Population decreases over time as members die out, or if food and water reach a dangerously low level.
- Food represents the total amount of food in stores for the city. Food is consumed based on the amount of population, and is consumed at an increased rate if more people are working. Food is produced by assigning workers to the relevant farming resource nodes. Food will also rot over time, preventing massive stockpiles from lasting forever.
- Water is similar to food, although it requires a different production node and does not rot.
- Happiness represents your population's overall satisfaction with your city. Happiness will rise if certain leisure buildings (such as theatres or parks) are built. Happiness will fall if food and water requirements are not being met, or if taxation is too high. Buildings are overall more productive if population happiness is being met.
- Money represents the available fiscal assets you may expend in order to grow your city. Money is required in constructing most buildings. You may acquire money by either taxing your population at a variable rate (between 0-50%), or selling products to a market which I plan to have a supply-demand economy, preventing singular products from being mass-sold. Money is also consumed in order to pay wages in factories this may be subject to change
- Power represents the overall electrical energy in your city's power grid. Non coal-powered buildings consume power in order to operate. Power is increased through the introduction of power-generating buildings. The power consumption of your buildings must be met, otherwise your factories will begin to go offline.
Resources represent your city's inventory of products. This ranges from the
raw resources (such as copper, iron, coal, or oil) to the
intermediate products (such as metal plates, pistons, wiring, or piping), to the
final products (such as engines, vehicles, or computers).
- Raw resources are produced by resource nodes. I plan for six raw resources - Iron, Copper, Stone, Oil, Coal, Wood. These may be produced by planting a resource node anywhere in the city - although certain spots have a designated "richness" that will produce more of specific types of resources (for example, a plot may be copper-rich, stone-rich, or both). Food may also be produced in a similar manner, with both food and wood depending on the fertility richness of a plot. As resources are extracted, the richness of a plot decreases. Fertility is the only richness that is returned over time, providing incentive for fields to lay fallow for a season.
- Products are produced by factories, which take a certain set of ingredients in, and produce a certain product as a result. Factories take power of some form (with the exception of some early refineries, which require only a steady supply of coal), and produce a certain resource, which may be sent to another factory for further refinement into a final product.
That's it for this update. Tomorrow will be focused on logistics. 603.307 days ago
Oct 15, 2021 - 12:26 AM
I think as Devery, I should be involved in the devblog. And also this sounds like my sort of game.
603.274 days ago
Oct 15, 2021 - 1:14 AM
You may write a quote of the day for each post, if you would like.
603.271 days ago
Oct 15, 2021 - 1:18 AM
602.669 days ago
Oct 15, 2021 - 3:44 PM
It doesn't even exist yet. But when it's ready, it'll probably be available in the arcade.
602.665 days ago
Oct 15, 2021 - 3:50 PM
Sounds awesome! Lmk if I can help with anything!
602.655 days ago
Oct 15, 2021 - 4:05 PM
Does crayon have a built-in means to save data using cookies or something like that, or are you going to have to implement saving yourself? Or is this going to be a shorter game that can be completed in one sitting?
602.649 days ago
Oct 15, 2021 - 4:13 PM
Does crayon have a built-in means to save data using cookies or something like that, or are you going to have to implement saving yourself? Or is this going to be a shorter game that can be completed in one sitting?
I need to check with Blake, but the answer is yes and no. Saving
is possible, but I'm unsure if the TCaS library supports it or not. Chances are, there will be an embedded "unsavable" version on the arcade, and a local version available for download if you want to play longer.
602.644 days ago
Oct 15, 2021 - 4:21 PM
Why not add a password system? Though that may take a while
602.642 days ago
Oct 15, 2021 - 4:24 PM
The amount of data and lack of an embedded copy-paste system makes this unfeasible.
602.638 days ago
Oct 15, 2021 - 4:30 PM
602.637 days ago
Oct 15, 2021 - 4:32 PM
What about a password system like some games on the NES? 6,7 characters, selected in-game?
I'm sure data would still be an issue, though.
602.636 days ago
Oct 15, 2021 - 4:32 PM
He just said he wouldn't be able to do it
602.635 days ago
Oct 15, 2021 - 4:34 PM
Basically there are way more possible save states than passwords of reasonable length, and you can't copy paste the password either.
602.635 days ago
Oct 15, 2021 - 4:35 PM
What about a password system like some games on the NES? 6,7 characters, selected in-game?
Those work because the games are linear with set development. Each section has a set save and set progression. You only need six or seven states to be restored in that case. This is a nonlinear game with
many more variables than your average NES game.
Here's some basic data science to help you understand :Assuming the city has at least a 10x10 grid, with four possible factories per square, that's a minimum of 2 bits per square for a total of 200 bits, which is 25 bytes. Or ~100 characters long, using standard ascii characters.
That's the
minimum. Not including things like richness, status, population, more factories, or logistic networks.
Password is an unfeasible system without the implementation of copy+paste.
602.63 days ago
Oct 15, 2021 - 4:40 PM
Do you not have copy paste or what
602.628 days ago
Oct 15, 2021 - 4:43 PM
602.628 days ago
Oct 15, 2021 - 4:44 PM
Copy and paste does not work on JS canvas, which is what Crayon uses, since any text displayed is a bitmap image and not actual text.
602.628 days ago
Oct 15, 2021 - 4:44 PM
{
"thread_id": "11540",
"posts": [
{
"id": "1173522",
"time": "1634170443",
"html": "<h2 class=\"heading\">Kylljoy's Devblog : Efficiencity</h2><br /><span style=\"font-weight:bold;\"><a href=\"https://github.com/Kylljoy/efficiencity/tree/master\">Github Repo</a></span><br /><br /><span style=\"font-weight:bold;\">What is this?</span><br />I've noticed that I work better when people are observing and silently judging me, and I've also noticed that I've had a dry spell recently where I haven't really been working on any Crayon games. Combining the two, I think that perhaps starting a public Devblog here on the forum will motivate me to actually work, since people will be able to see where the work stalls.<br /><br /> It may also spur new people into developing for Crayon, since they'll be able to see the repo as it develops in real-time, and get an idea for how the development process works. It could also work as a pseudo-tutorial, since you would be able to watch the code get written into the repo and dissect it yourself.<br /><br />As such, I'm starting this thread, devoted to my work on a new Crayon-based CitySim, <span style=\"font-style:italic;\">Efficiencity.</span><br /><br /><span style=\"font-weight:bold;\">What is Efficiencity?</span><br />Efficiencity is my response to the CitySim genre. It will be primarily focused on industrial optimization, starting from a small village and building your way to an urban city. The core of the game focuses on urban planning and logistic networks, which I think could be a fun, self-imposed puzzle.<br /><br />The reason I want to work on <span style=\"font-style:italic;\">this game idea in particular</span> is fourfold:<br />1. <span style=\"font-weight:bold;\">It's complex</span>. Every game since <span style=\"font-style:italic;\">Accelerative</span> has been simplified with one or two core mechanics. This will be a much more complex and ambitious project, and therefore something I want to get back to.<br />2. <span style=\"font-weight:bold;\">It's established</span>. The city sim genre is already prevalent enough that there are plenty of ideas and example to draw from. I can therefore use those as inspiration going forward, and as landmarks if I get stuck, while still being able to put my own unique spin on it.<br />3. <span style=\"font-weight:bold;\">It's continuous</span>. This is one of the first game ideas I've had where I can see myself using a continuous update model. There are many features (national systems, complex economies, diseases, war systems, etc.) I have ideas for implementing, so if the interest is strong, I can continue to work on the game once it's "finished".<br />4. <span style=\"font-weight:bold;\">It's long</span>. This is one of the only potential games (again, besides <span style=\"font-style:italic;\">Accelerative</span>) that has a long-term play window. Every other game is something where the average session lasts two to five minutes. This could feasibly be spun out to a client-side game that could last anywhere from minutes to days.<br /><br /><span style=\"font-weight:bold;\">What should I do?</span><br />I'm going to be posting daily updates (barring days where I have exams or lots of work) on this project going forward. If you are interested in it, follow the thread. More importantly, post your disappointment if I miss an update. That way, I am pressured into putting work into this.<br /><br /><span style=\"font-weight:bold;\">Why should I care?</span><br />If this system works and I actually manage to produce something within a decent amount of time, I will be producing more games using a devblog system. This means a more populated arcade, and more opportunities for you guys to goof off during class, or play games on the site.<br /><br />Sound good? Cool.<br /><br />Day 1 update will be posted tomorrow evening.",
"user": "kylljoy"
},
{
"id": "1173526",
"time": "1634172054",
"html": "I'm so following this thread",
"user": "fattythefatguy"
},
{
"id": "1173527",
"time": "1634172342",
"html": "I love city building games. I'll be watching from the shadows.",
"user": "ebag"
},
{
"id": "1173535",
"time": "1634173555",
"html": "City building game? You have my attention.",
"user": "wlicky"
},
{
"id": "1173536",
"time": "1634173676",
"html": "It'll be fun watching the repo develop! I haven't gotten into Crayon but this may be my chance to see what's it's like to develop in.",
"user": "caveat"
},
{
"id": "1173567",
"time": "1634177222",
"html": "Simcity owned by Kylljoy, oh boy I can't wait to play",
"user": "samsung23"
},
{
"id": "1173568",
"time": "1634177307",
"html": "Now, does Kylljoy have the energy to do it? Does he need some caffeine?",
"user": "wlicky"
},
{
"id": "1173868",
"time": "1634257586",
"html": "<span style=\"font-weight:bold;\">Devblog - Day #1</span><br /><br />I'm going to establish a style for these posts. Standard black means just a general thought or update. <span style=\"color:#0000ff;\">Blue indicates tips or tricks that I use while working, in case people are using this as an impromptu tutorial</span>. <span style=\"font-weight:bold;\">Bold references key ideas or mechanics</span>. <span style=\"font-style:italic;\">Italics represents asides</span>.<br /><br />As with most games, the first few days are focused on key mechanics and ideas. <span style=\"color:#0000ff;\">I have a notebook set aside where I jot down ideas for mechanics so they can be easily documented</span>. At its core, Efficiencity is a <span style=\"font-weight:bold;\">resource-balancing game</span>. Balancing your workers, your resources, and your well-being is essential to the system the game is built on. I think that the statistics that the game uses can be split into two separate sections - <span style=\"font-weight:bold;\">status</span> and <span style=\"font-weight:bold;\">resources</span>.<br /><br /><span style=\"font-weight:bold;\">Status </span>statistics represent the well-being of your city as a whole. The core statistics that status represents are overarching elements that apply to the entire city. These are the hardest to change with the introduction of a single factory, and require planning ahead of time to balance out.<br /><ul><li> <span style=\"font-weight:bold;\">Population</span> represents the total amount of people working for you. Population is key to the city, as you can't have one without it, and is the single most important status statistic. You need people to run <span style=\"font-weight:bold;\">resource nodes</span> (which produce raw resources), work in <span style=\"font-weight:bold;\">factories </span>(which produce refined resources), run <span style=\"font-weight:bold;\">transport </span>(unless factories are <span style=\"font-weight:bold;\">chained</span>, you need a method of transporting the products of one into the ingredients of another), and <span style=\"font-weight:bold;\">build structures</span> (how any new buildings are made in the first place). Population increases when <span style=\"font-weight:bold;\">happiness </span> passes a certain threshold, when <span style=\"font-weight:bold;\">food </span>and <span style=\"font-weight:bold;\">water</span> are adequately met, and when there is space in <span style=\"font-weight:bold;\">dwelling units</span>. Population decreases over time as members die out, or if food and water reach a dangerously low level.</li><li> <span style=\"font-weight:bold;\">Food</span> represents the total amount of food in stores for the city. Food is consumed based on the amount of population, and is consumed at an increased rate if more people are working. Food is produced by assigning workers to the relevant farming resource nodes. Food will also rot over time, preventing massive stockpiles from lasting forever.</li><li> <span style=\"font-weight:bold;\">Water</span> is similar to food, although it requires a different production node and does not rot.</li><li> <span style=\"font-weight:bold;\">Happiness</span> represents your population's overall satisfaction with your city. Happiness will rise if certain leisure buildings (such as theatres or parks) are built. Happiness will fall if food and water requirements are not being met, or if <span style=\"font-weight:bold;\">taxation </span>is too high. Buildings are overall more productive if population happiness is being met.</li><li> <span style=\"font-weight:bold;\">Money</span> represents the available fiscal assets you may expend in order to grow your city. Money is required in constructing most buildings. You may acquire money by either taxing your population at a variable rate (between 0-50%), or selling products to a market <span style=\"font-style:italic;\">which I plan to have a supply-demand economy, preventing singular products from being mass-sold</span>. Money is also consumed in order to pay wages in factories <span style=\"font-style:italic;\">this may be subject to change</span></li><li> <span style=\"font-weight:bold;\">Power</span> represents the overall electrical energy in your city's power grid. Non coal-powered buildings consume power in order to operate. Power is increased through the introduction of power-generating buildings. The power consumption of your buildings must be met, otherwise your factories will begin to go offline.</li></ul><br /><span style=\"font-weight:bold;\">Resources</span> represent your city's inventory of products. This ranges from the <span style=\"font-weight:bold;\">raw resources </span>(such as copper, iron, coal, or oil) to the <span style=\"font-weight:bold;\">intermediate products</span> (such as metal plates, pistons, wiring, or piping), to the <span style=\"font-weight:bold;\">final products</span> (such as engines, vehicles, or computers).<br /><ul><li><span style=\"font-weight:bold;\">Raw resources</span> are produced by <span style=\"font-weight:bold;\">resource nodes</span>. I plan for six raw resources - Iron, Copper, Stone, Oil, Coal, Wood. These may be produced by planting a resource node anywhere in the city - although certain spots have a designated "richness" that will produce more of specific types of resources (for example, a plot may be copper-rich, stone-rich, or both). Food may also be produced in a similar manner, with both food and wood depending on the <span style=\"font-weight:bold;\">fertility</span> richness of a plot. As resources are extracted, the richness of a plot decreases. Fertility is the only richness that is returned over time, providing incentive for fields to lay fallow for a season.</li><li> <span style=\"font-weight:bold;\">Products</span> are produced by factories, which take a certain set of ingredients in, and produce a certain product as a result. Factories take power of some form (with the exception of some early refineries, which require only a steady supply of coal), and produce a certain resource, which may be sent to another factory for further refinement into a final product.</li></ul><br /><span style=\"font-weight:bold;\">That's it for this update. Tomorrow will be focused on logistics.</span>",
"user": "kylljoy"
},
{
"id": "1173870",
"time": "1634260489",
"html": "I think as Devery, I should be involved in the devblog. And also this sounds like my sort of game.",
"user": "devery"
},
{
"id": "1173871",
"time": "1634260708",
"html": "You may write a quote of the day for each post, if you would like.",
"user": "kylljoy"
},
{
"id": "1173990",
"time": "1634312682",
"html": "How do I get this game",
"user": "samsung23"
},
{
"id": "1173997",
"time": "1634313051",
"html": "It doesn't even exist yet. But when it's ready, it'll probably be available in the arcade.",
"user": "kylljoy"
},
{
"id": "1174005",
"time": "1634313936",
"html": "Sounds awesome! Lmk if I can help with anything!",
"user": "samsung23"
},
{
"id": "1174015",
"time": "1634314418",
"html": "Does crayon have a built-in means to save data using cookies or something like that, or are you going to have to implement saving yourself? Or is this going to be a shorter game that can be completed in one sitting?",
"user": "aprzn123"
},
{
"id": "1174020",
"time": "1634314881",
"html": "<div style=\"margin:20px; background-image:url(/images/light.png);\"><div style=\"border:1px solid #888; padding:5px;\"><a href=\"/users/aprzn123\">aprzn123</a> said:</div><div style=\"border:1px solid #888; padding:20px;\">Does crayon have a built-in means to save data using cookies or something like that, or are you going to have to implement saving yourself? Or is this going to be a shorter game that can be completed in one sitting?</div></div><br />I need to check with Blake, but the answer is yes and no. Saving <span style=\"font-style:italic;\">is</span> possible, but I'm unsure if the TCaS library supports it or not. Chances are, there will be an embedded "unsavable" version on the arcade, and a local version available for download if you want to play longer.",
"user": "kylljoy"
},
{
"id": "1174026",
"time": "1634315053",
"html": "Why not add a password system? Though that may take a while",
"user": "broncoboy18"
},
{
"id": "1174036",
"time": "1634315438",
"html": "The amount of data and lack of an embedded copy-paste system makes this unfeasible.",
"user": "kylljoy"
},
{
"id": "1174039",
"time": "1634315520",
"html": "?",
"user": "samsung23"
},
{
"id": "1174040",
"time": "1634315558",
"html": "What about a password system like some games on the NES? 6,7 characters, selected in-game?<br /><br />I'm sure data would still be an issue, though.",
"user": "ebag"
},
{
"id": "1174043",
"time": "1634315660",
"html": "He just said he wouldn't be able to do it",
"user": "broncoboy18"
},
{
"id": "1174044",
"time": "1634315702",
"html": "Basically there are way more possible save states than passwords of reasonable length, and you can't copy paste the password either.",
"user": "aprzn123"
},
{
"id": "1174051",
"time": "1634316058",
"html": "<div style=\"margin:20px; background-image:url(/images/light.png);\"><div style=\"border:1px solid #888; padding:5px;\"><a href=\"/users/ebag\">e-bag</a> said:</div><div style=\"border:1px solid #888; padding:20px;\">What about a password system like some games on the NES? 6,7 characters, selected in-game?</div></div><br />Those work because the games are linear with set development. Each section has a set save and set progression. You only need six or seven states to be restored in that case. This is a nonlinear game with <span style=\"font-style:italic;\">many </span>more variables than your average NES game.<br /><br /><span style=\"color:#0000ff;\">Here's some basic data science to help you understand :</span><br /><br />Assuming the city has at least a 10x10 grid, with four possible factories per square, that's a minimum of 2 bits per square for a total of 200 bits, which is 25 bytes. Or ~100 characters long, using standard ascii characters.<br /><br />That's the <span style=\"font-style:italic;\">minimum</span>. Not including things like richness, status, population, more factories, or logistic networks.<br /><br />Password is an unfeasible system without the implementation of copy+paste.",
"user": "kylljoy"
},
{
"id": "1174055",
"time": "1634316232",
"html": "Do you not have copy paste or what",
"user": "samsung23"
},
{
"id": "1174056",
"time": "1634316288",
"html": "Not in Crayon, no.",
"user": "ebag"
},
{
"id": "1174057",
"time": "1634316292",
"html": "Copy and paste does not work on JS canvas, which is what Crayon uses, since any text displayed is a bitmap image and not actual text.",
"user": "kylljoy"
}
],
"users": {
"kylljoy": {
"name": "Kylljoy",
"key": "kylljoy",
"url": "/users/kylljoy",
"avatar": "/uploads/drawn/26951.png",
"rankClass": "civilian",
"rankText": "",
"posts": "4927"
},
"fattythefatguy": {
"name": "Fatty the fat guy",
"key": "fattythefatguy",
"url": "/users/fattythefatguy",
"avatar": "/uploads/drawn/35536.png",
"rankClass": "civilian",
"rankText": "",
"posts": "2591"
},
"ebag": {
"name": "e-bag",
"key": "ebag",
"url": "/users/ebag",
"avatar": "/uploads/drawn/42500.png",
"rankClass": "civilian",
"rankText": "",
"posts": "11309"
},
"wlicky": {
"name": "W_Licky",
"key": "wlicky",
"url": "/users/wlicky",
"avatar": "/uploads/drawn/42716.png",
"rankClass": "civilian",
"rankText": "",
"posts": "11243"
},
"caveat": {
"name": "caveat",
"key": "caveat",
"url": "/users/caveat",
"avatar": "/uploads/drawn/39364.png",
"rankClass": "civilian",
"rankText": "",
"posts": "3265"
},
"samsung23": {
"name": "Samsung23",
"key": "samsung23",
"url": "/users/samsung23",
"avatar": "/uploads/drawn/27967.png",
"rankClass": "civilian",
"rankText": "",
"posts": "2075"
},
"devery": {
"name": "Devery",
"key": "devery",
"url": "/users/devery",
"avatar": "/uploads/drawn/31604.png",
"rankClass": "civilian",
"rankText": "",
"posts": "3761"
},
"aprzn123": {
"name": "aprzn123",
"key": "aprzn123",
"url": "/users/aprzn123",
"avatar": "/uploads/drawn/23412.png",
"rankClass": "civilian",
"rankText": "",
"posts": "7005"
},
"broncoboy18": {
"name": "BroncoBoy18",
"key": "broncoboy18",
"url": "/users/broncoboy18",
"avatar": "/uploads/drawn/21075.png",
"rankClass": "civilian",
"rankText": "",
"posts": "10491"
}
},
"page_num": 1,
"locked": 0,
"total_pages": 4
}