小學生語言編程游戲大全,小學編程學什么?
小學編程主要學以下幾種語言:
一、Scratch
Scratch是由麻省理工學院開發的免費兒童編程語言,輔以入門教程,給家長的課程指導和強大的用戶社區。沒有電腦的情況下,您還可以使用下載好的卡片來學習Scratch編程。因為Scratch是免費的并且制作很精良,所以它是兒童友好編程的第一個建議,并且Scratch也在影響著其他兒童友好編程語言。Scratch還可以用來制作動畫和游戲,可以使用Scratch自帶的圖像和角色,或上傳自己的。Scratch可以離線使用,當然,孩子們也可以選擇在Scratch的社區在線分享他們的作品。
二、Blockly
Blockly是谷歌對Scratch的改進,使用了相同的互鏈模塊概念,但它可以用幾種不同的編程語言輸出代碼。目前包括Javas,Python,PHP,Lua和Dart。這使得Blockly不僅僅是一種兒童友好編程語言,而是一個可視化編輯器。Blockly并沒有像Scratch那樣完全開發出來,與Scratch相比沒有那么多可用的教程。盡管如此,Blockly對于所有年齡段的程序員都是一個強大的編程環境。
三、Twine
Twine是一個免費的非線性故事講述應用程序,供所有年齡段的用戶使用,包括大量成人和教育工作者。使用Twine不需要學習任何代碼,因為它并不教用戶如何編碼,而是教他們如何構建和呈現非線性游戲和故事。如果你的孩子對制作游戲和講故事更感興趣,對編程的技術細節感到非常枯燥的話,可以來嘗試Twine。你可以通過應用程序在線創建故事,也可以下載應用程序進行離線編輯。
初中畢業可以學習游戲開發這個課程嗎?
可以的
如何快速開發一個小游戲?
如何快速開發一款火爆的小游戲?“火爆”是一個偏運營的詞,在小游戲上線120天《微信開發者》公眾號有一篇推文,其中有幾個數字或許可以用來描述“火爆”這個詞。截止微信小游戲正式允許第三方開發者發布已有22天,對外發布的小游戲達300多款,注冊用戶總規模過億的游戲有數款,安卓月流水過千萬的也有數款。
該文還提到與火爆相關的兩個姿勢。一是社交匹配度,在小游戲這樣一個去中心化的大背景下,讓游戲內容和微信社交相結合是一個很重要的點,同時開發者也需要在利用社交互動提升用戶體驗和群聊分享造成用戶騷擾之間選擇一個平衡點,過猶不及。第二是操作簡便度,說的是游戲易上手操作簡單。這是我們根據游戲成為爆款后觀察得出的結論,并不是說具備這兩個特性就一定能開發出一款火爆的游戲,并且新的爆款游戲也不一定符合這些特點,僅供參考。
今天介紹的內容更傾向于技術方面,所以“火爆”就從標題里面去掉了,并且也不會介紹具體的游戲邏輯如何開發,而是更偏向于如何利用好微信的開放能力開發一款小游戲。
什么是“小游戲”?小游戲是什么?
首先為大家介紹一下小游戲是什么。從普通用戶的視角看,小游戲是小程序的一個子類目,可在微信內被便捷的獲取和傳播,即點即玩,具備出色的用戶體驗。小游戲是小程序,普通用戶分不清也無需分清。
小游戲Runtime
如果放大小游戲的Runtime可以看到很多的細節,這是一個典型的分層架構:
最上層藍色部分,是游戲代碼,分為游戲邏輯,游戲引擎、weapp-adapter三部分。大部分游戲開發會用到一些引擎的工具、工作流,以及利用引擎封裝的高層API去實現游戲邏輯。其次是weapp-adapter,因為小游戲的底層一方面不是webview,可以簡單看成是webview經過精簡、優化過后的平臺;另一方面核心能力的實現上卻參考了webview。所以這里如果有一個適配器,把小游戲的底層API——wx API適配到一個接近webview的接口,對上層引擎、已存在的游戲接入微信小游戲平臺則會更加容易,這個就是weapp-adapter的作用。其中只有游戲邏輯是必要的。
可以看到,在架構上小游戲和小程序是有差別的,小游戲沒有頁面概念的,wxss/wxml不再存在。其次,底層實現也不是webview,小游戲和webview的關系只能說是渲染相關的核心能力可以通過weapp-adapter的簡單適配保持接口一致,但同時很多webview上存在的功能并沒有對等的實現,比如小游戲就沒有DOM/BOM的概念,也沒有全局的document/window對象。
小游戲的入口為game js文件,語言為Javascript,但有一些限制,比如禁止執行動態代碼,因此eval、new Function等能力是不支持的。配置為game.json,可以配置橫豎屏、接口超時等參數。js里面可以組合wx API的能力來實現游戲邏輯, 非代碼類的資源應該盡量放到cdn,減少整個代碼包打包后的大小,以加快用戶首次進入時的速度,微信對首包的大小目前限制為4MB。
Webview Adapter
下面來說一下Webview Adapter,它的初衷是為了讓游戲開發者更好地熟悉我們的平臺,所以我們的平臺在能力上會盡可能地與webview做一些適配,其實這個適配也是很簡單的一層。比如說我們在瀏覽器里面使用image對象創建一個圖片,而在小游戲里是通過wx.createimage來創建的,在代碼中需要做一個簡單的適配。
以此類推,常見的Canvas、document對象都是在Adapter中通過一個簡單的適配實現的,大家可以研究鏈接中的代碼。之后官方不會繼續維護這個Adapter,我們會更專注于底層能力的建設。
小游戲能力概覽
下圖是小游戲能力的概覽,小游戲能力的迭代比較快,部分能力還沒有來得及羅列出來。比如最近剛發布的游戲圈、健康系統防沉迷相關的一些接口。
我們先看一下基礎能力,在渲染這部分WebGL1.0和Canvas 2D都是支持的,這里的Canvas更接近于瀏覽器里面的標準。同時,這里提到的可控幀率的概念,如果小游戲在后臺運行的話,可以盡量將幀率降低。
在多媒體部分,小游戲還不能像小程序一樣實現實時的音頻視頻流,這是我們在后續要進一步支持的。網絡IO的部分與小程序也是類似的,我們也提供了一些UI的組件,比如說拉起鍵盤,模態對話框等。
小游戲的社交開放能力現在已經對外了。其中最重要的一個能力是在開放域將微信的好友關系開放出去,給開發者使用,考慮到對用戶隱私的保護會有一些設計上的限制。
因為小游戲去中心化的特點,分享這一部分也是非常重要的,開發者要考慮如何將這個能力利用起來。在代碼方面,因為首包限制是4MB,但部分小游戲的代碼量可能比較大。我們最近也在規劃一個分包的能力,允許異步加載代碼并執行,但這個代碼是一定要經過我們審核的。
如何開發一款小游戲?
那么如何開發一款小游戲?因為我本人也只是開發過一些簡單的游戲,并不是專業進行游戲開發,所以接下來我會更多地介紹一下如何利用微信的能力來開發小游戲。
選擇小游戲引擎
微信跟引擎商也有比較密切的合作,一般現在的游戲引擎都會支持發布到多個平臺,對微信小游戲這個新平臺而言,已經有一部分引擎做了適配,比如Cocos Creator、Egret Engine以及LayAir Engine。適配的主要工作,類似之前提到的weapp-adapter,把wx API的能力,和引擎銜接起來。
比如引擎一般會把小游戲平臺和webview平臺對標,適配過程就是把wx API對應到webview的能力,同時把只存在于webview能力的依賴去除,比如不再依賴BOM、DOM。已適配的引擎都有相應的文章介紹如何把游戲發布到微信小游戲平臺。
設備/環境適配
小游戲會有API提供獲取屏幕的寬高、設備像素比等能力。小游戲開發完成后,在開發者工具也可以發起真機測試的請求,微信提供了不同設備的測試集群,幫助開發者提前去發現問題。基礎庫提供的wx API本身是一個不斷迭代更新的過程,對于使用了新能力的小游戲,需要做低版本兼容。
微信登錄
小游戲的登錄過程,跟小程序是類似的。需要用戶自己去定義登錄狀態。appsecret/session_key代表的是小游戲開發者和微信平臺之間的一種信任約定,比如支付、上報托管數據,平臺方需要驗證access_token(只有appsecret才能換得到),和用戶相關的還要驗證session_key的簽名,才能保證請求來自于小游戲開發者/用戶,而不是惡意的第三方和隨意捏造的用戶。
access_token是一種應用態的access_token,和用戶無關,需要保證全局維護一份,應該有一個中控的模塊去保證access_token有效,同時在有效期內直接使用本地cache的access_token,而不是每次使用都去生成新的access_token,否則可能遇到調用頻率限制的錯誤而影響服務。切記appsecret/session_key不要放到前端代碼中去,否則可能會被壞人利用損壞小游戲開發者/用戶的權益。
緩存
緩存類型包括數據緩存和文件緩存兩類。數據緩存即key-value存儲,適合結構化類型的小數據存儲,上限為10MB。文件緩存提供了一個完整的文件系統API,包括目錄/文件的增刪改讀,適合針對經常使用的網絡資源做本地緩存,上限是50MB。
和瀏覽器不同的是,微信只提供了基本的存儲管理能力,并不對存儲什么,和存儲滿時刪除什么做一些操作。開發者自行靈活定義緩存以及淘汰策略,比如對經常訪問的資源存儲到文件系統以及在文件存儲滿時,清理一些最近不常訪問的文件。
開放數據域
開放數據域是一個封閉、獨立的 JavaScript 作用域,和執行游戲邏輯的環境——稱為“主域”隔離。其目的是在保證用戶隱私的前提下開放用戶數據給第三方,提升小游戲的整體用戶體驗。以下為物理視圖,主域的入口為game.js,開放數據域則是一個獨立的目錄,其入口文件為index.js。
主域和開放數據域的通信受到嚴格的管制,基本原則是只進不“出”。
?只進:允許外部的數據進入開放數據域,即主域可以隨時postMessage到開放域,以及開放域引用主域準備好的本地資源
?不“出”:不允許開放數據域的數據被上傳到第三方服務器去。因為開放數據域里面,index.js是可以直接訪問到用戶敏感數據的,比如同玩好友數據。當然最終開放數據域需要index.js在綜合各種數據后把數據以圖形圖像的方式渲染到sharedCanvas上,在主語sharedCanvas允許draw到主域的上屏Canvas上,最終用戶會在顯示屏上看到game.js畫出來的好友排行榜、群排行榜或好友超越等社交互動信息。
在開發數據域中的數據,開發者沒法把數據拿出去和游戲數據做關聯,所以如果需要在開放域下展示的游戲數據,比如分數,開發者需要將該數據通過上報接口把游戲數據托管到平臺。這樣就可以在開發數據域里面就取到相關數據,其應用場景有好友排行、群排行榜、超越好友提示等。
分享
包括自定義分享和系統菜單分享,可以分享到群聊、單聊。也可以把分享上下文與特定的群關聯,實現一些群PK、群排行榜的場景。分享是一把雙刃劍,需要謹慎使用,一方面避免過度騷擾用戶/群聊,另一方面增強社交互動提供好的游戲體驗,需要找到一個合適的平衡點。
支付
小游戲在安卓下支持虛擬支付,它的方式目前只有一種:即貨幣托管的方式。主要分為2個流程:
1.充值:RMB -> 游戲幣,這里開發者只需要拉起支付的流程,平臺負責把用戶RMB兌換成對應的游戲幣,存儲到用戶對應的游戲帳號上
2.使用游戲幣購買道具:開發者可以扣除對應的游戲幣,給用戶發放游戲內道具,扣除游戲幣的過程需要有一定的事務機制,去保證在網絡異常的情況下交易正常。扣除游戲幣的接口支持根據訂單id去重,意味著網絡超時等情況下,開發者可用同樣的訂單id去重試扣除,直至返回明確的響應。
以下為簡單時序圖,部分角色針對開發者無需關心的部分做了相應簡化處理:
性能
小游戲常見的性能問題,一般是內存造成的。如果內存占用太多會被微信客戶端主動關閉,因此開發者在用戶游戲過程中要及時釋放不再使用的內存(js代碼去除引用,或主動調用對應資源的釋放接口,如果有的話),特別是Canvas和Image類大型對象,同時可以主動調用wx.triggerGC觸發底層回收對應資源。
對于和游戲邏輯相對獨立的工作,可以考慮在worker中去實現,小游戲提供了獨立的worker線程執行js邏輯的能力。
版本更新機制
小游戲啟動的過程分為冷啟動和熱啟動。冷啟動是指內存中無該小游戲的運行實例的情況下,啟動小游戲的過程;熱啟動是指小游戲的運行實例在內存中還存在,只是暫時切換到了后臺,這時用戶再次觸發小游戲回到前臺的過程。
小游戲會在冷啟動時檢查小游戲的版本,如有新版本,在下載回本地后,下一次冷啟動即可使用最新版。當然,我們也提供了API可以供開發者決策在有版本可用時,是否需要強制更新。
運維
特別提醒,小游戲有完善的后端監控,可以通過“運維中心”開啟,比如腳本錯誤監控。腳本錯誤主要由運行過程中未捕獲的異常觸發,需要重點關注。該類異常,可能會導致用戶小游戲前端的js邏輯暫停執行。
同時,平臺也提供了完善的數據分析服務,可以通過“小游戲數據助手”進行數據分析。
以上就是關于小學生語言編程游戲大全和小學編程學什么的相關問題解答,希望對你有所幫助。