无法忍受 Kodi 自带游戏 UI,我做了一个游戏展示插件 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
yunnysunny
V2EX    分享创造

无法忍受 Kodi 自带游戏 UI,我做了一个游戏展示插件

  •  
  •   yunnysunny 18 天前 1812 次点击

    我有一个 N1 盒子用来投屏使用,偶尔也切换一下进入 U 盘中的 emuelec 游戏系统,玩玩游戏。有一天,估计是天气太热了,N1 突然黑屏了,然后重启再进入后发现外接 U 盘无法使用了。后来发现如果我将其中一个 U 口通过 A2A 的 USB 线接到充电头上,另外一个口接 U 盘,还是能从 U 盘中启动的。

    不过最近我发现,即使使用 A2A 线加电,也不能正常启动 U 盘了,于是我从网上又下载了一个 coreelec+android tv 的双系统 rom ,心想 coreelec 也能支持游戏,可以弥补不能使用 U 盘启动游戏系统的遗憾。

    等用上 coreelec 才发现,这货的游戏功能也太简陋了:

    game-list.png

    那些以游戏名字命名的文件还要,而有些街机游戏的 ROM 文件名都是用的缩写,比如说 kof.zip ,一两个你还能背得下来,多了肯定就分不清了。

    心想着,不就是给游戏添加个说明信息嘛,为啥 kodi 不增加个这么简单的功能呢?我看这个功能很简单,要不我就自己做一个吧。

    说干就干,我搜了一下 kodi 的插件开发必须用 python ,虽然我之前从来没有写过 python 的项目,但脚本语言差别应该不大。然后我就去查开发文档,不得不吐槽一下,kodi 的文档也做的很简陋,它提供很多 wiki 页面都是孤立链接,没法从文档左侧的目录树中找到,能不能被浏览到完全看机缘。

    调研初期,本来我以为可以做一个游戏类型的插件就 OK 了,结果发现他们压根没有提供游戏类插件这个概念,为了实现想要的 UI 渲染效果,我只能将插件类型设置成视频。然后在点击指定 ROM 文件的时候,再告诉 kodi 以游戏模式打开。虽然曲线救国了些,不过最终还是耗费了一个周末做出来了。

    最终展示的效果图:

    list.png

    如果对当前布局不满意,你可以通过左下角的选项按钮来切换布局。

    最后给一下项目的开源地址: https://github.com/yunnysunny/game-visuals

    第 1 条附言    11 天前

    更新内容 0.3.0

    1. 增加了rom图标和简介的显示。
    2. 可以支持添加多个 rom 源路径。
    5 条回复    2025-09-23 13:35:17 +08:00
    leeyuzhe
        1
    leeyuzhe  
       18 天前   1
    请问这种游戏怎么玩?用电视遥控器玩么?
    Leon6868
        2
    Leon6868  
       18 天前
    居然才一个周末,真的牛逼
    wuzhewuyou
        3
    wuzhewuyou  
       17 天前
    @leeyuzhe 手柄吧
    KillerMoon193
        4
    KillerMoon193  
       17 天前
    yunnysunny
        5
    yunnysunny  
    OP
       17 天前
    @leeyuzhe 电视遥控器没法玩,我测试过,可以接 2.4G 的游戏手柄玩。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     925 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 22:16 PVG 06:16 LAX 15:16 JFK 18:16
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86