{"author_link":"\/users\/m-1","author_name":"M-1","author_uid":1010194,"comments":[{"id":986808,"author_name":"txomin","author_uid":"txomin","epoch":1696244267,"text":"It took some time for me to understand that I was supposed to remain in the square and not necessary in the brightest area but overall the idea is pretty cool! Good job \ud83d\udc4d","format":"md","likes":2,"spam":"N"},{"id":1011943,"author_name":"LDJam user 381180","author_uid":"381180","epoch":1696538343,"text":"Great idea! I love the zoom so I tried to have draws all the time :^). I think that would be awesome to have a progressive endless zooming, with random perturbations.","format":"md","likes":1,"spam":"N"},{"id":1017202,"author_name":"Martin183","author_uid":"martin183","epoch":1696712700,"text":"Nice fractals graphics and cool concept! Has potential if the gameplay would be extended!","format":"md","likes":1,"spam":"N"},{"id":1017204,"author_name":"GlennVerheij","author_uid":"glennverheij","epoch":1696712758,"text":"I didn't understand what the water was. I thought I was in space or something. The fractal theme is really cool. I wish the characters where a bit more consistent with the looks of the background.","format":"md","likes":1,"spam":"N"},{"id":1017451,"author_name":"someone","author_uid":"someone","epoch":1696722165,"text":"Interesting concept. The fractals were nice, but it wasn't clear what I was supposed to do.","format":"md","likes":1,"spam":"N"}],"format":"md","images":["ld54\/wayback-placeholder.png"],"links":[{"url":"https:\/\/m-1.itch.io\/islands","text":"Link"}],"metadata":{"g_key":"92419","g_author":"1010194","g_event":"LD54","g_eventkey":"117","g_subevent":"JAM","g_urlkey":"437062","g_title":"Islands","g_status":"WAYBACK","g_place":"99999","g_commentcount":"5","g_site2_node_id":"379314","g_hide":"N","g_has_icon":"Y","g_rqueue":"0","g_random":"0"},"nds":{"n_key":"379314","n_urlkey":"437062","n_parent":"371459","n_path":"\/events\/ludum-dare\/54\/islands","n_slug":"islands","n_type":"item","n_subtype":"game","n_subsubtype":"jam","n_author":"10194","n_created":"1696234459","n_modified":"1778386417","n_version":"1166524","n_status":"WAYBACK"},"node":{"_collation":{"body_sanitizer":"TextUtils::SanitizeHTML via existing importer","event":"LD54","removed_author":false},"_superparent":9,"_trust":4,"author":10194,"body":"![screenshot.jpg](\/\/\/raw\/2d7\/2\/z\/5d188.jpg)\n[Play in browser](https:\/\/m-1.itch.io\/islands)\n\nGenre: endless runner + sumo\n\nProof of concept of a game with the map entirely generated by [a fractal](https:\/\/en.wikipedia.org\/wiki\/Julia_set). Do not expect a finished, polished game :wink:.\n\nGoal: escape to land and keep your enemy in the water before the time runs out.\nIf both of you survive, the map shrinks.\n\nThere is no score or endgame screen - the game just zooms out and restarts when a player dies.\n\nControls\n- Arrow keys \/ WASD: movement\n- Space: **push away** enemy (ability recharges), **hold ground** (it is harder for your enemy to push you)\n\nPlayer\n- Inner circle: *on land* indicator\n- Middle: player color\n- Outer circle: **push away** ability charge indicator (green when ability ready)\n\nThe Julia fractal shader based on [Julia Islands](https:\/\/www.shadertoy.com\/view\/Nl2Gzw) by golinad.\nOpted out of the *Graphics* rating category for that reason.\nSpecifically, the original shader was distilled to the functions below.\n\nRelevant part of the *height* shader (single float output into a RenderTexture, which is used also in-game for land\/water detection etc.)\n```\nfloat2 cSqr(float2 c){\n    return float2(c.x*c.x - c.y*c.y, 2.0*c.x*c.y);\n}\n\nfloat landscapeJulia(float2 uv)\n{\n    const int maxIt = _Iterations;\n    \/\/ Normalized pixel coordinates (from 0 to 1)\n    uv *= 2;\n\n    int it = 0;\n    float2 z = uv;\n    float2 c = _Seed.xy;\n    float minD = length(z);\n    for(int i=0; i< maxIt;i++){\n        z = cSqr(z) + c;\n        if(length(z) > 50.0) break;\n        it++;\n        minD = min(length(z), minD);\n    }\n\n    \/\/ Time varying pixel color\n    return -1.0 + 1.5*float(it)\/float(maxIt);\n}\n\nfloat frag (v2f i) : SV_Target\n{\n    float2 uv = i.uv - float2(0.5, 0.5);\n    uv \/= _Zoom;\n    float height = landscapeJulia((uv+_Offset.xy)\/2);\n               \n    return height;\n}\n```\n\nSecond shader (visualisation) transforms the height into RGB\n```\nfloat3 landColor(float h)\n{\n    float hn = h*0.5 + 0.5;\n    return float3(0.1, 0.3, 0.4) + float3(hn, 0.7*hn, 0.4*hn);\n}\n\nfixed4 frag (v2f i) : SV_Target\n{\n    fixed4 col = tex2D(_SubTex, i.uv);\n    float height = col.r; \/\/ the height is stored in the red channel\n    col.rgb = landColor(height);\n    return col;\n}\n\n```","comments":5,"comments-timestamp":"2023-10-07T23:42:45Z","created":"2023-10-02T08:14:19Z","files":[],"files-timestamp":0,"grade":{"grade-01":9,"grade-02":9,"grade-03":9,"grade-04":9,"grade-06":1,"grade-08":9},"id":379314,"love":0,"magic":{"cool":113.55499479153,"feedback":8,"given":6.125,"grade":9.2,"grade-01-average":2.857,"grade-02-average":2.214,"grade-03-average":4.214,"grade-04-average":3.714,"grade-08-average":2.857,"smart":2.1672370669625},"meta":{"allow-anonymous-comments":"1","author":[10194],"cover":"\/\/\/content\/2d7\/2\/z\/5d163.png","grade-05-out":"1","grade-06-out":"1","grade-07-out":"1","link-01":"https:\/\/m-1.itch.io\/islands","link-01-tag":[42336]},"meta-timestamp":"2026-05-10T04:13:37Z","modified":"2026-05-10T04:13:37Z","name":"Islands","node-timestamp":"2023-10-02T09:05:13Z","parent":371459,"parents":[1,5,9,371459],"path":"\/events\/ludum-dare\/54\/islands","published":"2023-10-02T08:56:50Z","scope":"public","slug":"islands","subsubtype":"jam","subtype":"game","type":"item","version":1166524},"text":"![screenshot.jpg](\/\/\/raw\/2d7\/2\/z\/5d188.jpg)\n[Play in browser](https:\/\/m-1.itch.io\/islands)\n\nGenre: endless runner + sumo\n\nProof of concept of a game with the map entirely generated by [a fractal](https:\/\/en.wikipedia.org\/wiki\/Julia_set). Do not expect a finished, polished game :wink:.\n\nGoal: escape to land and keep your enemy in the water before the time runs out.\nIf both of you survive, the map shrinks.\n\nThere is no score or endgame screen - the game just zooms out and restarts when a player dies.\n\nControls\n- Arrow keys \/ WASD: movement\n- Space: **push away** enemy (ability recharges), **hold ground** (it is harder for your enemy to push you)\n\nPlayer\n- Inner circle: *on land* indicator\n- Middle: player color\n- Outer circle: **push away** ability charge indicator (green when ability ready)\n\nThe Julia fractal shader based on [Julia Islands](https:\/\/www.shadertoy.com\/view\/Nl2Gzw) by golinad.\nOpted out of the *Graphics* rating category for that reason.\nSpecifically, the original shader was distilled to the functions below.\n\nRelevant part of the *height* shader (single float output into a RenderTexture, which is used also in-game for land\/water detection etc.)\n```\nfloat2 cSqr(float2 c){\n    return float2(c.x*c.x - c.y*c.y, 2.0*c.x*c.y);\n}\n\nfloat landscapeJulia(float2 uv)\n{\n    const int maxIt = _Iterations;\n    \/\/ Normalized pixel coordinates (from 0 to 1)\n    uv *= 2;\n\n    int it = 0;\n    float2 z = uv;\n    float2 c = _Seed.xy;\n    float minD = length(z);\n    for(int i=0; i< maxIt;i++){\n        z = cSqr(z) + c;\n        if(length(z) > 50.0) break;\n        it++;\n        minD = min(length(z), minD);\n    }\n\n    \/\/ Time varying pixel color\n    return -1.0 + 1.5*float(it)\/float(maxIt);\n}\n\nfloat frag (v2f i) : SV_Target\n{\n    float2 uv = i.uv - float2(0.5, 0.5);\n    uv \/= _Zoom;\n    float height = landscapeJulia((uv+_Offset.xy)\/2);\n               \n    return height;\n}\n```\n\nSecond shader (visualisation) transforms the height into RGB\n```\nfloat3 landColor(float h)\n{\n    float hn = h*0.5 + 0.5;\n    return float3(0.1, 0.3, 0.4) + float3(hn, 0.7*hn, 0.4*hn);\n}\n\nfixed4 frag (v2f i) : SV_Target\n{\n    fixed4 col = tex2D(_SubTex, i.uv);\n    float height = col.r; \/\/ the height is stored in the red channel\n    col.rgb = landColor(height);\n    return col;\n}\n\n```","title":"Islands","wayback_recovered":true,"wayback_source":{"capture":{"original":"https:\/\/api-jam.ludumdare.com\/vx\/node2\/get\/379001+379002+379003+379004+379005+379006+379007+379008+379009+379010+379011+379012+379013+379014+379015+379016+379017+379018+379019+379020+379021+379022+379023+379024+379025+379026+379027+379028+379029+379030+379031+379032+379033+379034+379035+379036+379037+379038+379039+379040+379041+379042+379043+379044+379045+379046+379047+379048+379049+379050+379051+379052+379053+379054+379055+379056+379057+379058+379059+379060+379061+379062+379063+379064+379065+379066+379067+379068+379069+379070+379071+379072+379073+379074+379075+379076+379077+379078+379079+379080+379081+379082+379083+379084+379085+379086+379087+379088+379089+379090+379091+379092+379093+379094+379095+379096+379097+379098+379099+379100+379101+379102+379103+379104+379105+379106+379107+379108+379109+379110+379111+379112+379113+379114+379115+379116+379117+379118+379119+379120+379121+379122+379123+379124+379125+379126+379127+379128+379129+379130+379131+379132+379133+379134+379135+379136+379137+379138+379139+379140+379141+379142+379143+379144+379145+379146+379147+379148+379149+379150+379151+379152+379153+379154+379155+379156+379157+379158+379159+379160+379161+379162+379163+379164+379165+379166+379167+379168+379169+379170+379171+379172+379173+379174+379175+379176+379177+379178+379179+379180+379181+379182+379183+379184+379185+379186+379187+379188+379189+379190+379191+379192+379193+379194+379195+379196+379197+379198+379199+379200+379201+379202+379203+379204+379205+379206+379207+379208+379209+379210+379211+379212+379213+379214+379215+379216+379217+379218+379219+379220+379221+379222+379223+379224+379225+379226+379227+379228+379229+379230+379231+379232+379233+379234+379235+379236+379237+379238+379239+379240+379241+379242+379243+379244+379245+379246+379247+379248+379249+379250+379251+379252+379253+379254+379255+379256+379257+379258+379259+379260+379261+379262+379263+379264+379265+379266+379267+379268+379269+379270+379271+379272+379273+379274+379275+379276+379277+379278+379279+379280+379281+379282+379283+379284+379285+379286+379287+379288+379289+379290+379291+379292+379293+379294+379295+379296+379297+379298+379299+379300+379301+379302+379303+379304+379305+379306+379307+379308+379309+379310+379311+379312+379313+379314+379315+379316+379317+379318+379319+379320+379321+379322+379323+379324+379325+379326+379327+379328+379329+379330+379331+379332+379333+379334+379335+379336+379337+379338+379339+379340+379341+379342+379343+379344+379345+379346+379347+379348+379349+379350+379351+379352+379353+379354+379355+379356+379357+379358+379359+379360+379361+379362+379363+379364+379365+379366+379367+379368+379369+379370+379371+379372+379373+379374+379375+379376+379377+379378+379379+379380+379381+379382+379383+379384+379385+379386+379387+379388+379389+379390+379391+379392+379393+379394+379395+379396+379397+379398+379399+379400+379401+379402+379403+379404+379405+379406+379407+379408+379409+379410+379411+379412+379413+379414+379415+379416+379417+379418+379419+379420+379421+379422+379423+379424+379425+379426+379427+379428+379429+379430+379431+379432+379433+379434+379435+379436+379437+379438+379439+379440+379441+379442+379443+379444+379445+379446+379447+379448+379449+379450+379451+379452+379453+379454+379455+379456+379457+379458+379459+379460+379461+379462+379463+379464+379465+379466+379467+379468+379469+379470+379471+379472+379473+379474+379475+379476+379477+379478+379479+379480+379481+379482+379483+379484+379485+379486+379487+379488+379489+379490+379491+379492+379493+379494+379495+379496+379497+379498+379499+379500?authors&parents&superparent"},"object":"objects\/sha256\/a4\/a40bf329ef752ae055ca56d9b9768a1897d499f8d032ef14cc29e6f9db4697c8","record":"shard-2\/json-live-urgent-v3\/records\/ac9afb00c862da4e375ea75325141170563f3f90f902971de67b197de32caadd.json","sha256":"a40bf329ef752ae055ca56d9b9768a1897d499f8d032ef14cc29e6f9db4697c8","source":"https","stored_at":1784022489}}