CINXE.COM

PlasticPunk | Devpost

<!DOCTYPE html> <!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7 lte-ie9"> <![endif]--> <!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8 lte-ie9"> <![endif]--> <!--[if IE 8]> <html class="no-js lt-ie9 lte-ie9"> <![endif]--> <!--[if IE 9]> <html class="no-js lte-ie9"> <![endif]--> <!--[if gt IE 9]><!--> <html lang="en" class="no-js" xmlns:fb="http://ogp.me/ns/fb#" xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:og="http://opengraphprotocol.org/schema/" itemscope="itemscope" itemtype="http://schema.org/SoftwareApplication"> <!--<![endif]--> <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# challengepost: http://ogp.me/ns/fb/challengepost#"> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-WCFRZ3V');</script> <!-- End Google Tag Manager --> <script type="text/javascript"> window.awsWafCookieDomainList = ['devpost.com'] </script> <script type="text/javascript" src="https://1723d2289425.us-east-1.sdk.awswaf.com/1723d2289425/7d12beff1256/challenge.js" defer></script> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <script>window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","errorBeacon":"bam.nr-data.net","licenseKey":"f9082fa052","applicationID":"7341974","transactionName":"IQpdERFeXFVVRhpbCw8AHBYMV0ROUUZQQEsRDVwS","queueTime":1,"applicationTime":481,"agent":""}</script> <script>(window.NREUM||(NREUM={})).init={ajax:{deny_list:["bam.nr-data.net"]}};(window.NREUM||(NREUM={})).loader_config={licenseKey:"f9082fa052",applicationID:"7341974"};;/*! For license information please see nr-loader-rum-1.283.2.min.js.LICENSE.txt */ (()=>{var e,t,r={122:(e,t,r)=>{"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},555:(e,t,r)=>{"use strict";r.d(t,{Vp:()=>c,fn:()=>s,x1:()=>u});var n=r(384),i=r(122);const o={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){try{const t=c(e);return!!t.licenseKey&&!!t.errorBeacon&&!!t.applicationID}catch(e){return!1}}function c(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function u(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.info=a[e])}},217:(e,t,r)=>{"use strict";r.d(t,{D0:()=>m,gD:()=>v,xN:()=>h});r(860).K7.genericEvents;const n="experimental.marks",i="experimental.measures",o="experimental.resources",a=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var s=r(614),c=r(944),u=r(384),l=r(122);const d="[data-nr-mask]",f=()=>{const e={feature_flags:[],experimental:{marks:!1,measures:!1,resources:!1},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{get capture_marks(){return e.feature_flags.includes(n)||e.experimental.marks},set capture_marks(t){e.experimental.marks=t},get capture_measures(){return e.feature_flags.includes(i)||e.experimental.measures},set capture_measures(t){e.experimental.measures=t},capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(o)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:s.wk,inactiveMs:s.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){a(t)?e.mask_selector="".concat(t,",").concat(d):""===t||null===t?e.mask_selector=d:(0,c.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){a(t)?e.block_selector+=",".concat(t):""!==t&&(0,c.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,c.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},spa:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]}}},g={},p="All configuration objects require an agent identifier!";function m(e){if(!e)throw new Error(p);if(!g[e])throw new Error("Configuration for ".concat(e," was never set"));return g[e]}function h(e,t){if(!e)throw new Error(p);g[e]=(0,l.a)(t,f());const r=(0,u.nY)(e);r&&(r.init=g[e])}function v(e,t){if(!e)throw new Error(p);var r=m(e);if(r){for(var n=t.split("."),i=0;i<n.length-1;i++)if("object"!=typeof(r=r[n[i]]))return;r=r[n[n.length-1]]}return r}},371:(e,t,r)=>{"use strict";r.d(t,{V:()=>f,f:()=>d});var n=r(122),i=r(384),o=r(154),a=r(324);let s=0;const c={buildEnv:a.F3,distMethod:a.Xs,version:a.xv,originTime:o.WN},u={customTransaction:void 0,disabled:!1,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,onerror:void 0,ptid:void 0,releaseIds:{},appMetadata:{},session:void 0,denyList:void 0,timeKeeper:void 0,obfuscator:void 0,harvester:void 0},l={};function d(e){if(!e)throw new Error("All runtime objects require an agent identifier!");if(!l[e])throw new Error("Runtime for ".concat(e," was never set"));return l[e]}function f(e,t){if(!e)throw new Error("All runtime objects require an agent identifier!");l[e]={...(0,n.a)(t,u),...c},Object.hasOwnProperty.call(l[e],"harvestCount")||Object.defineProperty(l[e],"harvestCount",{get:()=>++s});const r=(0,i.nY)(e);r&&(r.runtime=l[e])}},324:(e,t,r)=>{"use strict";r.d(t,{F3:()=>i,Xs:()=>o,xv:()=>n});const n="1.283.2",i="PROD",o="CDN"},154:(e,t,r)=>{"use strict";r.d(t,{OF:()=>c,RI:()=>i,WN:()=>l,bv:()=>o,gm:()=>a,mw:()=>s,sb:()=>u});var n=r(863);const i="undefined"!=typeof window&&!!window.document,o="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),s=Boolean("hidden"===a?.document?.visibilityState),c=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=c&&"undefined"==typeof SharedWorker,l=((()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);Array.isArray(e)&&e.length>=2&&e[1]})(),Date.now()-(0,n.t)())},687:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>c,Ze:()=>d,x3:()=>u});var n=r(836),i=r(606),o=r(860),a=r(646);const s={};function c(e,t){const r={staged:!1,priority:o.P3[t]||0};l(e),s[e].get(t)||s[e].set(t,r)}function u(e,t){e&&s[e]&&(s[e].get(t)&&s[e].delete(t),g(e,t,!1),s[e].size&&f(e))}function l(e){if(!e)throw new Error("agentIdentifier required");s[e]||(s[e]=new Map)}function d(e="",t="feature",r=!1){if(l(e),!e||!s[e].get(t)||r)return g(e,t);s[e].get(t).staged=!0,f(e)}function f(e){const t=Array.from(s[e]);t.every((([e,t])=>t.staged))&&(t.sort(((e,t)=>e[1].priority-t[1].priority)),t.forEach((([t])=>{s[e].delete(t),g(e,t)})))}function g(e,t,r=!0){const o=e?n.ee.get(e):n.ee,s=i.i.handlers;if(!o.aborted&&o.backlog&&s){if(r){const e=o.backlog[t],r=s[t];if(r){for(let t=0;e&&t<e.length;++t)p(e[t],r);Object.entries(r).forEach((([e,t])=>{Object.values(t||{}).forEach((t=>{t[0]?.on&&t[0]?.context()instanceof a.y&&t[0].on(e,t[1])}))}))}}o.isolatedBacklog||delete s[t],o.backlog[t]=null,o.emit("drain-"+t,[])}}function p(e,t){var r=e[1];Object.values(t[r]||{}).forEach((t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],o=e[2];n.apply(i,o)}}))}},836:(e,t,r)=>{"use strict";r.d(t,{P:()=>c,ee:()=>u});var n=r(384),i=r(990),o=r(371),a=r(646),s=r(607);const c="nr@context:".concat(s.W),u=function e(t,r){var n={},s={},l={},d=!1;try{d=16===r.length&&(0,o.f)(r).isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,o){!1!==o&&(o=!0);if(u.aborted&&!i)return;t&&o&&t.emit(e,r,n);for(var a=g(n),c=m(e),l=c.length,d=0;d<l;d++)c[d].apply(a,r);var p=v()[s[e]];p&&p.push([f,e,r,a]);return a},get:h,listeners:m,context:g,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach((([e,n])=>{s[n]=t,t in r||(r[t]=[])}))},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach((e=>{delete f.backlog[e]}))},isBuffering:function(e){return!!v()[s[e]]},debugId:r,backlog:d?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:d};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function g(e){return e&&e instanceof a.y?e:e?(0,i.I)(e,c,(()=>new a.y(c))):new a.y(c)}function p(e,t){n[e]=m(e).concat(t)}function m(e){return n[e]||[]}function h(t){return l[t]=l[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),l=(0,n.Zm)();l.ee||(l.ee=u)},646:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},908:(e,t,r)=>{"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(836).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},606:(e,t,r)=>{"use strict";r.d(t,{i:()=>o});var n=r(908);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.d,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.d);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},878:(e,t,r)=>{"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function o(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>o,jT:()=>n,sp:()=>i})},607:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});const n=(0,r(566).bz)()},566:(e,t,r)=>{"use strict";r.d(t,{LA:()=>s,bz:()=>a});var n=r(154);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),i.split("").map((e=>"x"===e?o(t,r++).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var s=0;s<e;s++)a.push(o(r,i++).toString(16));return a.join("")}},614:(e,t,r)=>{"use strict";r.d(t,{BB:()=>a,H3:()=>n,g:()=>u,iL:()=>c,tS:()=>s,uh:()=>i,wk:()=>o});const n="NRBA",i="SESSION",o=144e5,a=18e5,s={STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},c={SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},u={OFF:0,FULL:1,ERROR:2}},863:(e,t,r)=>{"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},944:(e,t,r)=>{"use strict";function n(e,t){"function"==typeof console.debug&&console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t)}r.d(t,{R:()=>n})},284:(e,t,r)=>{"use strict";r.d(t,{t:()=>c,B:()=>s});var n=r(836),i=r(154);const o="newrelic";const a=new Set,s={};function c(e,t){const r=n.ee.get(t);s[t]??={},e&&"object"==typeof e&&(a.has(t)||(r.emit("rumresp",[e]),s[t]=e,a.add(t),function(e={}){try{i.gm.dispatchEvent(new CustomEvent(o,{detail:e}))}catch(e){}}({loaded:!0})))}},990:(e,t,r)=>{"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},389:(e,t,r)=>{"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout((()=>{i=clearTimeout(i)}),t)),n||(clearTimeout(i),i=setTimeout((()=>{e.apply(this,r)}),t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},289:(e,t,r)=>{"use strict";r.d(t,{GG:()=>o,sB:()=>a});var n=r(878);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.sp)("load",e,t)}function a(e){if(i())return e();(0,n.DD)("DOMContentLoaded",e)}},384:(e,t,r)=>{"use strict";r.d(t,{NT:()=>o,US:()=>l,Zm:()=>a,bQ:()=>c,dV:()=>s,nY:()=>u,pV:()=>d});var n=r(154),i=r(863);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function s(){let e=a();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket}),e}function c(e,t){let r=a();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t}function u(e){let t=a();return t.initializedAgents?.[e]}function l(e,t){a()[e]=t}function d(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},843:(e,t,r)=>{"use strict";r.d(t,{u:()=>i});var n=r(878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",(function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)}),r,i)}},434:(e,t,r)=>{"use strict";r.d(t,{Jt:()=>o,YM:()=>c});var n=r(836),i=r(607);const o="nr@original:".concat(i.W);var a=Object.prototype.hasOwnProperty,s=!1;function c(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");const a="-"===n.charAt(0);for(let s=0;s<t.length;s++){const c=t[s],u=e[c];l(u)||(e[c]=r(u,a?c+n:n,i,c,o))}},r.flag=o,r;function r(t,r,n,s,c){return l(t)?t:(r||(r=""),nrWrapper[o]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach((function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})})),t}catch(e){u([e],r)}for(var n in e)a.call(e,n)&&(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var o,a,l,d;try{a=this,o=[...arguments],l="function"==typeof n?n(o,a):n||{}}catch(t){u([t,"",[o,a,s],l],e)}i(r+"start",[o,a,s],l,c);try{return d=t.apply(a,o)}catch(e){throw i(r+"err",[o,a,e],l,c),e}finally{i(r+"end",[o,a,d],l,c)}}}function i(r,n,i,o){if(!s||t){var a=s;s=!0;try{e.emit(r,n,i,t,o)}catch(t){u([t,r,n,i],e)}s=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function l(e){return!(e&&"function"==typeof e&&e.apply&&!e[o])}},993:(e,t,r)=>{"use strict";r.d(t,{A$:()=>o,ET:()=>a,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},o={OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},a="log";n.K7.logging},773:(e,t,r)=>{"use strict";r.d(t,{z_:()=>o,XG:()=>s,TZ:()=>n,rs:()=>i,xV:()=>a});r(154),r(566),r(384);const n=r(860).K7.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},630:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewEvent},782:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewTiming},344:(e,t,r)=>{"use strict";r.d(t,{G4:()=>i});var n=r(614);r(860).K7.sessionReplay;const i={RECORD:"recordReplay",PAUSE:"pauseReplay",REPLAY_RUNNING:"replayRunning",ERROR_DURING_REPLAY:"errorDuringReplay"};n.g.ERROR,n.g.FULL,n.g.OFF},234:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(836),i=r(687);class o{constructor(e,t){this.agentIdentifier=e,this.ee=n.ee.get(e),this.featureName=t,this.blocked=!1}deregisterDrain(){(0,i.x3)(this.agentIdentifier,this.featureName)}}},603:(e,t,r)=>{"use strict";r.d(t,{j:()=>K});var n=r(860),i=r(555),o=r(371),a=r(908),s=r(836),c=r(687),u=r(289),l=r(154),d=r(944),f=r(773),g=r(384),p=r(344);const m=["setErrorHandler","finished","addToTrace","addRelease","recordCustomEvent","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId","setApplicationVersion","start",p.G4.RECORD,p.G4.PAUSE,"log","wrapLogger"],h=["setErrorHandler","finished","addToTrace","addRelease"];var v=r(863),b=r(614),y=r(993);var w=r(646),R=r(434);const A=new Map;function E(e,t,r,n){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,d.R)(29);const i=function(e){return(e||s.ee).get("logger")}(e),o=(0,R.YM)(i),a=new w.y(s.P);a.level=n.level,a.customAttributes=n.customAttributes;const c=t[r]?.[R.Jt]||t[r];return A.set(c,a),o.inPlace(t,[r],"wrap-logger-",(()=>A.get(c))),i}function _(){const e=(0,g.pV)();m.forEach((t=>{e[t]=(...r)=>function(t,...r){let n=[];return Object.values(e.initializedAgents).forEach((e=>{e&&e.api?e.exposed&&e.api[t]&&n.push(e.api[t](...r)):(0,d.R)(38,t)})),n.length>1?n:n[0]}(t,...r)}))}const x={};function N(e,t,g=!1){t||(0,c.Ak)(e,"api");const m={};var w=s.ee.get(e),R=w.get("tracer");x[e]=b.g.OFF,w.on(p.G4.REPLAY_RUNNING,(t=>{x[e]=t}));var A="api-",_=A+"ixn-";function N(t,r,n,o){const a=(0,i.Vp)(e);return null===r?delete a.jsAttributes[t]:(0,i.x1)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),j(A,n,!0,o||null===r?"session":void 0)(t,r)}function k(){}m.log=function(e,{customAttributes:t={},level:r=y.p_.INFO}={}){(0,a.p)(f.xV,["API/log/called"],void 0,n.K7.metrics,w),function(e,t,r={},i=y.p_.INFO){(0,a.p)(f.xV,["API/logging/".concat(i.toLowerCase(),"/called")],void 0,n.K7.metrics,e),(0,a.p)(y.ET,[(0,v.t)(),t,r,i],void 0,n.K7.logging,e)}(w,e,t,r)},m.wrapLogger=(e,t,{customAttributes:r={},level:i=y.p_.INFO}={})=>{(0,a.p)(f.xV,["API/wrapLogger/called"],void 0,n.K7.metrics,w),E(w,e,t,{customAttributes:r,level:i})},h.forEach((e=>{m[e]=j(A,e,!0,"api")})),m.addPageAction=j(A,"addPageAction",!0,n.K7.genericEvents),m.recordCustomEvent=j(A,"recordCustomEvent",!0,n.K7.genericEvents),m.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,o.f)(e).customTransaction=(r||"http://custom.transaction")+t,j(A,"setPageViewName",!0)()},m.setCustomAttribute=function(e,t,r=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof t)||null===t)return N(e,t,"setCustomAttribute",r);(0,d.R)(40,typeof t)}else(0,d.R)(39,typeof e)},m.setUserId=function(e){if("string"==typeof e||null===e)return N("enduser.id",e,"setUserId",!0);(0,d.R)(41,typeof e)},m.setApplicationVersion=function(e){if("string"==typeof e||null===e)return N("application.version",e,"setApplicationVersion",!1);(0,d.R)(42,typeof e)},m.start=()=>{try{(0,a.p)(f.xV,["API/start/called"],void 0,n.K7.metrics,w),w.emit("manual-start-all")}catch(e){(0,d.R)(23,e)}},m[p.G4.RECORD]=function(){(0,a.p)(f.xV,["API/recordReplay/called"],void 0,n.K7.metrics,w),(0,a.p)(p.G4.RECORD,[],void 0,n.K7.sessionReplay,w)},m[p.G4.PAUSE]=function(){(0,a.p)(f.xV,["API/pauseReplay/called"],void 0,n.K7.metrics,w),(0,a.p)(p.G4.PAUSE,[],void 0,n.K7.sessionReplay,w)},m.interaction=function(e){return(new k).get("object"==typeof e?e:{})};const T=k.prototype={createTracer:function(e,t){var r={},i=this,o="function"==typeof t;return(0,a.p)(f.xV,["API/createTracer/called"],void 0,n.K7.metrics,w),g||(0,a.p)(_+"tracer",[(0,v.t)(),e,r],i,n.K7.spa,w),function(){if(R.emit((o?"":"no-")+"fn-start",[(0,v.t)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw R.emit("fn-err",[arguments,this,t],r),t}finally{R.emit("fn-end",[(0,v.t)()],r)}}}};function j(e,t,r,i){return function(){return(0,a.p)(f.xV,["API/"+t+"/called"],void 0,n.K7.metrics,w),i&&(0,a.p)(e+t,[r?(0,v.t)():performance.now(),...arguments],r?null:this,i,w),r?void 0:this}}function I(){r.e(296).then(r.bind(r,778)).then((({setAPI:t})=>{t(e),(0,c.Ze)(e,"api")})).catch((e=>{(0,d.R)(27,e),w.abort()}))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{T[e]=j(_,e,void 0,g?n.K7.softNav:n.K7.spa)})),m.setCurrentRouteName=g?j(_,"routeName",void 0,n.K7.softNav):j(A,"routeName",!0,n.K7.spa),m.noticeError=function(t,r){"string"==typeof t&&(t=new Error(t)),(0,a.p)(f.xV,["API/noticeError/called"],void 0,n.K7.metrics,w),(0,a.p)("err",[t,(0,v.t)(),!1,r,!!x[e]],void 0,n.K7.jserrors,w)},l.RI?(0,u.GG)((()=>I()),!0):I(),m}var k=r(217),T=r(122);const j={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},I={};var O=r(284);const S=e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e};let P=!1;function K(e,t={},r,n){let{init:a,info:c,loader_config:u,runtime:d={},exposed:f=!0}=t;d.loaderType=r;const p=(0,g.pV)();c||(a=p.init,c=p.info,u=p.loader_config),(0,k.xN)(e.agentIdentifier,a||{}),function(e,t){if(!e)throw new Error("All loader-config objects require an agent identifier!");I[e]=(0,T.a)(t,j);const r=(0,g.nY)(e);r&&(r.loader_config=I[e])}(e.agentIdentifier,u||{}),c.jsAttributes??={},l.bv&&(c.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,c);const m=(0,k.D0)(e.agentIdentifier),h=[c.beacon,c.errorBeacon];P||(m.proxy.assets&&(S(m.proxy.assets),h.push(m.proxy.assets)),m.proxy.beacon&&h.push(m.proxy.beacon),_(),(0,g.US)("activatedFeatures",O.B),e.runSoftNavOverSpa&&=!0===m.soft_navigations.enabled&&m.feature_flags.includes("soft_nav")),d.denyList=[...m.ajax.deny_list||[],...m.ajax.block_internal?h:[]],d.ptid=e.agentIdentifier,(0,o.V)(e.agentIdentifier,d),e.ee=s.ee.get(e.agentIdentifier),void 0===e.api&&(e.api=N(e.agentIdentifier,n,e.runSoftNavOverSpa)),void 0===e.exposed&&(e.exposed=f),P=!0}},374:(e,t,r)=>{r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860:(e,t,r)=>{"use strict";r.d(t,{$J:()=>u,K7:()=>s,P3:()=>c,XX:()=>i,qY:()=>n,v4:()=>a});const n="events",i="jserrors",o="browser/blobs",a="rum",s={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations",spa:"spa"},c={[s.pageViewEvent]:1,[s.pageViewTiming]:2,[s.metrics]:3,[s.jserrors]:4,[s.spa]:5,[s.ajax]:6,[s.sessionTrace]:7,[s.softNav]:8,[s.sessionReplay]:9,[s.logging]:10,[s.genericEvents]:11},u={[s.pageViewEvent]:a,[s.pageViewTiming]:n,[s.ajax]:n,[s.spa]:n,[s.softNav]:n,[s.metrics]:i,[s.jserrors]:i,[s.sessionTrace]:o,[s.sessionReplay]:o,[s.logging]:"browser/logs",[s.genericEvents]:"ins"}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>"nr-rum-1.283.2.min.js",i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.283.2.PROD:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),l=0;l<u.length;l++){var d=u[l];if(d.getAttribute("src")==r||d.getAttribute("data-webpack")==t+o){s=d;break}}if(!s){c=!0;var f={296:"sha512-2Y8GMAOGF658KnXzOZ/v+DlLch8TBFvV0tTNnOy9wrpvtDa1t5CdZMyX+LubTymBlzPp6NUjllBghMCZqXBPmg=="};(s=document.createElement("script")).charset="utf-8",s.timeout=120,i.nc&&s.setAttribute("nonce",i.nc),s.setAttribute("data-webpack",t+o),s.src=r,0!==s.src.indexOf(window.location.origin+"/")&&(s.crossOrigin="anonymous"),f[a]&&(s.integrity=f[a])}e[r]=[n];var g=(t,n)=>{s.onerror=s.onload=null,clearTimeout(p);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},p=setTimeout(g.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=g.bind(null,s.onerror),s.onload=g.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="https://js-agent.newrelic.com/",(()=>{var e={374:0,840:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u<a.length;u++)o=a[u],i.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=self["webpackChunk:NRBA-1.283.2.PROD"]=self["webpackChunk:NRBA-1.283.2.PROD"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";i(374);var e=i(944),t=i(344),r=i(566);class n{agentIdentifier;constructor(){this.agentIdentifier=(0,r.LA)(16)}#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}addPageAction(e,t){return this.#e("addPageAction",e,t)}recordCustomEvent(e,t){return this.#e("recordCustomEvent",e,t)}setPageViewName(e,t){return this.#e("setPageViewName",e,t)}setCustomAttribute(e,t,r){return this.#e("setCustomAttribute",e,t,r)}noticeError(e,t){return this.#e("noticeError",e,t)}setUserId(e){return this.#e("setUserId",e)}setApplicationVersion(e){return this.#e("setApplicationVersion",e)}setErrorHandler(e){return this.#e("setErrorHandler",e)}addRelease(e,t){return this.#e("addRelease",e,t)}log(e,t){return this.#e("log",e,t)}}class o extends n{#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}start(){return this.#e("start")}finished(e){return this.#e("finished",e)}recordReplay(){return this.#e(t.G4.RECORD)}pauseReplay(){return this.#e(t.G4.PAUSE)}addToTrace(e){return this.#e("addToTrace",e)}setCurrentRouteName(e){return this.#e("setCurrentRouteName",e)}interaction(){return this.#e("interaction")}wrapLogger(e,t,r){return this.#e("wrapLogger",e,t,r)}}var a=i(860),s=i(217);const c=Object.values(a.K7);function u(e){const t={};return c.forEach((r=>{t[r]=function(e,t){return!0===(0,s.gD)(t,"".concat(e,".enabled"))}(r,e)})),t}var l=i(603);var d=i(687),f=i(234),g=i(289),p=i(154),m=i(384);const h=e=>p.RI&&!0===(0,s.gD)(e,"privacy.cookies_enabled");function v(e){return!!(0,m.dV)().o.MO&&h(e)&&!0===(0,s.gD)(e,"session_trace.enabled")}var b=i(389);class y extends f.W{constructor(e,t,r=!0){super(e.agentIdentifier,t),this.auto=r,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===e.init[this.featureName].autoStart&&(this.auto=!1),this.auto?(0,d.Ak)(e.agentIdentifier,t):this.ee.on("manual-start-all",(0,b.J)((()=>{(0,d.Ak)(e.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator(e)})))}importAggregator(t,r={}){if(this.featAggregate||!this.auto)return;let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let o;try{if(h(this.agentIdentifier)){const{setupAgentSession:e}=await i.e(296).then(i.bind(i,861));o=e(t)}}catch(t){(0,e.R)(20,t),this.ee.emit("internal-error",[t]),this.featureName===a.K7.sessionReplay&&this.abortHandler?.()}try{if(!this.#t(this.featureName,o))return(0,d.Ze)(this.agentIdentifier,this.featureName),void n(!1);const{lazyFeatureLoader:e}=await i.e(296).then(i.bind(i,103)),{Aggregate:a}=await e(this.featureName,"aggregate");this.featAggregate=new a(t,r),t.runtime.harvester.initializedAggregates.push(this.featAggregate),n(!0)}catch(t){(0,e.R)(34,t),this.abortHandler?.(),(0,d.Ze)(this.agentIdentifier,this.featureName,!0),n(!1),this.ee&&this.ee.abort()}};p.RI?(0,g.GG)((()=>o()),!0):o()}#t(e,t){switch(e){case a.K7.sessionReplay:return v(this.agentIdentifier)&&!!t;case a.K7.sessionTrace:return!!t;default:return!0}}}var w=i(630);class R extends y{static featureName=w.T;constructor(e,t=!0){super(e,w.T,t),this.importAggregator(e)}}var A=i(908),E=i(843),_=i(878),x=i(782),N=i(863);class k extends y{static featureName=x.T;constructor(e,t=!0){super(e,x.T,t),p.RI&&((0,E.u)((()=>(0,A.p)("docHidden",[(0,N.t)()],void 0,x.T,this.ee)),!0),(0,_.sp)("pagehide",(()=>(0,A.p)("winPagehide",[(0,N.t)()],void 0,x.T,this.ee))),this.importAggregator(e))}}var T=i(773);class j extends y{static featureName=T.TZ;constructor(e,t=!0){super(e,T.TZ,t),this.importAggregator(e)}}new class extends o{constructor(t){super(),p.gm?(this.features={},(0,m.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(R),this.runSoftNavOverSpa=[...this.desiredFeatures].some((e=>e.featureName===a.K7.softNav)),(0,l.j)(this,t,t.loaderType||"agent"),this.run()):(0,e.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}run(){try{const t=u(this.agentIdentifier),r=[...this.desiredFeatures];r.sort(((e,t)=>a.P3[e.featureName]-a.P3[t.featureName])),r.forEach((r=>{if(!t[r.featureName]&&r.featureName!==a.K7.pageViewEvent)return;if(this.runSoftNavOverSpa&&r.featureName===a.K7.spa)return;if(!this.runSoftNavOverSpa&&r.featureName===a.K7.softNav)return;const n=function(e){switch(e){case a.K7.ajax:return[a.K7.jserrors];case a.K7.sessionTrace:return[a.K7.ajax,a.K7.pageViewEvent];case a.K7.sessionReplay:return[a.K7.sessionTrace];case a.K7.pageViewTiming:return[a.K7.pageViewEvent];default:return[]}}(r.featureName).filter((e=>!(e in this.features)));n.length>0&&(0,e.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)}))}catch(t){(0,e.R)(22,t);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,m.Zm)();delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return r.ee.get(this.agentIdentifier).abort(),!1}}}({features:[R,k,j],loaderType:"lite"})})()})();</script> <meta name="viewport" content="width=device-width"> <title>PlasticPunk | Devpost</title> <meta name="description" content="PlasticPunk - PlasticPunk is a captivating civilisation builder set in near-future where plastic pollution reached critical levels. Transform a dys..." /> <meta property="fb:app_id" content="115745995110194" /> <meta property="og:title" content="PlasticPunk" /> <meta property="og:description" content="PlasticPunk is a captivating civilisation builder set in near-future where plastic pollution reached critical levels. Transform a dystopian society overwhelmed by waste into a sustainable paradise." /> <meta property="og:type" content="challengepost:app" /> <meta property="og:site_name" content="Devpost" /> <meta property="og:image" content="https://d112y698adiu2z.cloudfront.net/photos/production/software_photos/002/811/046/datas/medium.png" /> <meta property="og:url" content="https://devpost.com/software/plasticpunk" /> <meta name="twitter:card" content="summary" /> <meta name="twitter:site" content="@Devpost" /> <meta name="twitter:title" content="PlasticPunk" /> <meta name="twitter:description" content="PlasticPunk is a captivating civilisation builder set in near-future where plastic pollution reached critical levels. Transform a dystopian society overwhelmed by waste into a sustainable paradise." /> <meta name="twitter:image" content="https://d112y698adiu2z.cloudfront.net/photos/production/software_photos/002/811/046/datas/medium.png" /> <meta name="twitter:domain" content="devpost.com" /> <meta name="twitter:url" content="https://devpost.com/software/plasticpunk" /> <meta itemprop="name" content="PlasticPunk" /> <meta itemprop="description" content="PlasticPunk is a captivating civilisation builder set in near-future where plastic pollution reached critical levels. Transform a dystopian society overwhelmed by waste into a sustainable paradise." /> <meta itemprop="image" content="https://d112y698adiu2z.cloudfront.net/photos/production/software_photos/002/811/046/datas/medium.png" /> <meta itemprop="screenshot" content="https://d112y698adiu2z.cloudfront.net/photos/production/software_photos/002/811/046/datas/medium.png" /> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="I08hYsyybdUjYfySsCs0r3RKMTsv2e8YUP0ag+lcTq4xRpTGB7ZDz5MQYSptUFzMIITP6wpRbsWvrqEBFpJ0SQ==" /> <!--[if gt IE 7]><!--> <script src="https://kit.fontawesome.com/0c13a9f144.js" crossorigin="anonymous"></script> <link rel="stylesheet" media="screen" href="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2-f0b5d68d5a825bebf7210a882eab77c86960fa3bcd1d5e6a901bf97d2b7f33a0.css" /> <link rel="stylesheet" media="screen" href="https://d2dmyh35ffsxbl.cloudfront.net/assets/home/home_application-2e297cd58707524989edc9b409ea77ae3625d77ae5c5ed40567469a2a306b492.css" /> <script src="https://d2dmyh35ffsxbl.cloudfront.net/assets/modernizr-58ea6a8d3054105c74975c648df5d77247ea7b62e2c3ed291aace5e4139d5eb5.js"></script> <!--<![endif]--> </head> <body id="body-softwares" class="foundation-grid action-show controller-softwares engine-home"> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-WCFRZ3V" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <!--googleoff: anchor--> <!--[if lte IE 9 ]> <div id="unsupported_browser_version" class="persistent_message alert-box alert"> <p> We've detected that you are using an unsupported browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to Internet Explorer 10 or higher. </p> </div> <![endif]--> <!--googleon: anchor--> <header id="global-nav"> <div class="contain-to-grid hide-for-large-up"> <nav class="top-bar" data-topbar> <ul class="title-area top-bar-section"> <li> <a class="toggle-topbar has-dropdown text-center" data-target-menu="world" id="hamburger" href="#"> <i class="ss-icon ss-rows"></i> </a> </li> <li class="name"> <span id="logo"> <a href="https://devpost.com"> <img alt="Devpost" class="show-for-small" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/devpost-logo-mobile-f3aff76bfc0b6ada9bb4ddd773bfc534769ed793f962612804a1e84c305a5f94.svg" /> <img alt="Devpost" class="show-for-medium-up" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/devpost-logo-25d0005ec83e3b9ef6fce93235bb6d642d7c828f31758ebdb5b7ee87de7d45c3.svg" /> </a></span> </li> <li id="mobile-search-form-container" class="search-form-container mobile hide"> <form class="flex-row align-items-center search-form" action="https://devpost.com/hackathons" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="&#x2713;" /> <div class="search-field-wrapper flex-row align-items-stretch mx-4"> <span class="align-items-center"> <i class="fas fa-search search-icon"></i> </span> <input type="search" name="search" id="search" title="Search" placeholder="Search hackathons..." /> <a href="#" class="align-items-center close-icon" data-toggle-mobile-search> <i class="fas fa-times"></i> </a> </div> </form> </li> <li class="right logged-out"> <ul> <li> <a id="main-link" href="https://secure.devpost.com/users/login?ref=top-nav-login"> Log in </a> </li> <li class="show-for-medium-up"> <a id="signup-link" href="https://secure.devpost.com/users/register?ref_content=signup_global_nav&amp;ref_feature=signup&amp;ref_medium=button"> <span class="inner-button"> Sign up </span> </a> </li> </ul> </li> <li class="search-expand-container mobile right"> <a data-toggle-mobile-search><i class="fas fa-search"></i></a> </li> </ul> <section class="top-bar-section" data-top-nav-menu="user"> </section> <section class="top-bar-section" data-top-nav-menu="world"> <ul class="right"> <div class="mobile"> <a class="accordion-tab" data-accordion-tab href="#join-a-hackathon"> <span>Join a hackathon</span> <i class="fa-angle-down fas" aria-hidden="true"></i> <i class="fa-angle-up fas" aria-hidden="true"></i> </a> <div class="accordion-section" data-accordion-section="join-a-hackathon"> <div class="floating-menu-wrapper"> <div class="panel-section"> <a class="panel-product panel-product-content" href="https://devpost.com/hackathons"> <img alt="Devpost logo" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/devpost-logo-mobile-f3aff76bfc0b6ada9bb4ddd773bfc534769ed793f962612804a1e84c305a5f94.svg" /> <div> <p class="title bold">Devpost</p> <p class="subtitle">Participate in our public hackathons</p> </div> </a> <div class="panel-content with-icon-offset"> <a href="https://devpost.com/hackathons"> Hackathons <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> <a href="https://devpost.com/software"> Projects <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> </div> </div> </div> <div class="floating-menu-wrapper"> <div class="panel-section"> <a class="panel-product panel-product-content" href="https://devpost.team"> <img alt="Devpost for Teams" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/dft-logo-mobile-ab66dd5a4f4b2f045ad86d0e5f432dc85974c3d778b353d32213c24ca176484b.svg" /> <div> <p class="title bold">Devpost for Teams</p> <p class="subtitle">Access your company's private hackathons</p> </div> </a> <div class="panel-content with-icon-offset"> <a href="https://devpost.team"> Login <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> </div> </div> </div> </div> <a class="accordion-tab" data-accordion-tab href="#host-a-hackathon"> Host a hackathon <i class="fa-angle-down fas" aria-hidden="true"></i> <i class="fa-angle-up fas" aria-hidden="true"></i> </a> <div class="accordion-section" data-accordion-section="host-a-hackathon"> <div class="floating-menu-wrapper"> <div class="panel-section"> <a class="panel-product panel-product-content" href="https://info.devpost.com/product/public-hackathons"> <img alt="Devpost" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/devpost-logo-mobile-f3aff76bfc0b6ada9bb4ddd773bfc534769ed793f962612804a1e84c305a5f94.svg" /> <div> <p class="title bold">Devpost</p> <p class="subtitle">Grow your developer ecosystem and promote your platform</p> </div> </a> <div class="panel-content with-icon-offset"> <a href="https://info.devpost.com/product/public-hackathons"> Host a public hackathon <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> </div> </div> </div> <div class="floating-menu-wrapper"> <div class="panel-section"> <a class="panel-product panel-product-content" href="https://info.devpost.com/product/devpost-for-teams"> <img alt="Devpost for Teams logo" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/dft-logo-mobile-ab66dd5a4f4b2f045ad86d0e5f432dc85974c3d778b353d32213c24ca176484b.svg" /> <div> <p class="title bold">Devpost for Teams</p> <p class="subtitle">Drive innovation, collaboration, and retention within your organization</p> </div> </a> <div class="panel-content with-icon-offset"> <a href="https://info.devpost.com/product/devpost-for-teams"> Host an internal hackathon <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> </div> </div> </div> <div class="floating-menu-wrapper"> <div class="panel-section "> <div class="panel-content"> <p class="title bold">By use case</p> <a href="https://info.devpost.com/product/ai-hackathons"> AI hackathons <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> <a href="https://info.devpost.com/product/customer-hackathons"> Customer hackathons <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> <a href="https://info.devpost.com/product/devpost-for-teams"> Employee hackathons <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> <a href="https://info.devpost.com/product/public-hackathons"> Public hackathons <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> </div> </div> </div> </div> <a class="accordion-tab" data-accordion-tab href="#resources"> Resources <i class="fa-angle-down fas" aria-hidden="true"></i> <i class="fa-angle-up fas" aria-hidden="true"></i> </a> <div class="accordion-section" data-accordion-section="resources"> <div class="floating-menu-wrapper"> <div class="panel-content"> <div class="panel-section"> <div class="panel-container mr-0 is-flex-grow-1 mb-4"> <a class="bordered bordered-hover panel-section padded" href="https://info.devpost.com/blog"> <p class="resource-title"> Blog </p> <p class="subtitle"> Insights into hackathon planning and participation </p> </a> </div> <div class="panel-container mr-0 is-flex-grow-1 mb-4"> <a class="bordered bordered-hover panel-section padded" href="https://info.devpost.com/customer-stories"> <p class="resource-title"> Customer stories </p> <p class="subtitle"> Inspiration from peers and other industry leaders </p> </a> </div> <div class="panel-container mr-0 is-flex-grow-1 mb-4"> <a class="bordered bordered-hover panel-section padded" href="https://info.devpost.com/guides"> <p class="resource-title"> Planning guides </p> <p class="subtitle"> Best practices for planning online and in-person hackathons </p> </a> </div> <div class="panel-container mr-0 is-flex-grow-1 mb-4"> <a class="bordered bordered-hover panel-section padded" href="https://info.devpost.com/webinar-events"> <p class="resource-title"> Webinars &amp; events </p> <p class="subtitle"> Upcoming events and on-demand recordings </p> </a> </div> <div class="panel-container mr-0 is-flex-grow-1 mb-4"> <a class="bordered bordered-hover panel-section padded" href="https://help.devpost.com/"> <p class="resource-title"> Help desk </p> <p class="subtitle"> Common questions and support documentation </p> </a> </div> </div> </div> </div> </div> </div> </ul> </section> </nav> </div> <div class="contain-to-grid hide-for-small hide-for-medium"> <nav class="top-bar" data-topbar> <ul class="title-area"> <li class="name"> <span id="logo"> <a href="https://devpost.com"> <img alt="Devpost" class="show-for-small" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/devpost-logo-mobile-f3aff76bfc0b6ada9bb4ddd773bfc534769ed793f962612804a1e84c305a5f94.svg" /> <img alt="Devpost" class="show-for-medium-up" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/devpost-logo-25d0005ec83e3b9ef6fce93235bb6d642d7c828f31758ebdb5b7ee87de7d45c3.svg" /> </a></span> </li> </ul> <section class="top-bar-section"> <ul class="left"> <li class="divider"></li> <li class="has-dropdown"> <a class="main-link" href="#"> Join a hackathon <i class="fa-angle-down fas" aria-hidden="true"></i> <i class="fa-angle-up fas" aria-hidden="true"></i> </a> <ul class="dropdown float-left main-menu-dropdown" id="join-a-hackathon-dropdown"> <li class="floating-menu-wrapper"> <div class="floating-menu display-flex align-stretch"> <div class="panel-container bordered"> <div class="panel-section"> <a class="panel-product panel-product-content" href="https://devpost.com/hackathons"> <img alt="Devpost logo" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/devpost-logo-mobile-f3aff76bfc0b6ada9bb4ddd773bfc534769ed793f962612804a1e84c305a5f94.svg" /> <div> <p class="title bold">Devpost</p> <p class="subtitle">Participate in our public hackathons</p> </div> </a> <div class="panel-content with-icon-offset"> <a href="https://devpost.com/hackathons"> Hackathons <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> <a href="https://devpost.com/software"> Projects <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> </div> </div> </div> <div class="panel-container bordered"> <div class="panel-section"> <a class="panel-product panel-product-content" href="https://devpost.team"> <img alt="Devpost for Teams" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/dft-logo-mobile-ab66dd5a4f4b2f045ad86d0e5f432dc85974c3d778b353d32213c24ca176484b.svg" /> <div> <p class="title bold">Devpost for Teams</p> <p class="subtitle">Access your company's private hackathons</p> </div> </a> <div class="panel-content with-icon-offset"> <a href="https://devpost.team"> Login <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> </div> </div> </div> </div> </li> </ul> </li> <li class="divider"></li> <li class="has-dropdown"> <a class="main-link" href="#"> Host a hackathon <i class="fa-angle-down fas" aria-hidden="true"></i> <i class="fa-angle-up fas" aria-hidden="true"></i> </a> <ul class="dropdown float-left main-menu-dropdown" id="host-a-hackathon-dropdown"> <li class="floating-menu-wrapper"> <div class="floating-menu flex-row align-start"> <div class="panel-container bordered"> <div class="panel-section"> <a class="panel-product panel-product-content" href="https://info.devpost.com/product/public-hackathons"> <img alt="Devpost" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/devpost-logo-mobile-f3aff76bfc0b6ada9bb4ddd773bfc534769ed793f962612804a1e84c305a5f94.svg" /> <div> <p class="title bold">Devpost</p> <p class="subtitle">Grow your developer ecosystem and promote your platform</p> </div> </a> <div class="panel-content with-icon-offset"> <a href="https://info.devpost.com/product/public-hackathons"> Host a public hackathon <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> </div> </div> </div> <div class="panel-container bordered"> <div class="panel-section"> <a class="panel-product panel-product-content" href="https://info.devpost.com/product/devpost-for-teams"> <img alt="Devpost for Teams logo" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/dft-logo-mobile-ab66dd5a4f4b2f045ad86d0e5f432dc85974c3d778b353d32213c24ca176484b.svg" /> <div> <p class="title bold">Devpost for Teams</p> <p class="subtitle">Drive innovation, collaboration, and retention within your organization</p> </div> </a> <div class="panel-content with-icon-offset"> <a href="https://info.devpost.com/product/devpost-for-teams"> Host an internal hackathon <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> </div> </div> </div> <div class="panel-container"> <div class="panel-section pt-0"> <div class="panel-content"> <p class="title bold">By use case</p> <a href="https://info.devpost.com/product/ai-hackathons"> AI hackathons <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> <a href="https://info.devpost.com/product/customer-hackathons"> Customer hackathons <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> <a href="https://info.devpost.com/product/devpost-for-teams"> Employee hackathons <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> <a href="https://info.devpost.com/product/public-hackathons"> Public hackathons <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> </div> </div> </div> </div> </li> </ul> </li> <li class="divider"></li> <li class="has-dropdown"> <a class="main-link" href="#"> Resources <i class="fa-angle-down fas" aria-hidden="true"></i> <i class="fa-angle-up fas" aria-hidden="true"></i> </a> <ul class="dropdown float-left main-menu-dropdown" id="resources-dropdown"> <li class="floating-menu-wrapper"> <div class="floating-menu"> <div class="panel-container mr-0 is-flex-grow-1 mb-4"> <a class="bordered bordered-hover panel-section padded" href="https://info.devpost.com/blog"> <p class="resource-title"> Blog </p> <p class="subtitle"> Insights into hackathon planning and participation </p> </a> </div> <div class="panel-container mr-0 is-flex-grow-1 mb-4"> <a class="bordered bordered-hover panel-section padded" href="https://info.devpost.com/customer-stories"> <p class="resource-title"> Customer stories </p> <p class="subtitle"> Inspiration from peers and other industry leaders </p> </a> </div> <div class="panel-container mr-0 is-flex-grow-1 mb-4"> <a class="bordered bordered-hover panel-section padded" href="https://info.devpost.com/guides"> <p class="resource-title"> Planning guides </p> <p class="subtitle"> Best practices for planning online and in-person hackathons </p> </a> </div> <div class="panel-container mr-0 is-flex-grow-1 mb-4"> <a class="bordered bordered-hover panel-section padded" href="https://info.devpost.com/webinar-events"> <p class="resource-title"> Webinars &amp; events </p> <p class="subtitle"> Upcoming events and on-demand recordings </p> </a> </div> <div class="panel-container mr-0 is-flex-grow-1 mb-4"> <a class="bordered bordered-hover panel-section padded" href="https://help.devpost.com/"> <p class="resource-title"> Help desk </p> <p class="subtitle"> Common questions and support documentation </p> </a> </div> </div> </li> </ul> </li> </ul> <div class="right"> <ul> <li class="search-expand-container desktop main-link"> <a data-toggle-desktop-search><i class="fas fa-search"></i></a> </li> <li id="desktop-search-form-container" class="search-form-container hide"> <form class="flex-row align-items-center search-form" action="https://devpost.com/hackathons" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="&#x2713;" /> <div class="search-field-wrapper flex-row align-items-stretch mx-4"> <span class="align-items-center"> <i class="fas fa-search search-icon"></i> </span> <input type="search" name="search" id="search" title="Search" placeholder="Search hackathons..." /> <a href="#" class="align-items-center close-icon" data-toggle-desktop-search> <i class="fas fa-times"></i> </a> </div> </form> </li> </ul> <ul> <li> <a id="main-link" href="https://secure.devpost.com/users/login?ref=top-nav-login"> Log in </a> </li> <li class="show-for-medium-up"> <a id="signup-link" href="https://secure.devpost.com/users/register?ref_content=signup_global_nav&amp;ref_feature=signup&amp;ref_medium=button"> <span class="inner-button"> Sign up </span> </a> </li> </ul> </div> </section> </nav> </div> </header> <section id="container" class=""> <header class="page-header text-center" id="software-header"> <div class="row"> <div class="small-12 columns"> <h1 id="app-title">PlasticPunk</h1> <p class="large"> PlasticPunk is a captivating civilisation builder set in near-future where plastic pollution reached critical levels. Transform a dystopian society overwhelmed by waste into a sustainable paradise. </p> </div> </div> <div class="row"> <div class="small-12 columns"> <div class="software-likes"> <div data-like="base"> <a class="like-button button radius secondary" href="https://secure.devpost.com/users/register?flow%5Bdata%5D%5Bsoftware_id%5D=606213&amp;flow%5Bname%5D=like_software&amp;return_to=https%3A%2F%2Fdevpost.com%2Fsoftware%2Fplasticpunk"> <span class="ss-icon ss-heart"></span> Like <span class="side-count">3</span> </a> </div> </div> <a id="software-comment-button" class="button radius comment-button" href="/software/plasticpunk#updates"> <span class="ss-icon ss-quote"></span> Comment <span class="side-count">2</span> </a> </div> </div> </header> <nav id="software-nav"> <div class="row"> <div class="large-12 columns"> <ul class="left no-bullet"> <li> <h4> <a class="active" href="/software/plasticpunk">Story</a> </h4> </li> <li> <h4> <a href="/software/plasticpunk#updates">Updates</a> </h4> </li> </ul> </div> </div> </nav> <article id="app-details" class="content-section"> <div class="row"> <div class="large-9 columns" id="app-details-left"> <div id="gallery"> <ul data-slick="true"> <li> <div class="flex-video "> <iframe type="text/html" width="660" height="371" src="https://www.youtube.com/embed/Lx88nO7C9S4?enablejsapi=1&amp;hl=en_US&amp;rel=0&amp;start=&amp;version=3&amp;wmode=transparent" allowfullscreen="allowfullscreen" frameborder="0" allowscriptaccess="always" webkitAllowFullScreen="true" wmode="transparent" mode="transparent" class="video-embed"></iframe> </div> </li> <li class="text-center"> <a data-lightbox="2811046" data-title="PlasticPunk - get rid of that plastic" href="https://d112y698adiu2z.cloudfront.net/photos/production/software_photos/002/811/046/datas/original.png"> <img alt="PlasticPunk – screenshot 1" class="software_photo_image image-replacement" onerror="this.onerror=null;this.src=&#39;https://d2dmyh35ffsxbl.cloudfront.net/assets/defaults/thumbnail-placeholder-8c916ef4da99a222ce6ece077c71c7e282f071f830747b2abb5718018cbfa699.gif&#39;;" src="//d112y698adiu2z.cloudfront.net/photos/production/software_photos/002/811/046/datas/gallery.jpg" /> </a> <span class="expand-tag"><i class="fas fa-expand"></i></span> <p> <i>PlasticPunk - get rid of that plastic</i> </p> </li> <li class="text-center"> <a data-lightbox="2811047" data-title="Build your community" href="https://d112y698adiu2z.cloudfront.net/photos/production/software_photos/002/811/047/datas/original.png"> <img alt="PlasticPunk – screenshot 2" class="software_photo_image image-replacement" onerror="this.onerror=null;this.src=&#39;https://d2dmyh35ffsxbl.cloudfront.net/assets/defaults/thumbnail-placeholder-8c916ef4da99a222ce6ece077c71c7e282f071f830747b2abb5718018cbfa699.gif&#39;;" src="//d112y698adiu2z.cloudfront.net/photos/production/software_photos/002/811/047/datas/gallery.jpg" /> </a> <span class="expand-tag"><i class="fas fa-expand"></i></span> <p> <i>Build your community</i> </p> </li> <li class="text-center"> <a data-lightbox="2811051" data-title="Change minds" href="https://d112y698adiu2z.cloudfront.net/photos/production/software_photos/002/811/051/datas/original.png"> <img alt="PlasticPunk – screenshot 3" class="software_photo_image image-replacement" onerror="this.onerror=null;this.src=&#39;https://d2dmyh35ffsxbl.cloudfront.net/assets/defaults/thumbnail-placeholder-8c916ef4da99a222ce6ece077c71c7e282f071f830747b2abb5718018cbfa699.gif&#39;;" src="//d112y698adiu2z.cloudfront.net/photos/production/software_photos/002/811/051/datas/gallery.jpg" /> </a> <span class="expand-tag"><i class="fas fa-expand"></i></span> <p> <i>Change minds</i> </p> </li> </ul> </div> <div> <h2>Inspiration</h2> <p>Our project was directly inspired by the critical challenge of environmental sustainability—an area of immense concern for us. Recognising the urgent need to address plastic pollution, we were motivated to merge our passion for environmental preservation with innovative gaming. Our game, PlasticPunk, emerges from this commitment, offering a platform to educate and inspire action through engaging gameplay.</p> <h2>What it does</h2> <p>PlasticPunk reinvents the civilization-building game genre, focusing on sustainability and non-violence. We deliberately avoided adding violence in the game since the theme is quite serious and hopefully educational. Our game integrates educational resources, linking players to scientific research and policy discussions on plastic pollution and ecological sustainability. Players begin by establishing a settlement and are quickly engaged in efforts to manage and recycle plastic waste. These efforts not only clean the environment but also supply materials for developing essential infrastructure. The game progresses by expanding facilities, enhancing clean-up capabilities, and employing diplomacy to encourage others to join the cause. Victory is achieved by completely eliminating pollution and converting all entities to sustainable practices.</p> <h2>How we built it</h2> <p>We developed PlasticPunk using the Flame engine, leveraging Tiled for crafting a detailed isometric map to enrich our game world. The visual assets, initially generated by ChatGPT, underwent significant refinement to meet our vision, emphasizing the importance of detailed and thematic game graphics. Game logic is simple and each object on the map runs its own logic circuit that gets updated every time the game loop is updated.</p> <h2>Challenges we ran into</h2> <p>The primary challenge for us was the creation of numerous detailed game assets, a foundational element for the immersive experience we aimed to deliver. Establishing the game logic was an iterative process, but it set a strong foundation for expanding game features.</p> <h2>Accomplishments that we're proud of</h2> <p>The fact that the game actually works and runs as we intended it to is amazing. We are proud of bringing PlasticPunk to life—creating a fully functional game that educates players on environmental issues while entertaining them. Game logic is robust and can be tuned further to make the game more involving and replayable.</p> <h2>What we learned</h2> <p>This project underscored for us the essential role of skilled artistry in game development. If you want to build games you need a great artist. The visual appeal and clarity of game assets are critical in engaging players and enhancing the overall gaming experience.</p> <h2>What's next for PlasticPunk</h2> <p>Our hope for PlasticPunk is to evolve it into a comprehensive, dare we say, educational tool with additional levels, improved assets, and deeper, more engaging gameplay. We aim to create a scalable model that can be adapted for various educational and environmental advocacy purposes.</p> </div> <div id="built-with" class=""> <h2>Built With</h2> <ul class="no-bullet inline-list"><li><span class="cp-tag">chatgpt</span></li><li><span class="cp-tag">flame</span></li><li><span class="cp-tag recognized-tag"><a href="https://devpost.com/software/built-with/flutter">flutter</a></span></li></ul> </div> <nav class="app-links section"> <h2>Try it out</h2> <ul data-role="software-urls" class="no-bullet"> <li><a target="_blank" title="https://plasticpunk-e6622.web.app" rel="nofollow" href="https://plasticpunk-e6622.web.app"> <i class="ss-icon ss-link"></i> <span>plasticpunk-e6622.web.app</span> </a></li> <li><a target="_blank" title="https://github.com/lgjenero/plastic-punk.git" rel="nofollow" href="https://github.com/lgjenero/plastic-punk.git"> <i class="ss-icon ss-link"></i> <span>github.com</span> </a></li> </ul> </nav> </div> <aside class="large-3 columns" id="app-details-right"> <div id="submissions" class="section"> <h4 class="clearfix"> Submitted to </h4> <ul class="software-list-with-thumbnail"> <li> <figure class="software-list-thumbnail challenge_avatar"> <a href="https://globalgamers.devpost.com/"><img alt="image" class="thumbnail_image image-replacement" onerror="this.onerror=null;this.src=&#39;https://d2dmyh35ffsxbl.cloudfront.net/assets/defaults/no-avatar-100-b164b29ca37cbce6b6dbcf4d61d40ba7a3081dfd121a32e2a773eb8f018f0a1f.png&#39;;" src="//d112y698adiu2z.cloudfront.net/photos/production/challenge_thumbnails/002/692/258/datas/medium.png" /></a> </figure> <div class="software-list-content"> <p> <a href="https://globalgamers.devpost.com/">Global Gamers Challenge</a> </p> <ul class="no-bullet"> <li> <span class="winner label radius small all-caps">Winner</span> Finalist </li> </ul> </div> </li> </ul> </div> <section id="app-team"> <h4 class="clearfix"> Created by </h4> <ul class="no-bullet"> <li class="software-team-member" itemprop="member"> <div class="row"> <div class="small-2 large-4 columns"> <figure> <a class="user-profile-link" href="https://devpost.com/lgjenero"><img alt="Luko Gjenero" class="software-member-photo user-photo photo_image image-replacement" title="Luko Gjenero" onerror="this.onerror=null;this.src=&#39;https://d2dmyh35ffsxbl.cloudfront.net/assets/defaults/no-avatar-100-b164b29ca37cbce6b6dbcf4d61d40ba7a3081dfd121a32e2a773eb8f018f0a1f.png&#39;;" src="//d112y698adiu2z.cloudfront.net/photos/production/user_photos/002/858/928/datas/profile.png" /></a> </figure> </div> <div class="small-10 large-8 columns"> <a class="user-profile-link" href="https://devpost.com/lgjenero">Luko Gjenero</a> <span class="follow-button-wrapper" data-context="software-detail" data-layout="condensed" data-follow-through-id="3892118"></span> <br> <small></small> </div> </div> </li> <li class="software-team-member" itemprop="member"> <div class="row"> <div class="small-2 large-4 columns"> <figure> <a class="user-profile-link" href="https://devpost.com/ivancica2185"><img alt="Ivančica Zečević" class="software-member-photo user-photo photo_image image-replacement" title="Ivančica Zečević" onerror="this.onerror=null;this.src=&#39;https://d2dmyh35ffsxbl.cloudfront.net/assets/defaults/no-avatar-100-b164b29ca37cbce6b6dbcf4d61d40ba7a3081dfd121a32e2a773eb8f018f0a1f.png&#39;;" src="//d112y698adiu2z.cloudfront.net/photos/production/user_photos/002/858/931/datas/profile.png" /></a> </figure> </div> <div class="small-10 large-8 columns"> <a class="user-profile-link" href="https://devpost.com/ivancica2185">Ivančica Zečević</a> <span class="follow-button-wrapper" data-context="software-detail" data-layout="condensed" data-follow-through-id="3892139"></span> <br> <small></small> </div> </div> </li> </ul> </section> </aside> </div> </article> <section id="share-and-like"> <div class="row"> <div class="small-12 columns"> <div class="clearfix"> <div class="left"> <div class="software-likes"> <div data-like="base"> <a class="like-button button radius secondary" href="https://secure.devpost.com/users/register?flow%5Bdata%5D%5Bsoftware_id%5D=606213&amp;flow%5Bname%5D=like_software&amp;return_to=https%3A%2F%2Fdevpost.com%2Fsoftware%2Fplasticpunk"> <span class="ss-icon ss-heart"></span> Like <span class="side-count">3</span> </a> </div> <span class="like-counts"> 3 people like this: </span> <ul class="like-users inline-list"> <li> <a class="user-profile-link" href="https://devpost.com/babatundeomodolapo"><img alt="Omodolapo Babatunde" class="user-photo has-tip user-photo photo_image image-replacement" title="Omodolapo Babatunde" data-tooltip="70178276612080" onerror="this.onerror=null;this.src=&#39;https://d2dmyh35ffsxbl.cloudfront.net/assets/defaults/no-avatar-100-b164b29ca37cbce6b6dbcf4d61d40ba7a3081dfd121a32e2a773eb8f018f0a1f.png&#39;;" src="//d112y698adiu2z.cloudfront.net/photos/production/user_photos/003/093/855/datas/medium.jpeg" /></a> </li> <li> <a class="user-profile-link" href="https://devpost.com/roman-rom"><img alt="Roman Romanchuk" class="user-photo has-tip user-photo facebook_avatar_image image-replacement" title="Roman Romanchuk" data-tooltip="70178276611800" onerror="this.onerror=null;this.src=&#39;https://d2dmyh35ffsxbl.cloudfront.net/assets/defaults/no-avatar-100-b164b29ca37cbce6b6dbcf4d61d40ba7a3081dfd121a32e2a773eb8f018f0a1f.png&#39;;" src="https://lh3.googleusercontent.com/a-/AOh14GiECxoG1oGOmSk9imdNF3B0S83LOWs9ih_O9aIC=s96-c?type=square" /></a> </li> <li> <a class="user-profile-link" href="https://devpost.com/awaik"><img alt="Alex Awaik" class="user-photo has-tip user-photo facebook_avatar_image image-replacement" title="Alex Awaik" data-tooltip="70178276611500" onerror="this.onerror=null;this.src=&#39;https://d2dmyh35ffsxbl.cloudfront.net/assets/defaults/no-avatar-100-b164b29ca37cbce6b6dbcf4d61d40ba7a3081dfd121a32e2a773eb8f018f0a1f.png&#39;;" src="https://avatars.githubusercontent.com/u/5330807?type=square&amp;v=4" /></a> </li> </ul> </div> </div> <div class="right hide-for-small"> <div id="software-share" class="hide" data-add-this-buttons="true"> Share this project: <ul class="h-nav clearfix inline-list" id="social-links"> <li id="promote-twitter"> <div class="social-icon"> <div class="addthis_32x32_style addthis_toolbox addthis_default_style" addthis:url="https://devpost.com/software/plasticpunk?utm_campaign=portfolio-share&amp;utm_medium=twitter&amp;utm_source=cp" addthis:title="Check out PlasticPunk" addthis:description="https://devpost.com/software/plasticpunk"> <a class="addthis_button_twitter" tw:count="false" tw:counturl="https://devpost.com/software/plasticpunk" tw:url="https://devpost.com/software/plasticpunk?utm_campaign=portfolio-share&amp;utm_medium=twitter&amp;utm_source=cp" tw:via="Devpost" tw:text="Check out PlasticPunk"> </a> </div> </div> </li> <li id="promote-fb-li"> <div class="social-icon"> <div class="addthis_32x32_style addthis_toolbox addthis_default_style" addthis:url="https://devpost.com/software/plasticpunk" addthis:title="PlasticPunk" addthis:description=""> <div class="custom_images"> <a class="addthis_button_facebook" fb:like:show_faces="false"> </a> </div> </div> </div> </li> <li id="promote-reddit-li"> <div class="social-icon"> <a class="addthis_32x32_style addthis_button_reddit" addthis:url="https://devpost.com/software/plasticpunk?utm_campaign=portfolio-share&amp;utm_medium=reddit&amp;utm_source=cp" addthis:title="PlasticPunk" ></a> </div> </li> </ul> </div> </div> </div> </div> </div> </section> <article class="content-section"> <div class="row"> <div class="large-12 columns software-updates"> <h2 id="updates">Updates</h2> <article class="content-section software-update with-sidebar" data-commentable-id="424779"> <div class="row"> <div class="large-8 small-12 columns"> <div data-region="actions"></div> <div class="media"> <div class="media-left"> <a class="update-user-avatar user-profile-link" href="https://devpost.com/lgjenero"><img alt="Luko Gjenero" class="user-avatar user-photo photo_image image-replacement" title="Luko Gjenero" onerror="this.onerror=null;this.src=&#39;https://d2dmyh35ffsxbl.cloudfront.net/assets/defaults/no-avatar-100-b164b29ca37cbce6b6dbcf4d61d40ba7a3081dfd121a32e2a773eb8f018f0a1f.png&#39;;" src="//d112y698adiu2z.cloudfront.net/photos/production/user_photos/002/858/928/datas/profile.png" /></a> </div> <div class="media-content"> <p class="author small"> <a class="user-profile-link" href="https://devpost.com/lgjenero">Luko Gjenero</a> started this project <span class="light-text"> &mdash; <a class="timestamp light-text" href="/software/plasticpunk/updates/424779"> <time class="timeago" datetime="2024-03-12T17:44:58-04:00"> Mar 12, 2024 05:44 PM EDT </time> </a> </span> </p> <p><i>Leave feedback in the comments!</i></p> <section class="software-update-comments" data-layout="comments"> <div data-region="load-more"></div> <div data-region="comments"></div> <p class="join-the-conversation"> <strong><a href="https://secure.devpost.com/users/login">Log in</a></strong> or <strong><a href="https://secure.devpost.com/users/register?flow%5Bdata%5D%5Bcommentable_id%5D=424779&amp;flow%5Bname%5D=comment_on_software_update&amp;return_to=https%3A%2F%2Fdevpost.com%2Fsoftware%2Fplasticpunk">sign up for Devpost</a></strong> to join the conversation. </p> </section> </div> </div> </div> <div class="columns"></div> </div> </article> </div> </div> </article> </section> <footer id="devpost-footer"> <div class="row body"> <div class="small-6 large-3 columns with-bottom-margin"> <nav> <h4>Devpost</h4> <ul> <li><a href="https://info.devpost.com/about">About</a></li> <li><a href="https://info.devpost.com/careers">Careers</a></li> <li><a href="https://info.devpost.com/contact">Contact</a></li> <li><a href="https://help.devpost.com/">Help</a></li> </ul> </nav> </div> <div class="small-6 large-3 columns with-bottom-margin"> <nav> <h4>Hackathons</h4> <ul> <li><a href="https://devpost.com/hackathons">Browse hackathons</a></li> <li><a href="https://devpost.com/software">Explore projects</a></li> <li><a href="https://info.devpost.com">Host a hackathon</a></li> <li><a href="https://info.devpost.com/guides">Hackathon guides</a></li> </ul> </nav> </div> <div class="small-6 large-3 columns"> <nav> <h4>Portfolio</h4> <ul> <li><a href="https://devpost.com/portfolio/redirect?page=projects">Your projects</a></li> <li><a href="https://devpost.com/portfolio/redirect?page=hackathons">Your hackathons</a></li> <li><a href="https://devpost.com/settings">Settings</a></li> </ul> </nav> </div> <div class="small-6 large-3 columns"> <nav> <h4>Connect</h4> <ul class="social-links"> <li> <a href="https://twitter.com/devpost"> <div class="icon"> <i class="fab fa-twitter"></i> </div> <span> Twitter </span> </a> </li> <li> <a href="https://discord.com/invite/HP4BhW3hnp"> <div class="icon"> <i class="fab fa-discord"></i> </div> <span> Discord </span> </a> </li> <li> <a href="https://www.facebook.com/devposthacks" target="_blank"> <div class="icon"> <i class="fab fa-facebook-f"></i> </div> <span> Facebook </span> </a> </li> <li> <a href="https://www.linkedin.com/company/devpost/" target="_blank"> <div class="icon"> <i class="fab fa-linkedin-in"></i> </div> <span> LinkedIn </span> </a> </li> </ul> </nav> </div> </div> <div class="legal-bar-container"> <nav class="row"> <div class="columns"> <div class="legal-bar"> <div class="copyright-notice">&#169; 2025 Devpost, Inc. All rights reserved.</div> <ul> <li><a href="https://info.devpost.com/legal/community-guidelines">Community guidelines</a></li> <li><a href="https://info.devpost.com/legal/security">Security</a></li> <li><a href="https://info.devpost.com/legal/california-consumer-privacy-act">CA notice</a></li> <li><a href="https://info.devpost.com/legal/privacy-policy">Privacy policy</a></li> <li><a href="https://info.devpost.com/legal/terms-of-service">Terms of service</a> </ul> </div> </div> </nav> </div> </footer> <script src="https://d2dmyh35ffsxbl.cloudfront.net/assets/platform-880b32e6224574219a6262682bf30232e6d3cf413fbad0b34ef1dc688bcd0e81.js"></script> <script src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2-98b0f0901310b2f498690f2ce84296694fa08ed5e35c0906d5e2e23b6e9af6d3.js"></script> <script src="https://d2dmyh35ffsxbl.cloudfront.net/assets/home/home_application-0dbf2c6bbe8e88a45ae9fcc471fb499fc7a3e7b01f2f9a530e92566522736d96.js"></script> <script type="text/javascript" charset="utf-8"> (function() { mixpanel.identify("357721029e055659109c591b16d5927260d5b64d557e8a1486b462ea3e6482d189f9179a39bb4da58ce06173f915487e12e5"); mixpanel.register({}); })(); </script> <script src="https://d2dmyh35ffsxbl.cloudfront.net/assets/slick-be61a9e761cc4aeb92940d6e5e9745b77acadbdaedada42659083117c28c4d00.js"></script> <script type="text/javascript"> (function (d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "https://connect.facebook.net/en_US/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); </script> <script type="text/javascript"> (function (d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "https://connect.facebook.net/en_US/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); var addthis_config = { data_ga_property: "UA-2233558-21", ui_508_compliant: true, ui_use_addressbook: true, ui_email_note: "I thought you might be interested in PlasticPunk - PlasticPunk is a captivating civilisation builder set in near-future where plastic pollution reached critical levels. Transform a dystopian society overwhelmed by waste into a sustainable paradise. It was built with flutter, flame, and chatgpt.", ui_email_from: "" }; var addthis_share = { url_transforms: { shorten: { twitter: 'bitly' } }, shorteners: { bitly: {} }, email_template: "software_share_template", email_vars: { Title: "PlasticPunk", Subject: "Check out this project on Devpost", HomepageLink: "https://devpost.com/?utm_campaign=friends_share&utm_medium=email" }, passthrough : { twitter: { via: "Devpost", text: "Check out PlasticPunk" }, facebook: { app_id: 115745995110194, redirect_uri: "https://devpost.com/software/plasticpunk" } } }; var DEVPOST_ADDTHIS = { show: function() { $('[data-add-this-buttons]').each(function() {$(this).removeClass("hide")}); }, hide: function() { $('[data-add-this-buttons]').each(function() {$(this).addClass("hide")}); } } </script> <script type="text/javascript" charset="utf-8"> CP.env.addRoutes({ follows_url: "https://devpost.com/follows", search_softwares_url: "https://devpost.com/software/search", new_software_url: "https://devpost.com/software/new", search_hackathons_url: "https://devpost.com/api/hackathons", notifications_url: "https://devpost.com/notifications", api: { users_url: "https://api.devpost.com/users" } }) new Reimagine2(); $(function onDocumentReady() { CP.Home.SoftwareCommentButton.setup(); new CP.ChallengeStateInfoTzConverter( '#app-details', '[data-date-info-tag]', '[data-dates-text]', '' ).convert("Edit up to the submission deadline: "); new CP.GifPlayer CP.Carousel.setup() new CP.Home.EditableContribution('[data-contribution="editable-contribution"]') new CP.Home.LikesModal() CP.Historic.setup(".software-updates"); ventChannel().trigger("updates:list", "plasticpunk"); CP.LinkCollectionTracker.setup(".recognized-tag a", "#app-details-right").track( "Tag Gallery", { "Tag displayed on": "software details page"} ); new CP.Home.SoftwareLinks("[data-role=software-urls]").enhance(); CP.Home.DismissableMessage.setup("[data-alert]"); CP.ChallengeStateInfoTimeago.setup('#submissions, #draft-submissions'); CP.SendFormOnCommandEnter.setup($("#masqueradee")); (function(inputs) { if (typeof inputs.cp_autocomplete === "function") inputs.cp_autocomplete(); inputs.on('click', function(event) { return false; }); })($("#masqueradee")); var FollowButtonApp = new CP.FollowButtonApp({ user: { screen_name: "", follow_through_id: 0 }, urls: { register_url: "https://secure.devpost.com/users/register", user_follows_url: "https://devpost.com//follows", follow_through_url: "https://devpost.com/software_members/follows", follow_request_url: "https://devpost.com/follow_requests" }, follow_through_scope: "software_member" }); FollowButtonApp.start(); var appOptions = {}; CP.Mn.app.start(appOptions); }); </script> <!--[if lt IE 9 ]> <script type="text/javascript"> $(function onDocumentReady() { CP.IE.Notifications.setup(); }); </script> <![endif]--> <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "WebSite", "url": "https://devpost.com/", "potentialAction": { "@type": "SearchAction", "target": "https://devpost.com/software/search?query={query}", "query-input": "name=query" } } </script> </body></html>

Pages: 1 2 3 4 5 6 7 8 9 10